1

私はこのクラス構造を以下に持っています

 public class Main extends Sprite
 {
       private var myObject:MyObject;
       private var mySecondObject:MySecondObject;
       private var myThirdObject:MyThirdObject;

       public function Main()
       {
            myObject = new MyObject();// also extends sprite
            addChild(myObject );

            mySecondsObject = new MySecondObject(this);
            addChild(mySecondsObject);

            myThirdObject = new MyThirdObject(this);
            addChild(myThirdObject);
       }

       public function getMyObject():MyObject
       {
           return myObject;
       }
 }

 public class MySecondObject extends Sprite
 {
       private var _main:Main;
       private var _myObject:MyObject;

       public function MySecondObject(main:Main)
       {
           _main = main;
           _myObject = _main.getMyObject();              
           // do some stuff with _myObject, add on enter frame listener etc...

       }
       public function start(): { /* do some stuff */}
       public function stop(): { /* do some stuff */}
 }

 public class MyThirdObject extends Sprite
 {
       private var _main:Main;
       private var _myObject:MyObject;

       public function MyThirdObject(main:Main)
       {
           _main = main;
           _myObject = _main.getMyObject();              
           // do some stuff with _myObject, add on enter frame listener etc...

       }
        public function start(): { /* do some stuff */}
       public function stop(): { /* do some stuff */}
 }

表示される問題は、MySecondObject と MyThirdObject でこれを行うと、MyObject のスプライトが消えることです。

 MySecondObject.stop();
 MyThirdObject.start();

MyObject はまだメモリ内に存在しますが、ステージ上には表示されません。なんてこと??? :)

明確にするために、removeChild() を使用してステージから何も削除しません。

私が解決しようとしている問題は、MySecondObject と MyThirdObject から MyObject の状態を更新するためのアクセサーが必要なことです。

4

1 に答える 1

0

問題が解決しました。this.addChild(child) の代わりに this.stage.addChild(child) のようにステージにすべての子を追加するように変更したので、これで機能し、開始/停止後にステージ上のすべてのオブジェクトが表示されます

于 2013-03-12T09:28:51.420 に答える