Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Передача параметров через Delegate? (http://www.flasher.ru/forum/showthread.php?t=105915)

marat_sa 26.12.2007 19:46

Передача параметров через Delegate?
 
Здравствуйте. Тут возник такой вопрос: можно ли через 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...1&postcount=33

Foristel 25.03.2008 11:45

Передача параметров через scopeObject
 
параметры передаются через 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();



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

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