Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать параметр обработчику событий (http://www.flasher.ru/forum/showthread.php?t=182493)

babuia 24.07.2012 21:37

Как передать параметр обработчику событий
 
Здравствуйте.
Пишу код который взял бы выбранные фото и отправил бы их в JS, и столкнулся с проблемой, не знаю как передать переменную i. С помощью пользовательских событий так ничего и не смог придумать, пробовал и другие варианты но так ничего и не вышло.

Код AS3:

public function onSelect(e:Event):void
{
    /* files это объект FileReferenceList */
 
    for(var i:int = 0; i < files.fileList.length; i++)
    {
        files.fileList[i].addEventListener(Event.COMPLETE, onFileLoaded);
        files.fileList[i].load();
    }
}
 
public function onFileLoaded(e:Event):void
{
    /* Тут байт массив передается виде строки */
 
    ExternalInterface.call("get_photo", Base64.encode(files.fileList[i].data)); // Как получить переменную i из функции onSelect
}

Если сделать переменную i глобальной на уровне класса, то функция onFileLoaded получит значения i на текущий момент а не на момент отправки.

Есть ли какой нибудь способ сделать что-то типа этого?
Код AS3:

files.fileList[i].addEventListener(Event.COMPLETE, onFileLoaded(i));


illuzor 24.07.2012 22:19

Код AS3:

public function onFileLoaded(e:Event):void 
{
    ExternalInterface.call("get_photo", Base64.encode(e.target.data)); // переменная i тут не нужна
}

Если не прокатит:
Код AS3:

Base64.encode ... ((e.target as YourType).data) ... // YourType - ваш тип данных, который в массиве files.fileList


bav 24.07.2012 22:40

Почитайте у -De-

gagaga 25.07.2012 00:20

Код AS3:

public class CustomEvent extends Event {
      public static var MY_CUSTOM_EVENT:String = "myCustomEvent";
      public var myCustomEventParameter:Number;
      public function CustomEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, ...params) {
            super(type, bubbles, cancelable);
            switch(type) {
                  case MY_CUSTOM_EVENT:
                        myCustomEventParameter = params[0];
                        break;
            }
      }
}

диспатчится так:
Код AS3:

dispatchEvent(new CustomEvent(CustomEvent.MY_CUSTOM_EVENT, 25.01)); // 25.01 ваш параметр

Добавлено через 6 минут
копипастм не копипастте, писал на коленке

expl 25.07.2012 00:34

Опять 0_o
http://www.google.ru/search?q=site%3...82%D0%B8%D0%B9
Этот вопрос просто преследует этот форум.

dimarik 25.07.2012 00:44

Цитата:

Сообщение от expl (Сообщение 1089823)
Опять 0_o
http://www.google.ru/search?q=site%3...82%D0%B8%D0%B9
Этот вопрос просто преследует этот форум.

Результатов: примерно 183 (0,10 сек.)

babuia 26.07.2012 20:31

E.target конечно работает но он не решает задачу целиком, дело в том что задачу я
упростил, и получилось что с упрощенным вариантом(описанный здесь) он справляется а в целом нет,
вообщем это мой косяк.
Для того чтоб решить задачу мне нужно ответить на другой вопрос - задам его в другой теме.
Всем спасибо.


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

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