ムービークリップの色の変更

Twitter ツイート Hatena Bookmark ブックマーク

flash.geom.ColorTransformを使えば出来るとのことです。
参考はここ

そこのサイトを参考にムービークリップにMOUSE_OVERしたら色を変えるってのを作ってみました。

サンプル
※btnHome_mcっていうムービークリップがシーンにインスタンスされていると考えてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//カラー設定
var linkOverColor:uint = 0xFF1493;
var linkOutColor:uint = 0x858789;

btnHome_mc.addEventListener(MouseEvent.MOUSE_OVER,etColor(btnHome_mc,linkOverColor));
btnHome_mc.addEventListener(MouseEvent.MOUSE_OUT,etColor(btnHome_mc,linkOutColor));

function etColor(inst:Object,color:uint):Function {
	return function (evt:MouseEvent):void{
		var colorTransform:ColorTransform = inst.transform.colorTransform;
		colorTransform.color = color;
		inst.transform.colorTransform = colorTransform;
	}
}

ポイントとしては、イベントリスナーで呼び出される関数(etColor)の戻り値がFunction型ってところですね。
これによってイベントハンドラーから関数を呼び出す際に引数がわたせてます。
次に、ムービークリップをそのままetColorの引数にいれているってところですね。
オブジェクトが参照型だから、結局そのままデータを渡している感じでさらに動的に関数として設定できるあたりが非常にたすかります。

PHP書いてて参照型のメリットがいまいち見出せない部分があったのですが、ActionScript書いてみて必要性がかなり理解できました。
これをPHPに役立てたたいですねー。
ただ、PHPのオブジェクトってもともと参照型じゃないから確か「&」つけて参照渡ししなきゃだったような。
それはそれでめんどくさい・・・。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。