0

AS3コンパイラエラーに関してウェブ上に百万の質問があることを私は知っています1120: Access of undefined property <property>、しかしこの場合はただ奇妙です。

Flex 4.6でコンポーネントのスキニングを<s:Application>行っており、スキンMXMLファイル内にいます。行super.addEventListener(Event.ADDED_TO_STAGE, positionObjects);は私に言っている問題を与えています:1120: Access of undefined property positionObjects。ただしpositionObjects、そのすぐ下で宣言されます。何が問題なのか分かりますか?

<fx:Script>
    <![CDATA[
        /**
         *  @private
         */
        override protected function updateDisplayList(unscaledWidth:Number, 
            unscaledHeight:Number) : void
        {
            bgRectFill.color = getStyle('backgroundColor');
            bgRectFill.alpha = getStyle('backgroundAlpha');
            super.updateDisplayList(unscaledWidth, unscaledHeight);
        }

    //Listen for when objects are added to the stage, before positioning them
        [Bindable]
        private var logoX:Number = 0;

        super.addEventListener(Event.ADDED_TO_STAGE, positionObjects);

        private function positionObjects(e:Event):void {
            this.logoX = stage.stageWidth / 3;
        }
    ]]>
</fx:Script>

お時間をいただきありがとうございます。

4

2 に答える 2

2

fx:Script次のように、ブロック内に実行可能な実装を含めることはできません。

<fx:Script>
    super.addEventListener(Event.ADDED_TO_STAGE, positionObjects);
</fx:Script>

これは、作成完了などのライフサイクル関数から呼び出す必要があります。

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
        alpha.disabled="0.5"
        alpha.disabledWithControlBar="0.5"
        creationComplete="skin1_creationCompleteHandler(event)">

    <fx:Script fb:purpose="styling">
        <![CDATA[

            /* your implementation, same as before... */

            protected function skin1_creationCompleteHandler(event:FlexEvent):void
            {
                // move your event listener to this function.
                super.addEventListener(Event.ADDED_TO_STAGE, positionObjects);
            }
        ]]>
    </fx:Script>
</s:Skin>
于 2012-07-15T00:24:03.147 に答える
0

エラーが発生する理由がわかりました。初期化ハンドラの外にイベント リスナを追加できるとは考えていませんでした。何らかの理由で、<fx:Script>インタープリターが手続き型スクリプトを実行するように、AS3 はコンパイルされたタグを介して実行されると考えていました。

繰り返しますが、何らかの理由で、タグにaddedToStage属性を追加して、そこからメソッドを実行させるとは思いませんでした。今はすべて順調です。<s:Skin>positionObjects

于 2012-07-15T00:23:47.900 に答える