Форум 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)
-   -   onPress+Delegate (http://www.flasher.ru/forum/showthread.php?t=94776)

CorC 19.04.2007 16:35

onPress+Delegate
 
Здавствуйте, многоуважаемые.
Есть такая проблемма, часа 2 уже бьюсь. Есть класс, его прилепляю к мувику в котором есть другой мувик, и на вложенный мувик на onPress надо создавать Delegate. Создается отлично и переменные класса видит, но почему то не видит тот объект от которого вызывался.
Код:

import mx.utils.Delegate;
class TTT extends MovieClip {
        var button1:MovieClip;//есть такая кнопка в мувике
        public function TTT(){
                this.button1.onPress=Delegate.create(this,Button1Press);//delegate собственно
        }
        function Button1Press(ThisO:Object){
                this.button1._x=0;//видит, понятно почему, и двигает в 0
                ThisO.gotoAndStop(2);//очень надо с ним пообщаться :)
                trace(ThisO);//undefined, просто, а не [object]
        }
}

Помогите, пожалуйста, чем можете :) Что я не так пишу?

iNils 19.04.2007 16:41

Код:

/**
 * Класс ru.inils.util.Delegate, модифицированный mx.utils.Delegate. Выполнение функции в заданной области видимости с передачей параметров.
 *
 * @author        iNils
 * @version        1.0
 * @see                mx.utils.Delegate
 */
class ru.inils.util.Delegate extends Object {
        /**
        * Передача событий от любого объекта к любому объекту.
        *
        * @usage                        public static create (obj:Object, func:Function, arg:Array) : Function
        * @param        obj                Object - Объект, целевая область видимости.
        * @param        func        Function - Метод, обработчик данного объекта.
        * @param        arg                Array [дополнительный параметр] - Массив передаваемых аргументов.
        * @return  Function        - Функция обработчик.
        */
        public static function create (obj:Object, func:Function, arg:Array):Function {
                var f = function () {
                        var targetTemp = arguments.callee.target;
                        var funcTemp = arguments.callee.func;
                        var argTemp = arguments.callee.arg;
                        return funcTemp.apply (targetTemp, argTemp);
                };
                f.target = obj;
                f.func = func;
                f.arg = arg;
                return f;
        }
}

Код:

import ru.inils.util.Delegate;
class TTT extends MovieClip {
        var button1:MovieClip;
        //есть такая кнопка в мувике
        public function TTT () {
                this.button1.onPress = Delegate.create (this, Button1Press, [{x:5, y:6}]);
                //delegate собственно
        }
        function Button1Press (ThisO:Object) {
                this.button1._x = 0;
                //видит, понятно почему, и двигает в 0
                ThisO.gotoAndStop (2);
                //очень надо с ним пообщаться :)
                trace (ThisO.x);
                //undefined, просто, а не [object]
        }
}


etc 19.04.2007 16:57

Ужыс.

iNils, по-моему, это не совсем то.

CorC, в onRelease никаких параметров не передается. Ты же можешь обратиться к button1, так ведь? Что ещё нужно?

CorC 19.04.2007 17:05

Как ни странно, работает :) Спасибо, а я велосипед изобретал 2 часа...


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

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