FileReference Bug - it just doesn’t load…
20. März 2010
While working on Tilerator i found some strange behaviour on FileReference. Code as follows:
private function selectFile():void{
var f:FileReference=new FileReference();
f.addEventListener(Event.SELECT, loadFile);
f.addEventListener(Event.COMPLETE, parseFile);
f.browse();
}
private function loadFile(e:Event){
var fr:FileReference=FileReference(e.target);
fr.load();
}
private function parseFile(e:Event){
var fr:FileReference=FileReference(e.target);
trace('loading completed');
//never fires
}
Problem:
Even a progress event is rarely fired. The File just won’t load. Pretty annoying - especially when you eagerly want to load some data you’ve been storing away before.
Solution:
FileReference f might be eaten by some really motivated garbage collector, though it still has some event listeners attached. Making f a field var helps.
sauberes entfernen nachgeladener swfs - removeMovieClip reintroduced
16. Juli 2008
Colin Moock hat in seinem Blog eine Liste von Dingen aufgeführt, die nötig sind, um ein nachgeladenes swf sauber zu entladen.
Wie er selbst sagt, sind das alles nur Anhaltspunkte - aber alles Sachen, die beachtet werden müssen.
Vielleicht (sehr wahrscheinlich) sind danach alle Referenzen gelöscht, und das swf wird WIRKLICH aus dem Speicher entfernt (ist bis jetzt nicht der Fall - eben wegen der Referenzen durch Listener etc.).
Noch ausführlicher wird das Thema bei Grant Skinner behandelt.
attachMovie in as3 emulieren
19. Juni 2008
Früher™ wurden ja die Assets aus der Bilbiothek vom faulen Flasher mit
for(i=0; i<4; i++){
movie=this.attachMovie("asset"+n,"movie"+n,n);
}
(jetzt mal getNextHighestDepth() und Typisierung weggelassen)
Jetzt haben wir das großartige ActionScript 3, und attachMovie ging den Weg, den auch duplicateMovieClip beschreiten musste. Sie passten einfach nicht zur neuen DisplayList.
Die Aufgabenstellung bleibt aber, und das Problem wird nicht kleiner. Bei Adobe fand ich folgenden Weg:
import fl.containers.UILoader;
for(var i:Number=0; i<4; i++){
var myInstance:UILoader = new UILoader();
myInstance.scaleContent = false;
myInstance.source = "myInstance"+i;;
this.addChild(myInstance);
}
Top. Sieht gut aus, fuktioniert.
Nicht.
Zumindest, solange man nicht eine UILoader-Komponente auf die Bühne gezogen hat. Dann läuft alles wunderbar.
flash-player-entwickler im interview
22. Mai 2008
Colin Moock hat Jim Corbett, einen der Entwickler des Flash Player interviewt (naja, er unterhält sich mehr mit ihm).
Die beiden sprechen über ECMAScript 4, die Zukunft des Web, natürlich über den FlashPlayer - interessanterweise auch über vergangene Versionen, und Adobe und Macromedia.
Weiterhin werden die GarbageCollection und deren Verhalten kurz erläutert. Jim erklärt, warum removeMovieClip nicht mehr funktionieren kann, obwohl es für den Flash-Programmierer einfacher ist - und wie es in der Zukunft gehandhabt wird. Auch auf den von Grant Skinner entdeckten Bug wird eingegangen - und er ist als “high priority” eingestuft.
Interessanterweise (das Video ist vom April) werden die implementierten Features UDP und Peer2Peer nicht bestätigt, obwohl sie in der Beta-Release enthalten sind. Und zu guter Letzt wird sogar noch auf die Audio-Funktionen eingegangen.
coding flash 10
17. Mai 2008
Die neue Drawing-API des Flash Player 10 wird bei senocular.com vorgestellt. Passend dazu gibt Lee Brimelow auf gotoandlearn.com eine Einführung, wie man swfs für FlashPlayer 10 erstellt.