// forked from hacker_ij9oiq_p's flash on 2010-2-11 package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class FlashTest extends Sprite { private var _tf:TextField; public function FlashTest() { _tf = new TextField; _tf.autoSize = TextFieldAutoSize.LEFT; _tf.text = "ここに数字が表示されます。"; addChild(_tf); //直径 var radius:Number = 10.0; //横の間隔 var marginWidth:Number = 5.0; //縦の間隔 var marginHeight:Number = 15.0; //ボタンの数 var l:int = 5; for (var i:int = 0; i < l; i++) { var sp:Sprite = createCircle(radius); sp.buttonMode = true; sp.x = ((sp.width + marginWidth) * i) + radius; sp.y = _tf.height + marginHeight; addChild(sp); //方法その1 //イベントリスナーに引数を渡してしまう sp.addEventListener(MouseEvent.CLICK, onClickHandler(i)); //ふつうはこれでいいんだけど、メソッドを増やしたくない夜もある… } } private function onClickHandler(idNumber:int):Function { return function(e:MouseEvent):void { _tf.text = "このボタンナンバーは " + idNumber + "です。"; } } private function createCircle(radius:Number = 10.0, color:uint = 0xFF0000):Sprite { var sp:Sprite = new Sprite(); var g:Graphics = sp.graphics; g.beginFill(color); g.drawCircle(0, 0, radius); g.endFill(); return sp; } } } 方法その1:イベントリスナに引数を渡してやる