Форум 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=111742)

Fernando Costa 07.05.2008 02:16

Неадекватный Delegate
 
Собсна вопрос наверное к iNils'у непосредственно.
Так как работаю с классом ru.iNils.Delegate

вот мой код:

Код:

import ru.iNils.Delegate
class  Main extends MovieClip
{       
        function Main(){
       
        this.onRelease = Delegate.create(this,collapse,[Math.random()])
        }
public function collapse($var){
        trace($var)
       
        }       
}

при клике на мув трейс постоянно выдает одно и то же значение.:umnik2: В чем подвох?

iNils 07.05.2008 02:35

это тоже самое, что спрашивать, почему этот код
Код:

a = Math.random()
trace (a)
...
trace (a)

выводит одно и тоже значение.

надо так делать
Код:

import ru.iNils.Delegate
class  Main extends MovieClip
{       
        function Main(){
       
        this.onRelease = Delegate.create(this,collapse,[Math.random/*тут нет скобок*/])
        }
public function collapse($var){
        trace($var())
       
        }       
}


Fernando Costa 07.05.2008 02:55

Ок, что мне делать с этой фигней?
Я не хочу получать в функцию всегда один и тот же параметр
Код:

import ru.iNils.Delegate
class  Main extends MovieClip
{       
        public var isCollapse:Boolean = false;
        function Main(){
                this.onRelease = Delegate.create(this,collapse,[isCollapse])
        }
        public function collapse($var){
                isCollapse = !$var
                trace(isCollapse)
        }
}


iNils 07.05.2008 03:00

Я же написал :) Передавать не значение, а ссылку на метод, а внутри функции, уже вызывать этот метод.

Fernando Costa 07.05.2008 03:37

*продолжая тупить*

и что я с этого получаю, не говоря уже про параметры?

Код:

import ru.iNils.Delegate
class  Main extends MovieClip
{       
        public var isCollapse:Boolean = false;
        function Main(){
                this.onRelease = Delegate.create(this,collapse,[collapseMe])
        }
        public function collapse($var){
                $var()       
        }
        public function collapseMe(){
                trace(isCollapse)//undefined
        }
}


iNils 07.05.2008 03:54

Код:

import ru.iNils.Delegate;
class Main extends MovieClip {
        public var isCollapse:Boolean = false;
        function Main () {
                this.onRelease = Delegate.create (this, collapse, [Delegate.create (this, isCollapse)]);
        }
        public function collapse ($var) {
                $var ();
        }
        public function collapseMe () {
                trace (isCollapse);
        }
}



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

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