Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   UILoader.loadBytes() - как поймать Event.COMPLETE? (http://www.flasher.ru/forum/showthread.php?t=119766)

Antisly 30.12.2008 00:57

UILoader.loadBytes() - как поймать Event.COMPLETE?
 
В десятке использую UILoader для загрузки изображений с сервера и с компа пользователя. С загрузкой с сервера все понятно. С компа тоже загружает, но не перехватывается событие Event.COMPLETE. Локально загружаю через loadBytes().

Выручайте: как быть?

musat 30.12.2008 01:27

Код AS3:

uiLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadBytesComplete);


Antisly 30.12.2008 01:36

Цитата:

Сообщение от musat (Сообщение 787284)
Код AS3:

uiLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadBytesComplete);


У вас какой-то свой UILoader, у которого есть свойство contentLoaderInfo? Дайте поюзать... :)

wvxvw 30.12.2008 10:00

Мммм... покажие код? У меня работает...

Antisly 30.12.2008 22:07

Цитата:

Сообщение от wvxvw (Сообщение 787313)
Мммм... покажие код? У меня работает...

Странно, что у Вас работает... Может, разные версии flex_sdk? Я во Flash CS4 компилирую... :confused:

Вот тестовый код:
Код:

// UILoader лежит на сцене
// надо поймать событие загрузки изображения в этот лоадер
uiLoader.addEventListener(Event.COMPLETE, load_complete);

var file:FileReference = new FileReference();
file.addEventListener(Event.SELECT, file_select);
file.addEventListener(Event.COMPLETE, file_complete);

// кнопка тоже на сцене
fileButton.addEventListener(MouseEvent.CLICK, fileButton_click);

function fileButton_click(event:MouseEvent):void
{
        var filter:String = "*.jpg; *.jpeg; *.gif; *.png";
        var photoFileTypes:FileFilter = new FileFilter("Images" + " (" + filter + ")", filter);
        file.browse(new Array(photoFileTypes));
}

function file_select(event:Event):void
{
        file.load();
}

function file_complete(event:Event):void
{
        uiLoader.loadBytes(file.data);
}

function load_complete(event:Event):void
{
        // этот код не выполняется!
        trace("load_complete");
}


musat 30.12.2008 22:13

Antisly
Ну я же написал:
Код AS3:

uiLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, load_complete);

Слушать событие надо не у самого UILoader'a, а у его свойства contentLoaderInfo.

Antisly 30.12.2008 22:22

Цитата:

Сообщение от musat (Сообщение 787461)
Antisly
Ну я же написал:
Код AS3:

uiLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, load_complete);

Слушать событие надо не у самого UILoader'a, а у его свойства contentLoaderInfo.

:) А я вам уже отвечал, что у UILoader нет такого свойства! Не путайте с Loader!

musat 30.12.2008 23:03

Извиняюсь, действительно с Loader'ом спутал.

Вот вариант (плохой, конечно, но как сделать по-другому, не знаю):
Код AS3:

var file:FileReference = new FileReference();
file.addEventListener(Event.SELECT, file_select);
file.addEventListener(Event.COMPLETE, file_complete);
 
fileButton.addEventListener(MouseEvent.CLICK, fileButton_click);
 
function fileButton_click(event:MouseEvent):void
{
        var filter:String = "*.jpg; *.jpeg; *.gif; *.png";
        var photoFileTypes:FileFilter = new FileFilter("Images" + " (" + filter + ")", filter);
        file.browse(new Array(photoFileTypes));
}
 
function file_select(event:Event):void
{
        file.load();
}
 
function file_complete(event:Event):void
{
        uiLoader.addEventListener(Event.ENTER_FRAME, checkContent);
        uiLoader.loadBytes(file.data);
}
 
function checkContent(event:Event):void
{
        if (uiLoader.content != null)
        {
                uiLoader.removeEventListener(Event.ENTER_FRAME, checkContent);
                load_complete();
        }
}
 
function load_complete():void
{
        trace("load_complete");
}


Antisly 31.12.2008 01:37

Сделал по-другому: использую Loader.loadBytes(), отслеживаю Event.COMPLETE, делаю что надо, а затем присваиваю этот лоадер свойству source у UILoader :)

Gida102 04.01.2009 14:02

Цитата:

Сообщение от Antisly (Сообщение 787488)
Сделал по-другому: использую Loader.loadBytes(), отслеживаю Event.COMPLETE, делаю что надо, а затем присваиваю этот лоадер свойству source у UILoader :)

можеш показати що вийшло?

Antisly 05.01.2009 15:55

Вложений: 1
Цитата:

Сообщение от Gida102 (Сообщение 788027)
можеш показати що вийшло?

Пожалуйста...


Часовой пояс GMT +4, время: 11:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.