Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.04.2010, 21:01
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 21  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
А кастомные события ну никак?

Старый 11.04.2010, 21:28
Artic вне форума Посмотреть профиль Найти все сообщения от Artic
  № 22  
Ответить с цитированием
Artic
Banned

Регистрация: Jun 2009
Сообщений: 298
эээм, а чем не устроил вариант через словарь ?

Старый 11.04.2010, 23:30
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 23  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
На самом деле, как я понял, автор так и не объяснил, ЗАЧЕМ ему это нужно.
Что конкретно он хочет реализовать с помощью передачи параметра? И почему он так уверен, что ему нужно вообще что-то куда-то передавать?

Пока это здорово смахивает на "как мне запустить второй клип из первого, чтобы он запустил третий, а третий снова запустил первый, после чего самоликвидировался, прихватив с собой второй...". Техническое решение найти можно, но в чем смысл этого зоопарка?

Старый 12.04.2010, 00:19
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 24  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Если вам очень нужно больше параметров - не пользуйтесь EventDispatcher - напишите функцию, которая принимает больше параметров и вызовите ее...
слишком сложно получится, насколько я это себе представляю. просто так
Код AS3:
public function addMyEventListener(type:String, listener:Function, 
                                   useCapture:Boolean = false, priority:int = 0,
                                   useWeakReference:Boolean = false,
                                   argument:*=null):void
{
    var handler:Function = function(event:Event):void { listener(argument); };
    super.addEventListener(type, handler, useCapture, priority, useWeakReference);
}
вроде не выйдет, нужно ещё removeEventListner переопределять, хранить где-то функции(var handler:Function)... Или как-то проще можно?


Последний раз редактировалось mickfallout; 12.04.2010 в 00:38.
Старый 12.04.2010, 00:38
MidnightOne вне форума Посмотреть профиль Отправить личное сообщение для MidnightOne Найти все сообщения от MidnightOne
  № 25  
Ответить с цитированием
MidnightOne
 
Аватар для MidnightOne

Регистрация: Jan 2010
Сообщений: 62
Цитата:
Сообщение от mickfallout Посмотреть сообщение
Итого: вместо
Код AS3:
addEventListener(Event.ENTER_FRAME, traceNumEnterFrame(myVar))
писать
Код AS3:
var handler:Function = function(event:Event):void { traceNumEnterFrame(myVar); };
addEventListener(Event.ENTER_FRAME, handler);
и не забывать думать о том что если подписываешься на событие - скорее всего нужно будет и отписаться.
Главное не забыть объявить myVar перед тем как создать handler.


PS: Мне кажется, в любом из предложенных случаев правильнее создать глобальную переменную и не передавать её, а просто записать-прочитать. Почему? А потому, что все эти извращения (и уж тем более кастомная функция - диспетчер событий) занимают больше памяти и процессора, чем одна маленькая переменная. Про оптимизацию забывать не стоит!


Последний раз редактировалось MidnightOne; 12.04.2010 в 00:43.
Старый 12.04.2010, 00:40
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 26  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Сообщение от MidnightOne Посмотреть сообщение
Главное не забыть объявить myVar перед тем как создать handler.
будет ошибка на этапе компиляции, ничего страшного.

Старый 12.04.2010, 04:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 27  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от mickfallout Посмотреть сообщение
слишком сложно получится, насколько я это себе представляю. просто так
Код AS3:
public function addMyEventListener(type:String, listener:Function, 
                                   useCapture:Boolean = false, priority:int = 0,
                                   useWeakReference:Boolean = false,
                                   argument:*=null):void
{
    var handler:Function = function(event:Event):void { listener(argument); };
    super.addEventListener(type, handler, useCapture, priority, useWeakReference);
}
вроде не выйдет, нужно ещё removeEventListner переопределять, хранить где-то функции(var handler:Function)... Или как-то проще можно?
Зачем? Вам же дано:
Функция А вызывает функцию Б с количеством параметров 1 (одна) штука. Это категорически изменить нельзя т.как функцию не вы вызываете - следовательно оставьте ее в покое и напишите другую функцию которая будет вызывать с двумя, тремя, четырьмя и т.д. параметрами. А то, что вы написали - мне вообще не понятно зачем это нужно / что это должно делать.
Я имею в виду вот что:
Код AS3:
function callAnotherFunctionWithTwoParams(f:Function, param0:int, param1:String):void
{
    f(param0, param1);
}
__________________
Hell is the possibility of sanity

Старый 12.04.2010, 09:44
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 28  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Разве сложно создать кастомное собыие? флэщдевелоп их генерит почти автоматически. кастомное событие это просто "оборачивание" любого количества параметров в один объект, только со строгой типизацией.. практически тоже самое как:
Код AS3:
function setPoint1(x:int,y:int)void;
function setPoint2(point:Object)void;
setPoint1(1,2);
setPoint1({x:1,y:2});
__________________
Отряд Котовскага

Старый 12.04.2010, 13:32
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 29  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Код AS3:
function callAnotherFunctionWithTwoParams(f:Function, param0:int, param1:String):void
{
    f(param0, param1);
}
спасибо) что-то такой простой вариант в голову не пришёл...
Цитата:
Сообщение от Котяра Посмотреть сообщение
Разве сложно создать кастомное собыие? флэщдевелоп их генерит почти автоматически. кастомное событие это просто "оборачивание" любого количества параметров в один объект, только со строгой типизацией.. практически тоже самое как:
Код AS3:
function setPoint1(x:int,y:int)void;
function setPoint2(point:Object)void;
setPoint1(1,2);
setPoint1({x:1,y:2});
Не понимаю, как передать в событие данные из того места где подписывается обработчик? Понимаю только как создать своё событие и передать в него данные при генерации(dispatchEvent), как получить эти данные в обработчике.
Код ваш и что он делает - тоже не понял. у меня вообще генерит ошибку
Цитата:
Error: Syntax error: missing left brace ({) before the function body.
function setPoint2(point:Object)void;
а если поправить на
Код AS3:
function setPoint1(x:int,y:int):void;
генерит ошибку
Цитата:
Error: Function does not have a body.
function setPoint1(x:int,y:int):void;
если и тело добавить -
Цитата:
Error #1063: Несоответствие количества аргументов в Main/private:init/setPoint1(). Ожидалось 2, получено 1.

Старый 12.04.2010, 13:46
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 30  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
это был псевдокод.
Цитата:
как передать в событие данные из того места где подписывается обработчик?
не могу представить ситуацию для чего это нужно. опишите задачу. скорей всего задачу можно решить другим способом.
__________________
Отряд Котовскага

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
anonimous function , вложенность

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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