如何从类中调用一些mxml函数?

时间:2011-01-10 21:04:31

标签: actionscript-3 mxml

我有2个文件:带有应用程序的Main.mxml和一个MyObject.as。 我在mxml中创建MyObject的实例,并可以从mxml调用它的每个公共函数。但是如果由于某种原因我需要从MyObject类中调用mxml中声明的某些函数呢?怎么做?我以为我可以将对main.mxml类的引用传递给这个对象,但是我无法弄清楚它究竟是什么类(它继承了Application,对,但它究竟是什么类?)

由于

2 个答案:

答案 0 :(得分:3)

它是Main类型(它采用mxml文件的名称)。您可以为其添加静态变量和getter方法:

private static var _instance : Main;

public static function get instance () : Main {
    return _instance;
}

然后在应用程序完成后让实例引用this

private function applicationCompleteHandler():void
{
    _instance = this;
}

不要忘记在applicationComplete="applicationCompleteHandler"标记中设置<mx:Application>。 之后,您可以从程序中的任何位置调用Main.instance来访问方法和变量。

答案 1 :(得分:0)

如果要在Main.mxml中实例化MyObject类,则还可以通过将方法作为Function传递给对象来完成对Main中方法的访问。

假设您在Main.mxml中有函数:

private function doSomething():*{
  ...
}

在MyObject.as中使用适当的setter:

private var _mainFunction:Function;

public function set mainFunction(f:Function):void
{
    _mainFunction = f;
}

然后,您可以在mxml中实例化MyObject类时传递该方法:

<*:MyObject mainFunction='doSomething'/>

现在,只要您需要,就可以在MyObject.as代码中调用_mainFunction

当然,如果您需要在应用程序上访问多个方法和/或变量,Weltraumpirat的建议会更有效。