前回の続き。
あるクラスのインスタンスが複数の時。
シングルトンじゃない感じになりますけど。
以前はそのままインスタンスを返していましたが、
今度はインスタンスを配列に保存して返すだけ。
まず一つ目。ソース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を目印にして保存
ってやりましたが、ここらへんは
どういう風にインデックスを付けるがいいんですかね。
そのまま名前でつけるとか。もっといい方法ありそう。
RSS feed for comments on this post · TrackBack URI
Leave a reply