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
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