PDA

Просмотр полной версии : Неадекватный Delegate


Fernando Costa
07.05.2008, 02:16
Собсна вопрос наверное к 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);
}
}