Вопрос

Я пытаюсь вызвать функцию после загрузки некоторого 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 просто такой ненадежный!Есть какие-нибудь идеи?

Это было полезно?

Решение

Вы вынуждены объявить 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 гораздо более понятной.

Другие советы

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

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

функция foo() { трассировка ("foo");

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

bar.call();

}

foo();

//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');
}

Извините за плохой английский, Установите обработчик для кнопок (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 "Button" в нем) @ первый кадр:

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

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

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

Изменить. О, это для AS3, но, возможно, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top