Просмотр полной версии : Передача параметров через Delegate?
marat_sa
26.12.2007, 19:46
Здравствуйте. Тут возник такой вопрос: можно ли через Delegate вызвать функцию, сообщив ей определенные параметры. Я видел другой класс Delegate, поддерживающий такой синтаксис:
Delegate.create(scopeObject, function[, param1, param2 ..]);
Где paramN - некие данные передаваемые в вызываемую функцию.
Как я понял из справки, "родной" Delegate такой синтаксис не поддержиавет. Или я ошибаюсь?
CrazyFlasher
26.12.2007, 20:04
вообще можно сделать насильно (как некоторым покажется кривым) таким способом:
btn.onPress = Delegate.create(this, function(){myFunc(param)});
Как я понял из справки, "родной" Delegate такой синтаксис не поддержиавет. Или я ошибаюсь? Не поддерживает.
ps: Могли бы просто открыть Delegate.as, и посмотреть.
marat_sa
26.12.2007, 20:22
Спасибо CrazyFlasher, работает. Будем "насиловать" :) функции этим замечательным способом.
http://www.flasher.ru/forum/showpost.php?p=622661&postcount=33
Foristel
25.03.2008, 11:45
параметры передаются через scopeObject (работает во Flash 8),
насколько это правомочно, мне неизвестно...
var Panel=function(){
...
var Th:Array = [0,0];
Th[0]=this;
Th[1]=mc[i];
mc[i].onPress = Delegate.create(Th, PressBend);
}
var PressBend=function(){
var Th=this;
Th[1].tf.backgroundColor=0x00CCFF;
Th[0].Bend();
}
Напишите свой Delegate. Все так делают ))
общая структура метода не так сложна.
function delegate(scope:Object, handler:Function):Function {
var args:Array = arguments.slice(2);
var reScoped:Function = function (){
return handler.apply(scope, args);
}
return reScoped;
}
var dFunction:Function = function(p1,p2):Void
{
trace(p1+","+p2);
}
var myDelegatedFunction:Function = delegate(this,dFunction,"param1","param2");
myDelegatedFunction();
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.