PDA

Просмотр полной версии : Передача параметров через 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)});

udaaff
26.12.2007, 20:12
Как я понял из справки, "родной" Delegate такой синтаксис не поддержиавет. Или я ошибаюсь? Не поддерживает.

ps: Могли бы просто открыть Delegate.as, и посмотреть.

marat_sa
26.12.2007, 20:22
Спасибо CrazyFlasher, работает. Будем "насиловать" :) функции этим замечательным способом.

iNils
26.12.2007, 21:19
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();
}

bbexp
25.03.2008, 12:19
Напишите свой 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();