In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

ボタンにテキストフィールドを含む場合の注意点

マウスカーソルをボタンの動作(ハンドカーソル)にする
* http://d.hatena.ne.jp/ActionScript/20080927/as3_mouse_cursor_button
* 
* ボタンにテキストフィールドを含む場合の注意点
* テキストフィールドを含む場合これで正常になる _button2.mouseChildren = false;
* _button1はマウスオーバーでハンドカーソルにならない上に、横移動のイベントハンドラにまで反応してしまう
/**
 * マウスカーソルをボタンの動作(ハンドカーソル)にする
 * http://d.hatena.ne.jp/ActionScript/20080927/as3_mouse_cursor_button
 * 
 * ボタンにテキストフィールドを含む場合の注意点
 * テキストフィールドを含む場合これで正常になる _button2.mouseChildren = false;
 * _button1はマウスオーバーでハンドカーソルにならない上に、横移動のイベントハンドラにまで反応してしまう
 */
package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	
	[SWF(width = 465, height = 465, backgroundColor = 0x94e4e8, frameRate = 30)]
	
	public class MouseCursor3 extends Sprite 
	{
		private var _scx:Number;
		private var _scy:Number;
		private var _button1:Sprite;
		private var _button2:Sprite;
		private var _txtfmt:TextFormat;
		private var _txtfld1:TextField;
		private var _txtfld2:TextField;
		
		public function MouseCursor3():void 
		{
			_scx = stage.stageWidth * 0.5;
			_scy = stage.stageHeight * 0.5;
			
			setup();
			
			this._button1.addEventListener(MouseEvent.CLICK, clickHandler); // 赤ボタン
			this._button2.addEventListener(MouseEvent.CLICK, clickHandler); // 青ボタン
		}
		
		private function clickHandler(event:MouseEvent):void 
		{
			//event.target.rotation += 15;
			
			// TextFieldを回転させると消えちゃうので横移動に修正
			event.target.x -= 5;
			if (event.target.x < (event.target.width * 0.5) * -1)
			{
				event.target.x = _scx;
			}
		}
		
		private function setup():void 
		{
			_button1 = createButton(0xcc0000);
			_button1.x = _scx;
			_button1.y = _scy - _button1.height * 2;
			_button1.buttonMode = true;
			this.stage.addChild(_button1);
			
			_button2 = createButton(0x0000cc);
			_button2.x = _scx;
			_button2.y = _scy + _button2.height * 2;
			_button2.buttonMode = true;
			_button2.tabEnabled = false;
			_button2.mouseChildren = false; // ココ!
			this.stage.addChild(_button2);
			
			_txtfmt = new TextFormat("Times New Roman", 20, 0xffffff);
			
			_txtfld1 = new TextField();
			_txtfld1.x -= _txtfld1.width * 0.5;
			_txtfld1.y -= 13;
			_txtfld1.defaultTextFormat = _txtfmt;
			_txtfld1.autoSize = TextFieldAutoSize.CENTER;
			_txtfld1.selectable = false;
			_txtfld1.text = "mouseChildren = true";
			this._button1.addChild(_txtfld1);
			
			_txtfld2 = new TextField();
			_txtfld2.x -= _txtfld2.width * 0.5;
			_txtfld2.y -= 13;
			_txtfld2.defaultTextFormat = _txtfmt;
			_txtfld2.autoSize = TextFieldAutoSize.CENTER;
			_txtfld2.selectable = false;
			_txtfld2.text = "mouseChildren = false";
			this._button2.addChild(_txtfld2);
		}
		
		private function createButton(color:uint):Sprite
		{
			var button:Sprite = new Sprite();
			button.graphics.beginFill(color);
			button.graphics.drawRoundRect( -100, -25, 200, 50, 30);
			button.graphics.endFill();
			return button;
		}
		
		
	}
	
}