Antworten auf deine Fragen:
Neues Thema erstellen

Variablen berechnen mit as3

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

SUPER!!!! Danke.

Jetzt hat er es geschluckt. nur noch ein problem.

Meine Dynamic text felder sind Leer. Kein einziger Wert drinne.

Muß ich die Dynamic felder irgendwie besonders kennzeichnen ?
 

A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

sind "wertStr", "wertdollar" und so weiter Deine dynamischen TxtFelder?

Hast Du in Flash (der fla-datei) die Textfelder als dymisch deklariert und Ihnen den Namen wertStr, wertdollar, etc gegeben?

Wenn Beides ja, eventuell in der AS-Datei nach der Zeile
Code:
protected var statusdays:uint = 1;

Code:
public var wertStr:TextField;

eingeben (und für die anderen TxtFelder auch)

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Nö macht er nicht.
Also ich habe jetzt die neuen variablen in der Documentenklasse eingetragen.

Auf Frame 1 habe ich im Layer dieses script:

Es befindet sich ein button auf diesem frame.
habe ich hier eventuell was übersehen oder falsch eingestellt ?

ne andere frage noch.
ich habe das jetzt so verstanden das ich documentenklassen benutzen kann um verschiedene Werte zu Speichern und zu verwallten. Dieses Script bezieht sich aber nur auf den hauptchar.

Wenn ich jetzt den hauptchar und 2 oder mehr andere Chars hätte und deren Attribute speichern müsste und mache dann functionen wie gegeneionander kämpfen, also wo werte abgezogen und addiert werden kann ich alle Charaktere in die Documentenklasse einfügen oder sollte ich die zusätzlichen chars als Arrays speichern ? Oder wie am besten ? Wie gesagt ich bin noch neuling und lerne noch.

ich weiß wohl das Arrays Bibliotheken von Werten , Scripten und Movies sind aber wie sie jetzt zu benutzen sind weis ich nicht. Jedenfalls nicht mit as3.
******************

stop();

import flash.display.MovieClip;
import flash.events.*;
import ATTRIBUTES;




//-----------------------------------------------------
btnsearchpartner.addEventListener(MouseEvent.MOUSE_DOWN, gotopartners);

//--------------------------------------------------------

function gotopartners(e:MouseEvent):void {
this.gotoAndStop(2);
}
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

also Dokumentenklassen sind der Startpunkt Deiner Flash (später swf)-Datei.
Und alles läuft eigentlich in dieser Klasse ab. Du hast also (fast) gar keinen Code mehr in Deiner fla-Datei.

Arrays speichern eigentlich nur mehrere Sachen. Dass kann dann was auch immer sein. (Texte, Zahlen, ...)

Wenn Du mehre Charaktere hast, kannst Du auch eine eigene Klasse für jeden erstellen. Jeder speichert dann seine eigenen Werte. Deine Dokumentenklasse verwaltete diese dann nur noch.

Zur Verständnisfrage was ist auf Frame 1, 2, 3 und 4?
Erklärst Du noch kurz was in Deinem Game WAS WANN passiert. Du hattest ja schon geschrieben, dass es ein "dating sim Game" ist. Hast Du eine Internetadresse, wo so etwas Ähnliches ist. Nicht das ich Dich in eine Richtung schicke, die am Ende nicht nützlich ist. Das wollen wir ja nicht.

Nebenbei:
import ATTRIBUTES;

Attributes ist die Klasse, stimmts? Mit großschreiben meinte ich nur den ersten Buchstaben. So sieht es schon nach einer Konstante aus.

In den meisten Programmiersprachen:
event -> Variable
MouseEvent -> Klasse
MouseEvent.MOUSE_DOWN -> Konstante der Klasse MouseEvent


MFG ad86
 
Zuletzt bearbeitet von einem Moderator:

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

das prinzip von den Dating games ist immer das selbe. Attributetrainieren und Geld verdienen.

Wenn die Attribute einen bestimmten Wert haben ist man für den weiblichen oder Männlichen partner attraktiv und der NPC fängt ein gespräch an.

Im gespräch kann man die Relationship Punkte steigern.
je nach welchen wert man hat kann man sich unterhallten, Ausgehen oder miteinander Schlafen.

Ich bin noch nicht so weit mit der Siom und möchte ein eigenes Systhem einbauen.

Zum meinem Aufbau:

Frame 1:

Das actionscript das auf den Button zugreift der sich auf diesem frame befindet und auf frame 2 zugreift.

Eingefügt: import Attributes (Dokumentenclass)

frame 2:
Buttons und ein Script für die buttons und so weiter bis frame 4.

Wie gesagt es klappte nicht den Scriptlayer single zu lassen oder die Frames auf 4 zu erhöhen. Er sagte ständig ich würde auf einen unbekannten Wert zugreiffen und ich mußte in jedem frame ein separates Script setzen.

Nun nur noch das problem mit den Dynamic textfeldern. Die werte sind leer. Ansonsten klappt alles.

Hier nochmal das script für die Documentenclass.

-------------------------------------------------

package ATTRIBUTES {

import flash.display.MovieClip;
import flash.events.*;

public class Attributechar extends MovieClip {



protected var statusstrenght:uint = 10;
protected var statusknowledge:uint = 10;
protected var statuscharme:uint = 10;

protected var statushealth:uint = 100;
protected var statusdollar:uint = 100;
protected var statusdays:uint = 1;

public var wertstr:TextField;
public var wertkno:TextField;
public var wertcha:TextField;
public var werthealth:TextField;
public var wertdollar:TextField;
public var wertdays:TextField;


public function Attributechar (){



wertstr.text=String(statusstrenght);
wertkno.text=String(statusknowledge);
wertcha.text=String(statuscharme);
werthealth.text=String(statushealth);
wertdollar.text=String(statusdollar);
wertdays.text=String(statusdays);



btntrainstr.addEventListener(MouseEvent.MOUSE_DOWN, addstr);
btntrainkno.addEventListener(MouseEvent.MOUSE_DOWN, addkno);
btntraincharme.addEventListener(MouseEvent.MOUSE_DOWN, addcharme);
btnsleep.addEventListener(MouseEvent.MOUSE_DOWN, getsleep);
btnwork1.addEventListener(MouseEvent.MOUSE_DOWN, work1);
btnwork2.addEventListener(MouseEvent.MOUSE_DOWN, work2);
btnwork3.addEventListener(MouseEvent.MOUSE_DOWN, work3);
}





protected function addstr(e:MouseEvent):void {
if (statusdollar >= 25) {

statusstrenght += Math.random()*5;
statusstrenght = Math.round(statusstrenght*10)/10;

wertStr.text=String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text=String(statushealth);

}
}





protected function addkno(e:MouseEvent):void {

statusknowledge += Math.random()*5;
statusknowledge = Math.round(statusknowledge*10)/10;
wertkno.text=String(statusknowledge);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text=String(statushealth);

}

protected function addcharme(e:MouseEvent):void {

statuscharme += Math.random()*5;
statuscharme = Math.round(statuscharme*10)/10;
wertcha.text=String(statuscharme);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text=String(statushealth);

}


protected function work1(e:MouseEvent):void {
statusdollar += statusstrenght * 2.5;

wertdollar.text=String(statusdollar);
}

protected function work2(e:MouseEvent):void {
statusdollar += statusknowledge * 5.5;

wertdollar.text=String(statusdollar);
}

protected function work3(e:MouseEvent):void {
statusdollar += statuscharme * 1.5;

wertdollar.text=String(statusdollar);
}

protected function getsleep(e:MouseEvent):void {
statushealth = 100;
werthealth.text = String(statushealth);
statusdays += 1;
wertdays.text=String(statusdays);
}




}
}

-----------------------------------------------------------

Wieso sind die Dynamicfelder leer ? bevor ich sie in die Documentenclass gesetzt habe funktionierten sie.
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

Erstmal Danke für die Infos.

Zweitens zum möglichen Aufbau Deiner Anwendung.

Klasse AttributeChar verwaltete alles und ist die Dokumentenklasse.
Sie verwaltet unter Anderem die Schaltflächen und Charaktere, die eine eigene Klasse sein KÖNNTEN (mit den ganzen Werten, die zu einem Charakter gehören)


Drittens:

Sind Deine Textfelder auf einer Ebene, die von Frame 1 bis 4 gehen (Ohne Schlüsselbilder)?

Ich habe gerade getestet:
Dokumentenklasse:
Code:
package{
	
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.display.SimpleButton;
	
	public class PSDTest extends MovieClip{
		
		public var strength_txt:TextField;
		public var to1_btn:SimpleButton;
		public var to2_btn:SimpleButton;
		public var to3_btn:SimpleButton;
		
		public function PSDTest(){
			this.gotoAndStop(1);
			strength_txt.text="ww";
			to2_btn.addEventListener(MouseEvent.CLICK, goto2Handler);//farme 1
			to3_btn.addEventListener(MouseEvent.CLICK, goto3Handler);//Frame2
			to1_btn.addEventListener(MouseEvent.CLICK, goto1Handler);//frame 3
		}
		
		protected function goto2Handler(e:MouseEvent):void{
			this.gotoAndStop(2);
		}
		protected function goto3Handler(e:MouseEvent):void{
			this.gotoAndStop(3);
		}
		protected function goto1Handler(e:MouseEvent):void{
			this.gotoAndStop(1);
		}
	}
}

In der fla-Datei existieren 3 Frames. strength_txt ist auf allen 3 vertreten auf einer Ebene, die keine Schlüsselbilder besitzt (außer in Frame 1). Zusätzlich existieren noch drei Buttons auf einer zweiten Ebene, die zu den anderen Frames führen.
Und bei mir wird immer "ww" ausgegeben. In der Fla ist kein Sourcecode enthalten.

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Mann.

Er sagt mir jetzt er kann die location der Class nicht finden.

Wie definiere ich das laufwerk und den ordner wo sich das script befindet ?
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

Mann.

Er sagt mir jetzt er kann die location der Class nicht finden.

Wie definiere ich das laufwerk und den ordner wo sich das script befindet ?

1. fla-Datei öffnen /sichtbar machen
2. Eigenschaften (unter Fenster/Eigenschaften erreichbar) sichtbar machen und im Reiter Veröffentlichen/Klasse folgendes eingeben:

Code:
attributes.Attribute
(Dazu gibt es im Ordner, wo die fla-Datei gespeichert ist, einen Unterordner attributes und darin eine Datei namens "Attribute.as")

Im BIld siehst Du dann wie ich es gemacht habe. Ich habe aber keinen Unterordner und einen anderen Klassennamen genutzt.


MFg ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

So. erstmal sorry wegen den unnötigen fragen^^.

ich hatte den angegebenen code nicht 100%ig übernommen weil ich ihn zu schnell überflogen habe. Nun habe ich das Problem das die functions nicht richtig angesprochen werden.

ich habe alle buttons richtig benannt und die Frames die die tabelle beinhallten gehen in einem stück von 1 bis 4.

ich erhallte den 1120 für alle angegebenen werte.
Hier mein kompletter code. Eine frage noch. Wie muß ich die class aufbauen wenn ich neben dem hauptchar noch 2 andere chars haben möchte ?

also class hauptchar
class npc1
class npc2

?????

------------------------------------------------------

package attributes
{

import flash.display.MovieClip;
import flash.events.*;

public class attributes extends MovieClip
{
public var statusstrenght:uint = 10;
public var statusknowledge:uint = 10;
public var statuscharme:uint = 10;

public var statushealth:uint = 100;
public var statusdollar:uint = 100;
public var statusdays:uint = 1;




//----------------------------------------------------

// hier kommt die fehlermeldung. 1120 Zugriff auf undefinierten wert
public function Attribute (){


wertstr.text=String(statusstrenght);
wertkno.text=String(statusknowledge);
wertcha.text=String(statuscharme);
werthealth.text=String(statushealth);
wertdollar.text=String(statusdollar);
wertdays.text=String(statusdays);



btnsearchpartner.addEventListener(MouseEvent.MOUSE_DOWN, gotopartners);
btntrainstr.addEventListener(MouseEvent.MOUSE_DOWN, addstr);
btntrainkno.addEventListener(MouseEvent.MOUSE_DOWN, addkno);
btntraincharme.addEventListener(MouseEvent.MOUSE_DOWN, addcharme);
btnsleep.addEventListener(MouseEvent.MOUSE_DOWN, getsleep);
btnwork1.addEventListener(MouseEvent.MOUSE_DOWN, work1);
btnwork2.addEventListener(MouseEvent.MOUSE_DOWN, work2);
btnwork3.addEventListener(MouseEvent.MOUSE_DOWN, work3);
}




function addstr(e:MouseEvent):void {
if (statusdollar >= 25) {

statusstrenght += Math.random()*5;
statusstrenght = Math.round(statusstrenght*10)/10;

wertStr.text = String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text = String(statushealth);

}
}





function addkno(e:MouseEvent):void {

attribtrain == 1;
statusknowledge += Math.random()*5;
statusknowledge = Math.round(statusknowledge*10)/10;
wertkno.text = String(statusknowledge);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text = String(statushealth);

}

function addcharme(e:MouseEvent):void {

attribtrain == 1;
statuscharme += Math.random()*5;
statuscharme = Math.round(statuscharme*10)/10;
wertcha.text = String(statuscharme);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
statushealth -= 25;
werthealth.text = String(statushealth);

}


function work1(e:MouseEvent):void {
statusdollar += statusstrenght * 2.5;

wertdollar.text = String(statusdollar);
}

function work2(e:MouseEvent):void {
statusdollar += statusknowledge * 5.5;

wertdollar.text=String(statusdollar);
}

function work3(e:MouseEvent):void {
statusdollar += statuscharme * 1.5;

wertdollar.text = String(statusdollar);
}


//----------------------------------------------------


}
}
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

So. erstmal sorry wegen den unnötigen fragen^^.

Kein Problem.

ich hatte den angegebenen code nicht 100%ig übernommen weil ich ihn zu schnell überflogen habe. Nun habe ich das Problem das die functions nicht richtig angesprochen werden.

Hattest Du noch immer nicht ;). Da waren noch einige kleine Fehler drin.

Hier mein kompletter code. Eine frage noch. Wie muß ich die class aufbauen wenn ich neben dem hauptchar noch 2 andere chars haben möchte ?

also class hauptchar
class npc1
class npc2

Du hättest eine Basisklasse (Deine aktuelle Dokumentenklasse), die alle Charaktere verwaltet. Ich gehe dann mal davon aus, dass Du für jeden einzelnen Charakter ein eigenes Aussehen hast?
Dann hättest Du eine Basisklasse Charakter, die alles kann, was alle Deine Charaktere können müssen. Und deine einzelnen Charaktere sind wiederum eigene Klassen, die aber eine Ableitung von Charakter sind.

Wenn es kein spezielles Aussehen für deine Charaktere gibt, ein Beispiel (in der Dokumentenklasse):

var char1:Charakter= new Charakter("Name1", "Basisgehalt");
var char2:Charakter= new Charakter("Name2", "Hohes gehalt");
this.charArray=new Array();//Möglich ist auch ein Vector-Objekt ("new Vector.<Charakter>()")
this.charArray.push(char1);
this.charArray.push(char2);


public class attributes extends MovieClip
{
....
public function Attribute (){

Beides in rot gestellte muss den gleichen Namen haben. Die Datei selbst muss dann auch so heißen, aber mit der Endung .as.
Auf Basis Deines geposteten Scripts, müsste es so sein (ich hab die Groß-/Kleinschreibung geändert, da war auch noch ein Fehler drin, außerdem gewöhnt man sich an die Konventionen, die in vielen Programmiersprache herrschen.)

Geändert wurde zum Beispiel:
wertstr -> wertStr_txt //Textfelder haben meist (kein Muss) die Endung _txt
btntrainstr -> trainStrength_btn //Buttons haben Endung _btn (kein Muss)

Wenn Du in der fla-Datei die Namen der Btn und Txt (also Buttons und Textfelder) änderst, solltest Du nichts in dem Script ändern brauchen.

Code:
package {

	import flash.display.MovieClip;
	import flash.events.*;
	import flash.text.TextField;
	import flash.display.SimpleButton;

	public class Attribute extends MovieClip {

		public var wertStr_txt:TextField;
		public var wertKno_txt:TextField;
		public var wertCha_txt:TextField;
		public var wertHealth_txt:TextField;
		public var wertDollar_txt:TextField;
		public var wertDays_txt:TextField;

		public var searchPartner_btn:SimpleButton;
		public var trainStrength_btn:SimpleButton;
		public var trainKno_btn:SimpleButton;
		public var trainCharme_btn:SimpleButton;
		public var sleep_btn:SimpleButton;
		public var work1_btn:SimpleButton;
		public var work2_btn:SimpleButton;
		public var work3_btn:SimpleButton;
		
		protected var statusStrenght:uint=10;
		protected var statusKnowledge:uint=10;
		protected var statusCharme:uint=10;

		protected var statusHealth:uint=100;
		protected var statusDollar:uint=100;
		protected var statusDays:uint=1;
		
		//----------------------------------------------------

		public function Attribute() {
			wertStr_txt.text=String(statusStrenght);
			wertKno_txt.text=String(statusKnowledge);
			wertCha_txt.text=String(statusCharme);
			wertHealth_txt.text=String(statusHealth);
			wertDollar_txt.text=String(statusDollar);
			wertDays_txt.text=String(statusDays);

			// Methode gotoPartners existiert nicht
			//searchPartner_btn.addEventListener(MouseEvent.MOUSE_DOWN, gotoPartners);
			trainStrength_btn.addEventListener(MouseEvent.MOUSE_DOWN , addStr);
			trainKno_btn.addEventListener(MouseEvent.MOUSE_DOWN , addKno);
			trainCharme_btn.addEventListener(MouseEvent.MOUSE_DOWN, addCharme);
			// Methode getSleep existiert nicht
			//sleep_btn.addEventListener(MouseEvent.MOUSE_DOWN, getSleep);
			work1_btn.addEventListener(MouseEvent.MOUSE_DOWN, work1);
			work2_btn.addEventListener(MouseEvent.MOUSE_DOWN, work2);
			work3_btn.addEventListener(MouseEvent.MOUSE_DOWN, work3);
		}




		protected function addStr(e:MouseEvent):void {
			if (statusDollar>=25) {

				statusStrenght+=Math.random()*5;
				statusStrenght=Math.round(statusStrenght*10)/10;

				wertStr_txt.text=String(statusStrenght);
				statusDollar-=25;
				wertDollar_txt.text=String(statusDollar);
				statusHealth-=25;
				wertHealth_txt.text=String(statusHealth);

			}
		}
		
		protected function addKno(e:MouseEvent):void {
			//attribTrain==1; //Zuweisungen immer mit einfachem =, bei Vergleichen fehlt das if	
			statusKnowledge+=Math.random()*5;
			statusKnowledge=Math.round(statusKnowledge*10)/10;
			wertKno_txt.text=String(statusKnowledge);
			statusDollar-=25;
			wertDollar_txt.text=String(statusDollar);
			statusHealth-=25;
			wertHealth_txt.text=String(statusHealth);
		}

		protected function addCharme(e:MouseEvent):void {
			//attribTrain==1; //Zuweisungen immer mit einfachem =, bei Vergleichen fehlt das if
			statusCharme+=Math.random()*5;
			statusCharme=Math.round(statusCharme*10)/10;
			wertCha_txt.text=String(statusCharme);
			statusDollar-=25;
			wertDollar_txt.text=String(statusDollar);
			statusHealth-=25;
			wertHealth_txt.text=String(statusHealth);
		}
		
		protected function work1(e:MouseEvent):void {
			statusDollar+=statusStrenght*2.5;
			wertDollar_txt.text=String(statusDollar);
		}

		function work2(e:MouseEvent):void {
			statusDollar+=statusKnowledge*5.5;
			wertDollar_txt.text=String(statusDollar);
		}

		function work3(e:MouseEvent):void {
			statusDollar+=statusCharme*1.5;

			wertDollar_txt.text=String(statusDollar);
		}
		//----------------------------------------------------
	}
}

So, wenn noch Fragen sind, stelle Sie einfach.

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Mein buch ist da.

ich muß die ersten Kapittel erstmal durchbeissen.

ich bin nun erstmal etwas verwirrt.

Der Aufbau des Scripts ist ganz anders als mein Script hier.

Wie funktionieren Dokumentenklassen mit AS 3?

Wenn ich jetzt Daten der charaktere, also ihrer Attribute speichern und bearbeioten möchte kann ich das in der Dokumentenklasse machen. Aber wie ist es wenn ich auf der Bühne Buttons und eventuell movieclips habe ?

muß ich das script auf der Bühne im Scriptlayer die buttons ansprechen lassen und die Daten der Charactere in der Klasse lassen oder die gesammte steuerung in die Dokumentenklasse legen ?

Ich habe es patu nicht hinbekommen das in den Ausgabefeldern die daten der Charactere angezeigt werden sobald die Dokumentenclasse geladen wurde. Wenn ich die Daten aussserhalb der Dokumentenklasse laufen lasse funktioniert es.

Muß ich doch den "return;" Befehl einsetzen oder habe ich etwas übersehen ?
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

ich hab mal anhand Deines Scriptes ein Beispiel gemacht: (Ohne Fehlerüberprüfung oder Ähnliches)



Wenn Du die zwei Klassen (Es existiert kein Code in der fla-Datei) dafür haben möchtest, kannst Du es ja sagen.


"Muß ich doch den "return;" Befehl einsetzen oder habe ich etwas übersehen ?"

Normalerweise brauchst Du das nicht nutzen, es sei denn, Du willst aus einer Methode sofort raus, die noch einige Anweisungen hat.

MFG ad86
 
Zuletzt bearbeitet von einem Moderator:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben