Вызов функций внутри функции - Flash Actionscript 2.0
-
09-06-2019 - |
Вопрос
Я пытаюсь вызвать функцию после загрузки некоторого 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, но, возможно, это поможет!