PDA

Просмотр полной версии : fileReference + loadBytes = через раз


Zebestov
13.12.2009, 23:20
привет всем, вот типо код:


public function uploadPhoto():void
{
var fr:FileReference = new FileReference();
fr.addEventListener(Event.SELECT, onPhotoSelect);
fr.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]);
}
private function onPhotoSelect(e:Event):void
{
e.target.addEventListener(Event.COMPLETE, onPhotoLoad);
e.target.load();
}
private function onPhotoLoad(e:Event):void
{
var ldr:Loader = new Loader();
ldr.loadBytes(e.target.data as ByteArray)
stage.addChild(ldr); // это тупо для контроля, у меня там иначе, не суть
}



короче вся эта маца работает реально через раз. мне что еще и на ldr.loadBytes ставить какой-то лиснер?
спасайте браза - время горит )

udaaff
14.12.2009, 00:04
Есил у вас Loader на сцену не добавляется, может он GB удаляется? Попробуйте ldr сделать переменной экземпляра.

Wolsh
14.12.2009, 00:25
Если время горит, давно бы взял да поставил))
private function onPhotoLoad(e:Event):void
{
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.INIT, onPhotoInit);
ldr.loadBytes(e.target.data as ByteArray)
}
private function onPhotoInit(e:Event):void
{
stage.addChild(e.target.loader); // это тупо для контроля, у меня там иначе, не суть
}

Zebestov
14.12.2009, 00:27
Не не - добавляется, не прямо на stage, но добавляется. Выходит GB его не приберет.
Ну короче баг прошел (вроде бы, тьфутьфу), когда я сделал переменную fr свойством класса. Почему — не могу разобрать.

Добавлено через 3 минуты


...
ldr.contentLoaderInfo.addEventListener(Event.INIT, onPhotoInit);
...



твою дивизию! INIT! я шел по этому пути ) только вешался на что угодно, кроме INIT