Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   addEventListener выполнение сразу (http://www.flasher.ru/forum/showthread.php?t=139652)

wir_wolf 07.05.2010 04:37

addEventListener выполнение сразу
 
Уважаемые форумчани, у меня появился к вам такой вопрос.
Возможно ли сделать так чтобы addEventListener отрабатывал сразу а не только когда Event.COMPLETE
К примеру у меня такая конструкция.
шапка
Код AS1/AS2:

private var object                                                        : Bitmap;

.......
тело
Код AS3:

                private function wrapper(data:Bitmap):Bitmap
                {
                        var bitmap:ByteArray;
                        var loc6:*;
                        trace('На входе размер', (data.loaderInfo.bytesTotal/1000),' байт');
                        var timer_1:int = getTimer();
                        bitmap = data.bitmapData.getPixels(new Rectangle(0,0, data.bitmapData.width, data.bitmapData.height));
                        loc6 = as3_jpeg_wrapper.write_jpeg_file(bitmap, data.bitmapData.width, data.bitmapData.height,quality,quality);
                        trace("JPEG ENCODING: "+(getTimer()-timer_1)+" ms.");
                        trace('На выходе размер', (loc6.length/1000), ' байт');
                        trace('***************************');
                        convecter2(loc6);
                        trace('-------');
                        return object;
                }
 
 
private function convecter(data:ByteArray):void {
var ldr:Loader=new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, pictureComplete);
ldr.loadBytes(data);
 
}
 
private function pictureComplete(e:Event):void {
 var ldr:Loader = Loader(e.target.loader);
 trace(ldr.width, 'x', ldr.height);
 trace((ldr.contentLoaderInfo.bytesTotal/1000000),'MB');
 trace('Это дданые из лоадера');
 object = e.target.content;
//e.target.content.bitmapData будет хранить битмапдату
}

В консоле вижу

Код:

На входе размер 2851.828  байт
setting up as3_jpeg_wrapper library
JPEG ENCODING: 4752 ms.
На выходе размер 876.335  байт
***************************
-------
3264 x 2448
0.876335 MB
Это данные из листенера

То есть addEventListener сработал в самом конце.
Возможно ли сделать так чтобы он отрабатывал сразу при вызове, так как у меня еще куча других функций, которые завязаны на этой.

BlooDHounD 07.05.2010 05:36

addEventListener сработал ровно там, где он у Вас написан. а вот dispatchEvent произошёл "в самом конце". и по другому это никак нельзя сделать.

wir_wolf 07.05.2010 18:25

А как же мне быть в этой ситуации, я уже даже отдельный класс создал, и все ровно без результатно=(

wvxvw 07.05.2010 18:28

А зачем вы переменную loc6 назвали?
:away:

wir_wolf 07.05.2010 19:29

Какая разница?
Проблема то не в переменных..=(

КорДум 07.05.2010 19:46

попахивает декомпилом, нэ?

Gaen 07.05.2010 19:52

Цитата:

Сообщение от wvxvw (Сообщение 906663)
А зачем вы переменную loc6 назвали?
:away:

:D

Цитата:

Проблема то не в переменных..=(
Проблема не в переменных, а в понимании работы асинхронных событий.
Сначала у вас исполняется код, содержащий addEventListener, который подписывается на событие. Потом проходит энное количество времени, возникает событие, и на него срабатывает обработчик. Сделать так, как вы хотите - чтобы обработчик отрабатывал до завершения текущего блока - не получится.

wvxvw 07.05.2010 21:03

Да, еще, на всякий случай, в одном мегабайте миллион байт бывает только тридцать первого июня, ночью :)

wir_wolf 08.05.2010 00:28

Цитата:

Сообщение от wvxvw (Сообщение 906710)
Да, еще, на всякий случай, в одном мегабайте миллион байт бывает только тридцать первого июня, ночью :)

Упс.
Тогда какие еще есть варианты перевести Байт аррей в Битмап дату?

wvxvw 08.05.2010 01:05

А при чем тут одно к другому?
В одном килобайте 1024 байтов, в одном мегабайте 1024 килобайтов.
А у битмапдаты есть метод setPixels().


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

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