AS3 Доступ к методам динамически создаваемого мувиклипа - PullRequest
0 голосов
/ 29 июня 2011

Как получить доступ к методам динамически создаваемого мувиклипа / объекта?

Для простоты я не опубликовал код о том, как динамически создавал мувиклип. Вместо этого предположим, что он уже создан. Это объект. Это называется field_2. Ниже на него ссылается использование getChildByName ('field_' + field.id);

Check_box_component.as

public var testVar:String = 'test';   

public function testReturn()
{
    return 'value returned';
}

Main.as

var temp:MovieClip = MovieClip(getChildByName('field_' + field.id));
trace(temp);
trace(temp.testReturn);
trace(temp.testVar);

Выход:

[object Check_box_component]
function Function() {}
test

Когда я отслеживаю temp.testReturn , почему отображается « function Function () {} » вместо « возвращенное значение »?

Эта ссылка ниже помогла мне понять это.

http://curtismorley.com/2007/06/13/flash-cs3-flex-2-as3-error-1119/

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Существует различие между ссылкой на функцию и вызовом функции.Круглые скобки '()' являются признаком оператора ActionScript.Они говорят компилятору: «Пожалуйста, попробуйте позвонить тому, что было позади нас».Или, по крайней мере, я надеюсь, что они такие вежливые.

Функция в ActionScript - это объект, как и все остальное.Член класса Function.Вы можете передавать его ссылку туда и обратно, вы даже можете вызывать его методы, такие как call () или apply ().

Если вы хотите использовать вызов, а не ссылку, вы должны использовать оператор вызова.

trace (temp.testReturn ());

EDIT Вы приняли ответ, когда я печатал, извините за дубликат ответа.

1 голос
/ 29 июня 2011

вы пробовали: trace (temp.testReturn ());... вместо вашего следа (temp.testReturn);...?

Я думаю, у вас будет ожидаемый результат.

На самом деле, когда вы выполняете "temp.testReturn", вы не вызываете функцию.Вам нужно добавить круглые скобки, чтобы сделать фактический вызов.

Когда вы выполняете трассировку temp.testReturn, функция не выполняется: функция трассировки сообщает вам тип temp.testReturn, который здесь правильновозвращается как тип «функция».

...