| |||||||
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: Dec 2005
Beiträge: 12
|
Hi! Ich habe ein Klasse die ich als Listener für einen MovieClipLoader adde. in der onLoadInit funktion will ich jetzt dieVariablen der Klasse verändern und nachher weiter verwenden. Das Problem ist, dass onLoadInit verzögert ist und die Variablen erst gesetzt werden nachdem ich sie abfragen will. Code: class bla extends Object {
var x:Number
var loader:MovieClipLoader
function bla(container) {
x=0
loader = new MovieClipLoader()
loader.addListener(this)
loader.loadClip("http://www.irgendwas.de/bla.gif",container)
}
function onLoadInit(mc) {
x=mc._height
}
}
b=new bla(newmc)
trace(b.x) // ergibt 0 mfg Neon Geändert von Neon12345 (15-03-2006 um 04:51 Uhr) |
| | |
| | #2 (permalink) |
| Flash it baby! Registriert seit: Feb 2003
Beiträge: 287
|
Hi, so wie ich das sehe, ist das das alte Flashproblem. Wenn Du ein externes Bild lädst, und onLoad ausgeführt wird, dann ist das Bild aber noch nicht in Deinem MC. Du kannst die Höhe also erst im nächsten Frame abfragen. Wie Du das machst, ob über ein Interval oder ein onEnterFrame bleibt Dir überlassen |
| | |
| | #3 (permalink) | |
| °.oO°O.o°.oO.o°O Registriert seit: Jun 2005 Ort: CH
Beiträge: 1.490
| Zitat:
Das war mal in Flash 5 oder MX!Das Problem ist, dass du das Laden initialisierst mit der Instanzierung deiner bla-Klasse. Allerdings führst du direkt danach den trace aus. Das kann ja so (in den allermeisten Fällen) nicht funktionieren! Pack das trace in die onLoadInit und auch eine Funktion, die dir das weiter Vorgehen auslöst.
__________________ There is no way to happiness, happiness is the way! - Buddha | |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Dec 2005
Beiträge: 12
|
Eben das was oben steht ;D Bisher habe ich 2 Möglichkeiten, die mir nicht gefallen: 1. Man könnte zählen wie oft b instanziert wurde und bei jedem LoadInit wieder abziehen. => Bei 0 weitermachen 2. Mit setInterval prüfen, ob onLoadInit schon ausgeführt wurde und eine queue, welche die Instanzen von b enthält durchgehen. |
| | |
| | #7 (permalink) |
| ................ Registriert seit: Jun 2004
Beiträge: 15.890
|
Hallo! Schieb die doch alle in ein Array. Also so ungefähr: PHP-Code:
__________________ ternärer Konditionaloperator +++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++ |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Dec 2005
Beiträge: 12
|
Hab jetzt ne schöne Lösung: Es gibt ein Klasse DrawQueue mit einem Array Funktionen: add - fügt b zum array hinzu drawAll - verarbeitet alle höhen wenn ready == true sonst wird _doLater = drawAll gesetzt _doLater - dummy funktion die von onLoadInit aufgerufen wird onLoadInit - DrawQueue wird als Listener für alle "load Objekte" registriert, wird also jedesmal aufgerufen, wenn ein x initialisiert wurde. Ebenso wird hier _doLater aufgerufen, was zu beginn eine undefinierte funktion ist. ready - prüft ob alle höhen initialisiert sind wenn ich jetzt DrawQueue.drawAll() irgendwo aufrufe, werden alle x verarbeitet nachdem sie initialisiert wurden. PS.: setInterval scheint den Garbage Collector irgendwie zu stören, als ich das drin hatte konnte ich den Speicher schön per Knopfdruck anfüllen(garantierte 4 mb pro klick). Mit der jetzigen Lösung wird der Speicher wieder frei. mfg Neon Geändert von Neon12345 (17-03-2006 um 07:01 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |