Flashhilfe.de - Flash Community

Variablen aus class bzw object lesen [Flash 10]

 


AntwortenRegistrieren Seite1  

f0rml3ss#1
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

31.01.2009, 11:05

Hallo,

ich hoffe Ihr helft mir so schnell wie auch sonst :3

Mein Problem ist, dass ich Objekte laden will und die darin enthaltenen Variablen auslesen möchte,..jedoch habe ich das bisher nur mit einem MouseEvent + e.target
gemacht.

Ich möchte jedoch schon beim Erstellen des Objektes auf die Variable zugreifen.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var item:Array=[card_A,card_B];

trace(item[0]); //Output: [class card_A]

create_cards();
function create_cards() {
   var counter:int=new int();

   for (var b:int=0; b<3; b++) {
      for (var a:int=0; a<3; a++) {
         counter++;
         var card:MovieClip=new item[Math.round(Math.random()*1)]();
         card.x=100+a*150;
         card.y=100+b*150;
         card.name="Karte_"+counter;
         addChild(card);
         trace(card); //Output: [object card_A]
         trace(card.values_); //Output: null
      }
   }
}

addEventListener(MouseEvent.CLICK,check_values);
function check_values(e:Event):void {
   trace(e.target.name+" - "+e.target.values_); //Output: Karte_1 - [daten]
}
Adobe AS3.0 Stichwortverzeichnis
XION#2
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

31.01.2009, 13:33

liegt wahrscheinlich daran, dass es keine variable namens values_ gibt. du solltest die werte, die du auslesen möchtest, genau benennen, also:
ActionScript:
1trace(card.x+" / "+card.y);
XION
f0rml3ss#3
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

Themenautor/in

31.01.2009, 13:46

aber wieso sollte es die Variable nicht geben ??

mit
ActionScript:
1
2
3
4
addEventListener(MouseEvent.CLICK,check_values);
function check_values(e:Event):void {
  trace(e.target.name+" - "+e.target.values_); //Output: Karte_1 - [daten]
}

wird mir das Richtige angezeigt - dabei handelt es sich um einen Array sich innerhalb befindet
>
ActionScript:
1var values_:Array=[2,7,6,3];


den Array kann ich aber eben nur mit der e.target.values_ function abrufen
Adobe AS3.0 Stichwortverzeichnis
Geändert von f0rml3ss am 31.01.09 um 13:47 Uhr
XION#4
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

31.01.2009, 14:13

"aber wieso sollte es die Variable nicht geben ??"
in deinem script oben steht keine deklaration für values_ . wie wärs damit die ganze funktion zu posten? hellsehen kann ich nicht.

die ausgabe von null, zeigt jedenfalls, dass das objekt (noch)nicht existiert.
XION
XION#5
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

31.01.2009, 14:17

nachtrag: ... bzw das objekt für die funktion nicht sichtbar ist, wenn du es z.b. in einer anderen funktion deklariert hast.
XION
f0rml3ss#6
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

Themenautor/in

31.01.2009, 14:32

also der Array befindet sich innerhalb des Objektes.

aber schaust du selber hier :3

mein Ziel ist es, während das Objekt auf die Bühne gerufen wird die Daten abzurufen
Adobe AS3.0 Stichwortverzeichnis
Geändert von f0rml3ss am 31.01.09 um 14:33 Uhr
badskill#7
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

31.01.2009, 16:01

Zu dem Zeitpunkt, an dem card erstellt wird, existiert das Array noch nicht. Ich glaube das liegt daran, weil das Skript auf der Zeitleiste liegt. Dadurch ist das ein Frameskript und wird erst dann erstellt, wenn dieser Frame erreicht wird. Dass passiert aber erst ein Frame später nach der Erstellung in der for-Schleife.
Sehen kannst du es daran:
ActionScript:
1
2
3
4
...
card.addEventListener( Event.ENTER_FRAME, cardHandler );
addChild(card);
...

ActionScript:
1
2
3
4
5
function cardHandler( e:Event ) : void
{
   e.target.removeEventListener( Event.ENTER_FRAME, cardHandler );
   trace( e.target.atk_values );
}

Sobald ein Frame vergangen ist, kannst du auf die Werte zugreifen.
Bei klassenbasierten Skripten tritt dieses Verhalten nicht auf.
XION#8
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

31.01.2009, 16:12

danke auch von meiner seite! da ich ausschließlich mit fb arbeite, ist mir das verhalten der zeitleiste nicht ganz so geläufig.
XION
f0rml3ss#9
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

Themenautor/in

01.02.2009, 16:50

vielen dank =)

#habe meine swf mal decompiliert und dort stand dann auch addFrameScript(0, this.frame1);
Adobe AS3.0 Stichwortverzeichnis

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de