0

Flashプロジェクトにこのメイン(ドキュメントクラス)があります:

package  {
    import flash.display.MovieClip;
    import flash.events.Event;
    public class main extends MovieClip {

        public function main() {
            var other=new Other(this);
        }
    }   
}

これは他のクラスです:

    package  {
        import flash.display.MovieClip;
        import Clippo;

        public class Other extends MovieClip {
            //
            public function Other(ref) {
                //
                var clippo = new Clippo();
                clippo.name="clippo";
                clippo.x=100;
                clippo.y=100;
                //1
                //ref.addChild(clippo);
                //2
                addChild(clippo);
            }
        }
}

ここで、メインクラスの参照(ref)をOtherに渡し、最初のケースでわかるようにクリップを追加すると、メインからムービークリップクリップを参照できます(メインからgetChildAt(0)は「クリップ」です)。しかし、2番目のメソッド(参照なし)を使用して、メインクラスから同じことを行う方法はありますか?Otherがclippoを作成すると、ステージ上でclippoを見ることができますが、clippoがDisplayListのどこに「存在する」のか理解できません。

4

2 に答える 2

0

この種の問題が発生している場合は、アーキテクチャを再考する必要があるかもしれません。

次のような、自分で物事を簡単にするために従ういくつかのルールを作成します。子要素に子を親に追加させないでください。

あなたのclippoDisplayObjectへの参照を取得する最良の方法は、それに対するgetterメソッドを提供することだと思います。

public function get clippo():Clippo
{
    return this.clippo;
}
于 2011-08-21T21:33:59.240 に答える
0

あなたが何を達成しようとしているのか正確にはわかりませんが、次のようになります。

  1. otherディスプレイリストまたはその子を表示する場合は、ディスプレイリストに追加する必要があります。

    public function main()
    {
        var other:Other = new Other(this);
        addChild(other);
    }
    
  2. rootドキュメントクラスへの参照を渡す代わりにを使用できます。(ディスプレイリストに表示されたら)。

    root.addChild(clippo);
    

    ただし、それをその他に追加する方が理にかなっています。addChild(clippo)

  3. DisplayObjectsを作成する場所はディスプレイリストに影響せず、呼び出すだけで影響を受けますaddChildaddChildドキュメントクラスを呼び出すとroot.addChild、その他を呼び出すと、同じ表示リストになります。

于 2011-08-21T21:43:18.277 に答える