函数内的调用函数 - Flash Actionscript 2.0

时间:2008-09-02 20:25:55

标签: flash actionscript actionscript-2

我在将一些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 个答案:

答案 0 :(得分:2)

您是否被迫在parentFunction内声明callMe?我假设是这样,否则你只会这样做

function parent(){} function callMe(){}

要明确的是,除非您为该函数提供一些范围,否则函数不能拥有其他函数。

所以在JavaScript中,你可以通过使用prototype对象将callMe函数声明为parentFunction返回的对象的方法来实现。

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

对于ActionScript,请阅读Adobe网站上的这篇文章: http://www.adobe.com/devnet/flex/articles/as_collections_03.html

编辑:经过一些阅读之后,你会看到你做事的方式,你实际上是将callMe声明为私人功能。请参阅此文章,这应该使整个private/public javascript issue更容易理解。

答案 1 :(得分:0)

我是个白痴。我忘了整个“一个函数不能拥有另一个函数”的东西,所以我想出了另一种方法。谢谢!

答案 2 :(得分:0)

当然,一个功能可以“拥有”另一个功能。这是ECMAScript的记忆。只需在函数内声明一个变量并为其分配一个函数。然后,您可以使用“调用”方法调用您的函数。

function foo() {     追踪( “富”);

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

bar.call();

}

FOO();

答案 3 :(得分:0)

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

答案 4 :(得分:0)

抱歉英文不好, 为(菜单 - )按钮设置处理程序,其位于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”)@ first frame:

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

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

返回testbtn.name

编辑:哦,这是为了AS3,但也许有帮助!