0

我有点难过。我认为可以通过引用函数(“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>
4

2 回答 2

0

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

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

于 2013-07-07T05:25:17.583 回答
0
<?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()"/>

我希望这有帮助。

于 2013-07-07T02:15:33.973 回答