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