Вызова функций внутри функции - Flash Actionscript 2.0 - PullRequest
1 голос
/ 03 сентября 2008

Я пытаюсь вызвать функцию после загрузки XML-кода в Actionscript, и мне просто интересно, как я вызываю эту функцию. Пример:

//Function Declarations
function parentFunction()
{
    function callMe()
    {
     textField.text = "lawl";
    }
}

Теперь, как мне вызвать функцию "callMe ()" в другой части кода, например, в функции onRelease?

on(release)
{
callMe(); //doesn't work
parentFunction().callMe(); //doesn't work
parentFunction.callMe(); //doesn't work
}

ActionScript 2.0 просто невероятен! Есть идеи?

Ответы [ 5 ]

2 голосов
/ 03 сентября 2008

Вы вынуждены объявить callMe внутри parentFunction? Я так полагаю, потому что в противном случае вы просто сделали бы

функция parent () {} function callMe () {}

Для ясности, функция не может владеть другой функцией, если вы не предоставите область действия для этой функции.

Таким образом, в JavaScript вы могли бы сделать это, используя объект-прототип для объявления функции callMe как метода объекта, возвращаемого parentFunction.

http://www.howtocreate.co.uk/tutorials/javascript/objects

Для ActionScript прочитайте эту статью на веб-сайте Adobe: http://www.adobe.com/devnet/flex/articles/as_collections_03.html

РЕДАКТИРОВАТЬ: После некоторого прочтения все выглядит так, как вы поступили, вы фактически объявляете callMe как приватную функцию. См. Эту статью, которая должна сделать весь частный / публичный вопрос JavaScript намного более понятным.

0 голосов
/ 13 июля 2010

Извините за плохой английский, Установите обработчик для кнопок (Menu-), которые расположены в MC.

MC «Кнопки» на сцене (с 3 «testbtn» в нем) @ первый кадр:

function SetMethod(Method:Function){
    //trace(Method.call()); 
    //or something like:
    testbtn1.addEventListener(MouseEvent.CLICK, Method);
    testbtn2.addEventListener(MouseEvent.CLICK, Method);
    testbtn3.addEventListener(MouseEvent.CLICK, Method);
}

Сцена (с MC "Butttons") @ первый кадр:

function TheMenuListener(evt:Event):void{
    trace(evt.target.name);

}
...
Buttons.SetMethod(this.TheMenuListener); 

возвращает testbtn.name

Редактировать: О, это для AS3, но, возможно, помогает!

0 голосов
/ 13 ноября 2008
//v--- on the frame
function callMe(){
textArea.text='lawl';
}
//v---- for button
on(release){
callMe();
}

--- or -----

//CUSTOM!!
//v---- on frame
function callMe(say){
textArea.text=say;
}
//v--- for button
on(release){
callMe('lawl');
}
0 голосов
/ 22 сентября 2008

Конечно, функция может «владеть» другой функцией. это ECMAScript помните. Просто объявите переменную внутри вашей функции и назначьте ей функцию. Затем вы можете вызвать свою функцию с помощью метода call.

функция foo () { прослеживать ( "Foo");

var bar = function()
{
    trace("bar");
};

bar.call();

}

Foo ();

0 голосов
/ 03 сентября 2008

Я идиот. Я забыл всю вещь «функция не может владеть другой функцией», поэтому я нашел другой способ сделать это. Спасибо!

...