【问题标题】:Calling a method from a mxml component that is created from an as3 class?从 as3 类创建的 mxml 组件调用方法?
【发布时间】:2011-06-16 16:15:00
【问题描述】:

好吧,我一直只是在 as3 而不是 mxml 中开发我的项目,我通常只是将我的应用程序设置为运行一个主 actionscript 文件作为我的主文档根目录,有点像你在 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');
}

我的问题是,我如何在 &lt;fx:Script&gt; 标签之间的 call_from_outside() 函数中调用该函数 hitme()

我这样做的原因是因为我有一些 flash swfs 我加载到另一个 swf 文件中,我可以访问这些 flash swfs 的顶级公共功能,但是 flash builder/flex swfs 的顶级是主 mxml 文件而不是我的假 as3 类根。当然,我应该认为有一种方法可以访问 mxml 组件的 as3 类方法,但是为了保持相同的结构,我可以绕过修改我的加载程序脚本。有人有想法吗?

【问题讨论】:

    标签: actionscript-3 mxml flash-builder


    【解决方案1】:

    (请注意,我在下面更改了您的结束标记。如果您忽略它会令人头疼)。

    看起来您需要做的就是为您的自定义类添加一个 ID:

    <com id="myCustomClass">
        </com:MyAS3DocClass>
    

    然后您可以简单地将该值作为脚本标签内的变量名访问:

            public function call_from_outside():void
            {
                myCustomClass.hitme();
                //other stuff
            }
    

    这就是为什么!

    在 MXML 文件中为标签分配 ID 时,与将 public var &lt;your-variable-name-here&gt;:&lt;tag-class&gt; 添加到 AS 文件中的操作相同(当然这是由编译器完成的,因此您无需关心)。一旦将 ID 分配给 MyAS3DocClass,它就会立即成为可公开访问的变量。一旦它成为可公开访问的变量,就可以在公共、受保护、内部、命名空间和私有函数中使用!

    如果您不喜欢这个想法并且您的自定义类是 DisplayObject,您也可以这样做:

    <com:MyAS3DocClass name="myCustomClass" />
    

    那么,在脚本标签中:

            public function call_from_outside():void
            {
                MyAS3DocClass(getChildByName("myCustomClass")).hitme();
                //other stuff
            }
    

    【讨论】:

    • 啊对,就这么简单?很酷。,是的,就是这么简单的哈哈欢呼芽
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2010-12-10
    • 2010-12-08
    • 1970-01-01
    • 2018-09-27
    • 2010-11-03
    相关资源
    最近更新 更多