前回の続き。

あるクラスのインスタンスが複数の時。
シングルトンじゃない感じになりますけど。
以前はそのままインスタンスを返していましたが、
今度はインスタンスを配列に保存して返すだけ。

まず一つ目。ソースgetInctance2_1.zip(Flaファイル入り)

Btnクラスインスタンスは一つで、
Ballクラスのインスタンスは3つ作りました。
ロールオーバー/アウトでボールクラスインスタンス3つを操ります。

Ballクラス

class Ball extends MovieClip
{
	//poorにこのクラスのインスタンスを保存する
	static private var ballPoor:Array = new Array();
	private function Ball()
	{
		ballPoor.push(this);//自分のパスを配列に保存
		_visible = false;//最初みえません。
	}

	//クラス経由でアクセスするのでstaticな関数。
	static public function getInstacePoor():Array
	{
		return ballPoor;//インスタンスへのパスが入った配列を返す
	}

	public function setVisible(flg:Boolean)//見た目を変える
	{
		_visible = flg;
	}
}

Btnクラス

class Btn extends MovieClip
{
	private var ballPoor:Array;
	private function Btn()
	{
		//Ballクラスのインスタンスへのパスが入った配列を取得
		ballPoor = Ball.getInstacePoor();
	}

	private function onRollOver()//ロールオーバーでBallを全部出します
	{
		//Ballクラスのインスタンス全てに命令
		for( var i in ballPoor )
		{
			ballPoor[i].setVisible(true)
		}
	}

	private function onRollOut()//ロールオーバーでBallを全部消します
	{
		//Ballクラスのインスタンス全てに命令
		for( var i in ballPoor )
		{
			ballPoor[i].setVisible(false)
		}
	}
}

2つ目。ソースこちら。getInctance2_2.zip(Flaファイル入り)

Btnクラスインスタンスも3つにして、
対応するBallクラスインスタンスを操ります。

Ballクラス

class Ball extends MovieClip
{
	//poorにこのクラスのインスタンスを保存する
	static private var ballPoor:Array = new Array();
	private var id:String;
	private function Ball()
	{
		id = _name.substring(4);
		ballPoor[id] = this;//自分のidを目印にして保存
		_visible = false;//最初みえません。
	}

	//クラス経由でアクセスするのでstaticな関数。
	static public function getInstacePoor():Array
	{
		return ballPoor;//Ballクラスのインスタンスへの参照が入った配列を返す
	}

	public function setVisible(flg:Boolean)//見た目を変える
	{
		_visible = flg;
	}
}

Btnクラス

class Btn extends MovieClip
{
	private var ballPoor:Array;
	private var id:String;
	private function Btn()
	{
		id = _name.substring(3);//名前からid決める
		ballPoor = Ball.getInstacePoor();
	}

	private function onRollOver()//ロールオーバーでBallが出ます
	{
		ballPoor[id].setVisible(true)
	}

	private function onRollOut()//ロールオーバーでBallが消えます
	{
		ballPoor[id].setVisible(false)
	}
}
ballPoor[id] = this;//自分のidを目印にして保存

ってやりましたが、ここらへんは
どういう風にインデックスを付けるがいいんですかね。
そのまま名前でつけるとか。もっといい方法ありそう。