Objekt in Objekt... AS2.0

SonMiko

Erfahrenes Mitglied
Hi,

ich habe eine Klasse und möchte in dieser Klasse feststellen wenn das Ereignis onResize des Fensters auftritt. Dazu erstellt man ja für gewöhnlich ein Listener Objekt welches man dann dem Stage-Objekt als Eventlistener zuordnet.

Das geht hier aber nicht, da ich in meiner Klasse kein weiteres Objekt erstellen kann.

Wie sieht der logische Weg jetzt aus damit ich an das Ereignis komme? Ich würde sehr gerne innerhaln meiner Klasse auf das Ereignis eingehen - oder ist es nur möglich wenn ich auf der Hauptzeitleiste dem Stage-Objekt das Objekt aus der Klasse an der ich arbeite samt Methode zuordne? - Fände das nicht sehr schön und ein kleiner Test hat gezeigt das auch das Probleme bereitet da onResize wohl nicht erkannt wird...
UPDATE: Weil die Methode oder das Event wohl teil der Stageklasse ist - mein Fehler. Geht es trotzdem irgendwie? - Meine aktuelle Klasse benötigt allerdings die MovieClip Fähigkeiten (extends MovieClip ist also leider unumgänglich)...

Hat jemand Vorschläge?

Besten Gruß,

Mike
 
Zuletzt bearbeitet:
Hallo Jens,

danke für deine Antwort.
Naja, viel zu posten gibts da nicht. Aktuell ist es eine Klasse in der ich versuche auf das Resize Ereignis zuzugreifen:

Code:
class dieklasse extends MovieClip{

funtcion dieklasse{

trace("Objekt erstellt");


}

function derResize{

onResize = function(){

trace(Stage.width);

}

}

}

So in etwa...

Und auf der Hauptzeitleiste halt:

Code:
stop();

var myObj:dieklasse = new dieklasse();

Stage.addlistener(dieklasse.derResize);

Im Anderen Thread habe ich keinen Konkreten Code, da erhoffe ich mir auch bloß ein paar Antworten was möglich ist und was nicht, toll wäre es wenn ichs logisch nachvollziehen könnte - also wieso etwas ist wies ist...

Vielen lieben Dank und besten Gruß,

Mike
 
AS2 , lang ists her :) ....

Implemetiere das onResize Event doch auch auf die Zeitleiste. Nachdem das event abgefangen wurde kannst du die einzelnen klassen über die Änderung benachrichtigen bzw. deren Methoden aufrufen:

PHP:
var myClass:Class = new Class();

stageListener = new Object();
stageListener.onResize = function() {
   myClass.doResize(theStageWidth, thStageHeight)

}

Stage.addListener(stageListener);


stageListener.onResize();
 
Hehe okay danke :)...

Zwar habe ich super viel Material zu AS3.0 hier liegen aber der Umstieg ist mir irgendwie nie gelungen...
 
Gerade in dem Bereich der OOP läßt sich mit AS3 wesentlich konsistenter Arbeiten als es mit AS2 der Fall ist.

Man würde dort zb. eine StageResizer Klasse in die Applikation implementieren (quasi als ein Proxy) deren Methoden / Attribute gekapselt sind. Sobald sich nun deine Stagegröße ändert würde man dann ein Event abfeuern und alle Objekte die diesem Event zuhören bekommen darüber dann eine Nachricht und können dann selbständig darauf reagieren. Damit ist eine sehr lose kopplung zwischen den einzelnen Objekten gewährleiste. Nichts mehr mit ich muß dann diese Methode in dieser Klasse aufrufen usw... :)
 
Zurück