ボタンにテキストフィールドを含む場合の注意点
マウスカーソルをボタンの動作(ハンドカーソル)にする
* 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;
}
}
}