好吧,我总是只用as3开发我的项目而不是mxml,我通常只是设置我的应用程序来运行一个主要的actionscript文件作为我的主要doc根,有点像你在flash中如何做但在flash builder中我做这样的事情:
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
.....etcetc
>
<com:MyAS3DocClass>
</com>
<fx:Script>
<![CDATA[
public function call_from_outside():void
{
//Some code stuff here...
}
]]>
</fx:Script>
</s:Application>
现在说MyAS3DocClass中有一个公共函数:
public function hitme():void
{
trace('ouch');
}
我的问题是,如何在hitme()
标记之间的call_from_outside()
函数中调用该函数<fx:Script>
?
我这样做的原因是因为我有一些flash swfs,我加载到另一个swf文件中,我可以访问那些flash swfs的顶级公共函数,但是flash builder / flex swfs的顶层是主要的mxml文件而不是我的假as3类根。当然我应该认为有一种方法可以访问mxml组件的as3类方法,但为了保持相同的结构,我可以绕过必须修改我的加载器脚本。有人有想法吗?
答案 0 :(得分:3)
(请注意,我在下面更改了结束标记。如果省略,会导致令人头疼的事。)
看起来您需要做的就是为自定义类添加ID:
<com id="myCustomClass">
</com:MyAS3DocClass>
然后,您只需将该值作为脚本标记内的变量名称进行访问:
public function call_from_outside():void
{
myCustomClass.hitme();
//other stuff
}
为MXML文件中的标记分配ID时,与将public var <your-variable-name-here>:<tag-class>
添加到AS文件中的情况相同(当然这是由编译器完成的,所以您不需要关心) 。为MyAS3DocClass分配ID后,它立即成为可公开访问的变量。一旦它是一个可公开访问的变量,它就可以用在公共,受保护,内部,命名空间和私有函数中!
如果您不喜欢这个想法并且您的自定义类是DisplayObject,您也可以这样做:
<com:MyAS3DocClass name="myCustomClass" />
然后,在脚本标签中:
public function call_from_outside():void
{
MyAS3DocClass(getChildByName("myCustomClass")).hitme();
//other stuff
}