Search code examples
actionscript-3flashflex4flashdevelop

Sprites are disappearing in AS3


I have this class structure below

 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 */}
 }

The problem that appears is the sprite of MyObject dissapears when I do this with MySecondObject and MyThirdObject

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

MyObject still exists in memory but I cannot see it on the stage. WTF ??? :)

To make it clear I dont remove anything from the stage with removeChild().

The problem I try to solve is I want to have accessors to update state of MyObject from MySecondObject and MyThirdObject


Solution

  • Problem solved. I changed to add all children on stage like this.stage.addChild(child) instead of this.addChild(child) so now it works and it show all objects on the stage, after start/stop