| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 11
| Kennt eine Klasse Ihren eigenen Instanznamen?
Hallo zusammen, ich arbeite gerade an einer AS Klasse, die die Erstellung eines Menüs ausführen soll. Also addButton.. addSubButton etc... Mein Problem: In der Klasse werden die Buttons als separate MovieClips im Hauptfilm erzeugt. Jeder Button bekommt dann ne Reihe von on-Mouse... Funktionen zugewiesen. Und hier ist das Problem: bei einem onPress sollte der Button eine Funktion der Klasse ausführen. Nur weiß der Button ja nicht, wie die Instanz der Klasse auf der _root Ebene heißt und weder _parent noch this beziehen sich auf die Klasse, so dass ich darüber auch keine Funktion aufrufen kann. Hat jemand einen Rat? Vielen Dank! Und hier noch ein Code-Schnippsel... Class dynMenu(){ [....] function initialize(){ [...] eval("dynbtn"+i).onPress = function() { var depth = 100+this.localMenuNumber; // ################################### // PROBLEM: INSTANCE NAME! HOW TO GEHT IT HERE "m"???? // ################################### _root.m.showMenuLevel(this.localMenuNumber); } // label the button eval("dynbtn"+i+"."+this.MainBtnLabelField).text = this.MenuButtons[i][1]; NumberOfButtons++; } |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
eine möglichkeit: du vergibst ids, also eindeutige nummern... diese fragst du dann in den "on..." methoden ab... beispiel: class Beispiel{var id:Number;} Geändert von Omega Psi (04-12-2006 um 16:55 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 11
|
@Omega Psi Danke für den Tip. Das mit der ID ist gut, aber das löst glaube ich nicht das Problem. Bei eval("dynbtn"+i).onPress = function() { if (this.id == ...) } bezieht sich das this natürlich auf den Button. Aber den kenne ich natürlich und er kennt sich selbst auch. Aber woher kennt der Button denn die Klassen, die ihn erzeugt? Leider geht ja sowas eval("dynbtn"+i).onPress = function(m ynMenu) { if (this.id == ...) } auch nicht. |
| | |
| | #7 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 11.856
|
Sorry, ich hatte das falsch gelesen. Aber genau für solche Fälle brauchst du _parent (sonst macht die inverse traversierung über _parent keinen Sinn und die Eigenschaft ist sinnlos). _parent adressiert doch genau den MovieClip, der als Container für ButtonMovieClip dient. dabei aber keine Klasse sondern die Instanz direkt. Mit der id kannst du dann eine Buttonklasse erzeugen, die als Schablone für alle Buttons dient. class Beispiel{var id:Number;} Sollte so funktionieren, da ich genau mit dieser Idee arbeite - ist aber gerade aus dem Kopf heraus geschrieben. Geändert von Omega Psi (04-12-2006 um 17:09 Uhr) |
| | |
| | #8 (permalink) |
| nobody is perfect Registriert seit: Jul 2004 Ort: munich
Beiträge: 873
|
Hi, also dann übergeb einfach eine Referenz auf die Instanz. Und das brauchst du auch gar nicht mit der id zu machen. Hier mal grob die Vorgehensweise: PHP-Code: |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 11
|
Hi OmegaPsi, die Idee hatte ich auch. Aber das ist ja das blöde, dass _parent den MovieClip anpeilt, leider nicht die Instanz einer Klasse. _parent verweist also bei all meinen Buttons auf _root. That's it. Und in _root gibt es die Instanz der DynMenu Klasse, aber auf die zeigt _parent leider net. Zum Verzweifeln... mir kommen das so Dinge in den Kopf wie Reflection unter Java... gibts so was für Flash? |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 11
|
Oh mann, ich habs. ich mach im Konstruktor der Klasse einfach ein _root.DynMenu_Instance = this; und auf _root.DynMenu_Instance kann ich immer zugreifen. Dann habe ich zwar ein bisschen mit OOP gebrochen und eine böse globale Veriable reingemacht, aber es funktioniert. DANKE FÜR DIE TIPS! |
| | |
| | #12 (permalink) |
| nobody is perfect Registriert seit: Jul 2004 Ort: munich
Beiträge: 873
|
Versteh ich nicht, warum das denn nicht sollte. Ich realisier das nur so. Funktioniert auch alles prima. Vielleicht liegst ja auch an deinem eval? Schon mal versucht mit PHP-Code: |
| | |
| | #14 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Habe mir noch einmal deinen ersten Beitrag durchgelesen... meinst du vielleicht so etwas? PHP-Code: PHP-Code: |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |