【问题标题】:Execute Actionscript class function from mxml从 mxml 执行 Actionscript 类函数
【发布时间】:2013-02-26 19:38:47
【问题描述】:

我需要使用 OSMF 创建一个视频播放器。我想将我们的 mxml 文件与 actionscript 文件分开。我怎样才能做到这一点 ?我有一个 actionscript 类文件,我想在加载 mxml 时执行它的构造函数。

我添加了 creationComplete="initApp()" 并在 initApp 上调用 var p = new myclass(); 。现在在 myclass() 我正在尝试以编程方式添加标签

my_player.mxml

<?xml version="1.0" encoding="utf-8"?>
<!-- controls\videoplayer\VideoPlayerSimple.mxml-->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="initApp()"
               >
    <fx:Script>
        <![CDATA[
            public function initApp(){
                var p = new my_player("a");
            }
        ]]>
    </fx:Script>

</s:Application>

my_player.as

   package 
{
    import mx.controls.Label;
    import mx.core.Application;
    import mx.events.FlexEvent;
    import spark.components.Application;
    public class my_player extends spark.components.Application
    {
        public function convey_player(a:String){
            var label:Label = new Label();
            label.text = "Testxxx";
            addElement(label);
                    Alert.show("Hello");

        }
    }
}

但是什么都没有添加到 flash 中。我错过了什么吗?

【问题讨论】:

    标签: flash apache-flex mxml osmf


    【解决方案1】:

    构造函数只会在创建对象 js 的实例时运行。如果要运行构造函数代码,则必须创建它的实例。在您的 MXML 文件中为 creationComplete 事件添加一个事件侦听器,并在那里创建您的 ActionScript 对象的一个​​实例。

    这将在 MXML 代码作为其组件生命周期的一部分完成其创建过程后有效地执行 ActionScript 类构造函数代码。

    【讨论】:

    • 我已根据您的指南进行了编辑并添加了有问题的更改,您可以检查一下吗?谢谢!
    • 我看到 Alert Hello 但标签未添加到 flash 中。
    • Flex 应用程序中通常不会有两个应用程序。我怀疑这可能会导致问题。您添加的标签将不会显示,因为您将其添加到从未添加到显示列表的组件中。在您的 initApp() 中,您需要一个 addElement(p)。您将从阅读 Flex 组件生命周期中受益。 help.adobe.com/en_US/flex/using/… 组件应该在 createchildren() 方法中创建;不在构造函数中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多