[ActionScript 3.0] 透明なオブジェクトをマウスの当たり判定用に使う

マウスイベント(MouseEvent)はSpriteクラスからディスパッチされるが、Spriteは任意でサイズを変更したり背景色を変更したりできない。

そこでよくメンバのgraphicsを使ったりShapeクラスを入れ子にしたりするが、それを透明にした場合の注意点。

			var spr:Sprite = new Sprite;
			spr.addEventListener(MouseEvent.CLICK, onClick);
			
			var shape:Shape = new Shape;
			spr.addChild(shape);
			
			// これではマウスイベントが反応しない
			shape.graphics.beginFill(0, 0);
			
			// beginFillなどを使う場合は、あくまでalphaを0より大きくする
			shape.graphics.beginFill(0, 1);
			
			// そしてshapeのalphaを0にする
			shape.alpha = 0;

透明なオブジェクトをマウスイベントの当たり判定用に使う場合は、「Graphics#beginFill(0, 0)」ではなく、かならず「DisplayObject#alpha = 0;」にすると覚えておこう。

ActionScript 3.0,Flash

Posted by takasho