【问题标题】:calling a function in the <fx:Script> tags在 <fx:Script> 标签中调用函数
【发布时间】:2013-07-07 00:50:00
【问题描述】:

我有点难过。我认为可以通过引用函数(“display_album()”,如下面的代码)来调用 fx:Script 标记中的函数。在大括号之外调用该函数是有意义的,但是当我这样做时,FlashBuilder 中的调试器会给我 1180 错误,调用一个可能未定义的方法。

我可以通过单击按钮调用该函数(这也很有意义),并且我在 FlashBuilder 调试器中获得了正确的跟踪。

但我很好奇如何在不添加按钮的情况下调用标签中的函数。谢谢!

 <?xml version="1.0" encoding="utf-8"?>
<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" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[

            public function display_album():void
            {
                var album:String = "The White Album";
                trace (album);

            }

            display_album();

        ]]>
    </fx:Script>
    <s:Button x="192" y="259" label="Button" click = "display_album()"/>

</s:Application>

【问题讨论】:

    标签: actionscript-3 function call mxml


    【解决方案1】:
    <?xml version="1.0" encoding="utf-8"?>
    <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" minWidth="955" minHeight="600"
               initialize="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    
    <fx:Script>
        <![CDATA[
            private function init():void
            {
              display_album();
            }
    
            public function display_album():void
            {
                var album:String = "The White Album";
                trace (album);
    
            }
    
        ]]>
    </fx:Script>
    <s:Button x="192" y="259" label="Button" click = "display_album()"/>
    

    我希望这会有所帮助。

    【讨论】:

    • 嗨,马克,谢谢 - 我有同样的想法,之前尝试过你的方法,但它仍然不起作用:(我应该在点击调试后立即看到跟踪运行,而无需单击按钮 -但是,没有运气。谢谢!
    • Pranav 和 Mark,谢谢,这确实有效 - 我的错误,我忘记在应用程序顶部添加 initialize = init() 代码!
    【解决方案2】:

    你不能像那样调用实例函数,因为它在构造函数被调用之前运行。由于实例本身还没有被初始化,所以这个函数没有范围可以执行。只能在调用构造函数之前调用类函数。

    您可以通过static关键字将方法转换为类方法(在这种情况下可能不对),或者在creationComplete事件上触发此方法。

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多