0

VideoPod と RemotePod の 2 つのクラスがあります。RemotePod は VideoPod を継承しています。これらのクラスのすべてのコードを表示せずに、基本的にここに VideoPod の一部を示します。

        public function showPanel():void {
            if (!pnl.visible) {
                pnl.visible = true;
                pnl.addElement(removeElement(vg));
            }
        }
                .
                .
                .
<s:Panel id="pnl" width="100%" height="100%" fontWeight="normal" visible="false" />
<s:VGroup id="vg" left="0" resize="onResize()" right="0" top="0" bottom="0">

これが RemotePod の一部です。

        private function onCreationComplete():void {
            m_tmrHeartbeat.addEventListener(TimerEvent.TIMER, checkPulse);

            var arrBtns:Array = new Array(4);
            for (var i:int = 0; i < arrBtns.length; i++) {
                arrBtns[i] = new Button();
                arrBtns[i].width = 28;
                arrBtns[i].height = 25;
                arrBtns[i].top = 10;//-28;
            }

            arrBtns[0].right = 10;
            arrBtns[0].setStyle("icon", Images.PATH + "view-fullscreen-3.png");
            arrBtns[0].addEventListener(MouseEvent.CLICK, maximize);
                .
                .
                .
            for each (var btn:Button in arrBtns) {
                addElement(btn);
            }

            m_lblSize.right = 154;
            m_lblSize.top = 18;//-20;
            m_lblSize.text = FULLSCREEN;
            addElement(m_lblSize);

onCreationComplete() は、RemotePod の creationComplete イベントに対して呼び出されます。数分前、RemotePod のボタンとラベルを実際の MXML に移動しようとしましたが、showPanel() 関数が壊れました。発生していたエラーには、基本的に次のメッセージがありました:「vg is not found in this Group.」(VideoPod は s:Group から継承します。)

理解できない。また、実行時の vg の幅を確認するためのテストを開始しましたが、明らかに 0 のままでした。これを引き起こしているあいまいな言語機能は何ですか? ありがとう!

4

1 に答える 1

1

MXML クラスは、親の MXML サブコンポーネントを継承しません。クラス コンストラクター (.as の場合) または初期化リスナー (.mxml の場合) で純粋な AS3 を使用して Panel と VGroup を作成する必要があります。

protected var pnl:Panel;
protected var vg:VGroup;

private function onInitialize():void
{
    pnl = new Panel();
    //set pnl properties such as width, height...
    addComponent(pnl);

    vg = new VGRoup();
    //set vg properties such as width, height...
    addComponent(vg);
}

別の解決策は、基本クラスにスキンを使用することです。

于 2012-10-13T00:11:17.997 に答える