Antworten auf deine Fragen:
Neues Thema erstellen

Variablen berechnen mit as3

jander2005

Noch nicht viel geschrieben

Hallo.

ich warte darauf das ein Tutorialbuch für as3 ankommt.

Folgendes:

Ich versuche ein dating sim Game nachzuvollziehen und neu aufzubauen.

ich habe 5 attribute:

strenght/knowlegde/Charme/Health/Dollar

Per Button möchte ich den Strenght wert um eine bestimmte anzahl anheben und den ermittelten Wert in einen Dynamictextfeld eintragen lassen.

Ich habe das problem das ich nur für Str und die anderen Attribute nur eine Variable habe und nicht weis ob ich die neu errechneten werrte automatisch in die Variable packen kann oder ob ich eine neue Variable für die errechneten Werte brauche.

Meine Rechnung geht hier nicht auf und nichts geschieht. Wie müsste der Berechnungscode in as3 aussehen ?

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

import flash.events.*;

var statusstrenght:Number = 10;
var statusknowledge:Number = 10;
var statuscharme:Number = 10;

var statushealth:uint = 100;
var statusdollar:uint = 100;

wertStr.text=String(statusstrenght);
wertkno.text=String(statusknowledge);
wertcharme.text=String(statuscharme);
werthealth.text=String(statushealth);
wertdollar.text=String(statusdollar);

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

btntrainstr.addEventListener(MouseEvent.MOUSE_DOWN, addstr);
btntrainkno.addEventListener(MouseEvent.MOUSE_DOWN, addkno);
btntraincharme.addEventListener(MouseEvent.MOUSE_DOWN, addcharme);



function addstr(e:MouseEvent):void {
statusstrenght + Math.random()*5;
statusstrenght = (statusstrenght + addstr);
return;
}



function addkno(e:MouseEvent):void {
statusknowledge + Math.random()*5;
return;
}

function addcharme(e:MouseEvent):void {
statuscharme + Math.random()*5;
return;
}








//-----------------------------------------------------
trace ("Strenght", statusstrenght);
trace ("Knowledge", statusknowledge);
trace ("Charme", statuscharme);
trace ("Health", statushealth);
trace ("Dollar", statusdollar);
 

Kerstin77

Flashfan

AW: Variablen berechnen mit as3

Hallo,

Du berechnest ja auch gar nichts ;)

PHP:
statusknowledge + Math.random()*5;

Was soll dabei rauskommen? Wenn Du zu der Variablen eine Zufallszahl zwischen 0 und 5 hinzuzählen möchtest, und anschließend den neuen Wert im Textfeld ausgeben möchtest, geht das so:

PHP:
var statusstrenght:Number=10;
var statusknowledge:Number=10;
var statuscharme:Number=10;
var statushealth:uint=100;
var statusdollar:uint=100;

wertStr.text = String(statusstrenght);
wertkno.text = String(statusknowledge);
wertcharme.text = String(statuscharme);
werthealth.text = String(statushealth);
wertdollar.text = String(statusdollar);

btntrainstr.addEventListener(MouseEvent.MOUSE_DOWN , addstr);
btntrainkno.addEventListener(MouseEvent.MOUSE_DOWN , addkno);
btntraincharme.addEventListener(MouseEvent.MOUSE_DOWN, addcharme);

function addstr(e:MouseEvent):void {
    statusstrenght += Math.random()*5;
    wertStr.text = String(statusstrenght);
}

function addkno(e:MouseEvent):void {
    statusknowledge += Math.random()*5;
    wertkno.text = String(statusknowledge);
}

function addcharme(e:MouseEvent):void {
    statuscharme += Math.random()*5;
    wertcharme.text = String(statuscharme);
}

trace("Strenght", statusstrenght);
trace("Knowledge", statusknowledge);
trace("Charme", statuscharme);
trace("Health", statushealth);
trace("Dollar", statusdollar);

Grüße,
Kerstin
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

und um Dir Tipparbeit zu sparen, kannst Du in diesem Fall das "return;" weglassen. Es kommt ja sowieso keine weitere Anweisung, also wird die Methode sowieso verlassen.

function addkno(e:MouseEvent):void {
statusknowledge = statusknowledge + Math.random()*5;
return;
}

function addcharme(e:MouseEvent):void {
statuscharme = statuscharme + Math.random()*5;
return;
}

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Danke.^^

hätte ich auch selber daran denken können.

jetzt hätte ich da noch ein paar Sachen:

1:

Ich habe am anfang 100$. Wenn ich Strenght trainiere verliere ich 25$.
Wenn ich weniger als 25 $ habe möchte ich das das script nicht ausgeführt wird.
Hier ist mein Script aber er gibt mir eine fehlermeldung das irgendwas umbekanntes auf die fla zugreift.

if (statusdollar >=25) {
function addstr(e:MouseEvent):void {
statusstrenght += Math.random()*5;
wertStr.text = String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
else if (statusdollar <=25) {
addstr = false;
}
}
}


2: Ich habe mit dem math.random eine kommazahl. ich möchte aber die kommas auf bzw abgerundet haben. wie geht das ?^^

3: in as3 scheint er wohl probleme mit if , else if, else zu haben.

Wenn ich weniger als3 Äpfel habe führe function 1 aus.
Wenn ich mehr als 3 Äpfel habe führe aktion 2 aus.
Ansonsten wenn ich mehr als 7 äpfel habe führe aktion 3 aus.

Wie würde in as3 dieser befehl aussehen ?
if / else if / else ?

er sagt mir andauernt else is unexpected. Ich weis nicht was das soll.
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,
if (statusdollar >=25) {
function addstr(e:MouseEvent):void {
statusstrenght += Math.random()*5;
wertStr.text = String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
else if (statusdollar <=25) {
addstr = false;
}
}
}
1. Die Funktion addstr wird immer bei einem MouseEvent.MOUSE_DOWN aufgerufen, Die if-Schlefe sollte innerhalb davon sein.
2. Dadurch entstehen wahrscheinlich auch die Probleme mit if else

Sollte wohl eher so sein:

Code:
function addstr(e:MouseEvent):void {
    [COLOR="Red"]if (statusdollar >=25) {[/COLOR]
        statusstrenght += Math.random()*5;
        wertStr.text = String(statusstrenght);
        statusdollar -= 25;
        wertdollar.text=String(statusdollar);
   }
   [COLOR="red"] else {
        addstr = false;
    }[/COLOR]
}
}


2: Ich habe mit dem math.random eine kommazahl. ich möchte aber die kommas auf bzw abgerundet haben. wie geht das ?^^

So etwa bei EINER Kommastelle (z.B. 0.4, 0.5, 0.6 etc.):
Code:
var zahl:Number=Math.random();
zahl=Math.round(zahl*[COLOR="red"]10[/COLOR])/[COLOR="red"]10[/COLOR]

Beispiel: Math.random() ergibt 0.95432
0.95432 * 10 = 9.5432
Math.round(9.5432)= 10
10/10 = 1

Math.round() rundet immer auf eine Ganzzahl deswegen in der Klammer mal 10, anschließend geteilt durch 10.

3: in as3 scheint er wohl probleme mit if , else if, else zu haben.

Wenn ich weniger als3 Äpfel habe führe function 1 aus.
Wenn ich mehr als 3 Äpfel habe führe aktion 2 aus.
Ansonsten wenn ich mehr als 7 äpfel habe führe aktion 3 aus.

1. Siehe Oben in meinem jetzigen Beitrag.
2.
Code:
if (appleNr<3){
   someFunction1();
}
else {
   if (appleNr>7){
       someFunction3();
   }
   else{
      someFunction2();
   }
}

MFG ad86
 

sokie

Mod | Web

AW: Variablen berechnen mit as3

3: in as3 scheint er wohl probleme mit if , else if, else zu haben.

Wenn ich weniger als3 Äpfel habe führe function 1 aus.
Wenn ich mehr als 3 Äpfel habe führe aktion 2 aus.
Ansonsten wenn ich mehr als 7 äpfel habe führe aktion 3 aus.

da sind Logikfehler drin:
wenn du mehr als 7 Äpfel hast, sind das auf jeden fall mehr als 3, weswegen Aktion 2 uch bei 8 Äpfeln ausgeführt würde.
Erahnen lässt sich, dass du für Aktion 2 eine Beidingung haben willst die beinhaltet, dass du mehr als 3 aber weniger oder gleich 7 Äpfel hättest:
Code:
if (anzahlAepfel <  3){
  aktion_1;
  }
elseif (anzahlAepfel > 3 && anzahlAepfel <= 7){
  aktion_2;
}
else{
   aktion_3;
}
wobei bei deinem Model der Zustand, dass genau 3 Äpfel vorhanden wären auch die aktion_3 auslösen würde (das Statement müsste lauten : "wenn ich weniger oder gleich 3 Äpfel hätte"...
Code:
if (anzahlAepfel <[B][COLOR=Red]=[/COLOR][/B]  3) ...
nicht AS3 hat die Probleme mit den Statements...
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

mannomann.

ich habe 2 Fehlerausgaben wenn ich den movie starte. der debugger im Scriptfenster zeigt an das alles ok ist.

1178: Attempted access of inaccessible property addstr through a reference with static type roh_fla:MainTimeline.

1168: Illegal assignment to function addstr.

function addstr(e:MouseEvent):void {
if (statusdollar >=25) {
statusstrenght += Math.random()*5;
wertStr.text = String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
}
else {
addstr = false; // fehlercode 1168 und 1178
}
}

wie müsste ich den code modifizieren wenn ich den berechneten wert runden möchte ? muß ich erst ne neue variable setzen oder kann ich das so im script machen ?

Die zeile addstr = false; ist falsch. irgendwie muß ich die zeile anders definieren.
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

function addstr(e:MouseEvent):void {
if (statusdollar >=25) {
statusstrenght += Math.random()*5;
wertStr.text = String(statusstrenght);
statusdollar -= 25;
wertdollar.text=String(statusdollar);
}
else {
addstr = false; // fehlercode 1168 und 1178
}
}

Du hast eine Methode namens addstr (rot) und eine Variable namens addstr (grün). Das geht nicht. Benenne eines davon um.
Was soll "addstr=false" bewirken?


Wenn Du in der Zeile
Code:
statusstrenght += Math.random()*5;
die Zufalsszahl runden möchtest, so in etwa:
Code:
statusstrenght += Math.round(Math.random()*5);


MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Wenn ich 100 HP und 100 Dollar habe und trainiere verliere ich 25 HP und 25 $.

Später kommen noch items hinzu.

Wenn HP und $ sich auf 0 befinden soll das script nicht ausgeführt werden. Also wenn zu wenig geld oder Healthpoints da sind.

Wenn ich den roten oder grünen umbenenne muß ich doch wieder eine neue definition amchen oder nicht ? Einfach umbenennen geht nicht. er sagt dann ich greife auf einen undefinierten wert zu. oder aktion oder methode oder was auch immer.
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

Wenn HP und $ sich auf 0 befinden soll das script nicht ausgeführt werden. Also wenn zu wenig geld oder Healthpoints da sind.
Soll dafür auch addstr=false stehen? Mir ist die VARIABLE noch nicht so ganz klar, was Sie machen soll. Wenn Du damit zum Ausdruck bringen möchtest, dass ab jetzt die METHODE addstr nicht mehr aufgerufen werden soll, müsstest Du anstatt
Code:
addstr=false;

das:
Code:
btntrainstr.removeEventListener(MouseEvent.MOUSE_DOWN , addstr);

schreiben.

ABER Du musst dann später irgndwie den Listener wieder erstellen.
Wenn Du in dieser Methode addstr nur sagen möchtest, dass wenn HP und Dollar größer als 25 sind, dann reicht das if mit der/n Anweisung(en) danach. Du brauchst dann kein else ... mehr.

Wenn ich den roten oder grünen umbenenne muß ich doch wieder eine neue definition amchen oder nicht ? Einfach umbenennen geht nicht. er sagt dann ich greife auf einen undefinierten wert zu. oder aktion oder methode oder was auch immer.
Ja müsstest Du, aber wenn ich genau weiß, was Du mit der Zeile addstr=false erreichen willst, kann ich Dir vielleicht mehr helfen.

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Danke. Das mit dem weglassen der else variante hat geklappt^^. (freu);

Nun habe ich folgendes:

Der Scriptlayer arbeitet in as3 nicht merhr global.

ich habe 4 Frames.

Die Attribute gehen von frame 1 bis 4. Auf frame 2 habe ich 3 Buttons und auf frame 3 und Frame 4 komemn die Infos der Mädel rein.

Nun ist das problem ich mußte für jeden Frame ein eigenes script schreiben weil ich die Fehlermeldung erhielt er würde auf eine Nulleinheit zugreiffen.

Wenn ich auf frame 1 die attribute trainiere und arbeite und dann in den nächsten frame wechsle und dann wieder zurück anch frame 1 gehe gehen alle attribute wieder auf den basiswert.

Ich habe versuicht einfach eine Variable Attribtrain = 0 / = 1 einzufügen aber es klappte nicht.

Wie kann ich die Werte der Attribute gespeichert lassen wenn ich durch die Frames skippe ? ich habe einen layer mit namen Scripts. Aber für jeden frame muß ich ein Script schreiben wenn buttons oder Dynamische texte drin sind.

Nur wie gesagt überschreibtz das script von Frame 1 dann wieder die Werte. Alle werte gehen wieder auf Basis. Wie kann ich das umgehen ?
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

1. In der Zeitleiste hast Du eine (oder mehrere Ebenen) mit deinem Inhalt und dann hast Du Deine Scripts-Ebene. Die sollte 4 Frames lang sein und keine Schlüsselbilder haben. Dann SOLLTE es funktionieren. Ich hab es aber nicht getestet, da ich immer mit 2. arbeite.


2. Möglichkeit: Erstellen einer Dokumentenklasse.

MFG ad86
 
Zuletzt bearbeitet von einem Moderator:

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Ich habe jetzt versucht eine Documentenklasse zu ersellen und sie mit dem fla zu verknüpfen.

hier die Dokumentenklasse gespeichert als "attributes.as"
Sie enthällt die attribute und die Funktionen zum Trainieren der Attribute sowie das Arbeiten um geld zu verdienen


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

package charattributes
{
public class attributes {

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

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;



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 {

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 {

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);
}


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


}
}

*********************************************************

hier versuche ich die dokumentenklasse ins document einzubinden (frame 1):

stop();

import flash.events.*;
import attributes;

********************************************************
und erhallte diese fehlermeldung:

1120: Access of undefined property statushealth.

habe ich irgendwas falsch gemacht ? Die Documentenklasse wird doch ins document integriert also sollte er doch auf die attribute zugreiffen können. der debugger hat keinen fehler im script für die package angezeigt.
 
Zuletzt bearbeitet:

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Hab einen fehler gefunden. Ich habe die as in ein falsches verzeichniss gespeichert.

Der film startet aber friert ein. Die Dynamicfelder sind leer und der Link wird nicht angesprochen.

Was da los ?
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

1. Solltest Du Klassennamen groß und Singular schreiben, also Attribute und die Datei heißt dann Attribute.as. Hat sich einfach so eingebürgert, müsstet Du ja nicht unbedingt machen. Ist aber für andere leichter zu lesen.

2. Zum Aufbau der Attribute-Klasse:

Code:
package charattributes{
   
   import flash.display.MovieClip;

   //extend MovieClip, da Du mehrere Frames hast, sonst würde auch Sprite gehen
   public class Attribute extends MovieClip{
   
      protected var statusStrength:uint =10;
      ...
      protected var statusDays:uint=1;
      
      /*Konstruktor wird aufgerufen, sobald Du die swf-datei öffnest oder die html-Datei öffnest, in der die swf-Datei liegt*/
      public function Attribute (){
         /*Hier kommen Deine ganzen Anweisungen hinein, Deine Zuweisungen von oben könnten auch hier sein, in dieser Form:
         statusStrength=10; (oben würde dadurch "=10" wegfallen, mehr nicht)*/
         this.gotoAndStop(1);//Er bleibt auf Frame 1 stehen
         wertStr.text=String(statusStrength);
         ...
         btnWork3.addEventListener(MouseEvent.DOWN,work3);
      }
      
      //Und jetzt alle Deine Funktionen in dieser Form
      protected function addStr(e:MouseEvent):void{
      ...
      }
   }
}

Im Script fehlen noch ein paar Import-Anweisungen (z.B. für MouseEvent, dass musst Du noch hinzufügen. Eine Importanweisung steht ja schon oben). Die Punkte musst Du durch Deinen weiteren Sourcecode austauschen, aber das sollt klar sein.;)

3. Zum Einbinden der Dokumentenklasse: Einmal auf die Bühne in Deiner fla-Datei klicken (Es darf sich kein Objekt darunter befinden, ansonsten außerhalb der Bühne klicken) und im Einstellungsfenster charattributes.Attribute eingeben, wobei es direkt im Ordner der fla-Datei den Ordner charattributes und darin die Datei Attribute.as geben muss.

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

Ich erhallte noch eine fehler meldung:

1150: The protected attribute can only be used on class property definitions.

auf dieser und auf den anderen zeilen.

protected function addstr(e:MouseEvent):void {

Die einstellungen und zusätze habe ich alle gemacht. die classe in der bühne muß doch den selben namen haben wie die as oder nicht ?

habe ich da noch etwas übersehen ?
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

hier ncohmal das script. ich hofe es ist so richtig. ich erhallte aber trotzdem für die functions zeilen eine fehlermeldung.
1150 oder 1013

:mad::mad::mad::mad::mad::'(

**********************

package attributes {

import flash.display.MovieClip;

public class attributes 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;



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);


public function Attribute (){


private 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);

}
}
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

Deine Ordnung stimmt noch nicht. Im Konstruktor
Code:
public function Attribute(){...}
kommt das, was beim ersten Aufrufen initialisiert werden soll. Name der Klasse und der Name des Konstruktors müssen identisch sein. Bei Dir lautet die Klasse attributes und der Konstruktor Attribute. Anhand Deines Script, was Du gepostet hast, sind die Verbesserungen:

package attributes {

import flash.display.MovieClip;


public class Attribute 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 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);

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);

}//Ende des Konstruktors, der die EventListener erstellt hat und die Texte initialisiert hat.


private 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);

}
}

Und wie gesagt, MouseEvent musst Du auch noch importieren (steht zu mindestens nicht hier im Auszug)

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Variablen berechnen mit as3

ich habe die änderungen vorgenommen. immer noch error 1150.

hier der komplette script. Das scriptfile heisst "attributes.sa" und ist im root ordner der fla. Die klasse habe ich auch angegeben im Eigenschafftenmenü.

**************************

package attributes {

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

public class attributes 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;



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);
}


public function attributes (){


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);
}




}
}
}
 
A

ad86

Guest

AW: Variablen berechnen mit as3

Hi,

1.
Das scriptfile heisst "attributes.sa"

Sollte wohl attributes.as heißen.

2. Deine Ordnerstruktur müsste so aussehen:

root/datei.fla
root/attributes/attributes.as //Ordner attributes da in der AS-datei package attributes


3. Zu dem Fehler 1150. Deine Methoden sollten innerhalb der Klasse, ABER nicht innerhalb des Konstruktors stehen:
public function attributes (){

//Die nachfolgende Methode soll nicht im Konstruktor stehen!
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);

}
}


Sollte am Ende so aussehen. Und schreib bitte Deine Klasse groß, das ist üblich in den meisten Programmiersprachen.

Code:
package attributes {

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

public class attributes 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 function attributes (){
    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);
 }
        
    
    
    
    }
}

MFG ad86
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben