私はこのクラス構造を以下に持っています
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 の状態を更新するためのアクセサーが必要なことです。