0

私は少し困惑しています。関数を参照するだけで、fx:Scriptタグ内で関数を呼び出すことができると思いました(以下のコードのように「display_album()」)。その関数呼び出しを中括弧の外側に置くことは理にかなっていますが、そうすると、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 に答える