ホーム >> 左脳Script >> Adobe Flash >> Action Script >> Action Script 3 で 自作Button

Action Script 3 で 自作Button


ボタン。
内部構造としては、基礎となるSpriteに「ボタン主機能のSimpleButton」と「ラベルのTextField」を乗せているだけです。 以下用法仕様。

仕様

コンポーネント使用に当っての仕様。Button自体は、Spriteを継承して作られています。
Button 仕様
コンストラクタ
ラベル:Stringボタンの文字列。HTMLの指定が可能。内部でTextFieldのHtmlTextに設定される。
幅:Numbeコンポーネント幅。デフォルトは100。
高さ:Numberコンポーネント高さ。デフォルトは20。
プロパティ
html:StringラベルのHTML文字列。
text:Stringラベルの表示文字列。読み取りのみ。
enable:Boolean有効/無効指定。無効にすると表示はグレーアウトされ、イベントが抑制される。
width:Numberコンポーネント幅。
height:Numberコンポーネント高さ。
イベント
MouseEvent.CLICKマウスクリック時。ボタンの有効/無効状態(enableプロパティ)に連動する。
MouseEvent.MOUSE_UPマウスのボタンが離された時。ボタンの有効/無効状態(enableプロパティ)に連動する。
MouseEvent.MOUSE_DOWNマウスのボタンが押された時。ボタンの有効/無効状態(enableプロパティ)に連動する。


デモサンプル

"This is Button Sample Flash."
左部の Enable チェックで、右部のボタンの有効/無効を制御できます。

MouseEvent.CLICKイベント、MouseEvent.MOUSE_UPイベント、MouseEvent.MOUSE_DOWNイベント、のカウンターを設置してあります。それぞれのイベントのタイミングで数値が変化します。(CLICKイベントとMOUSE_UPイベントが同じタイミングになってしまうのはAction Script 3、Flash の仕様です)

Enable チェックにより、無効にされたボタンから、上記のイベントが抑制されているのが動作とソースからわかると思います。

この機構を実現するに当り、以下の記事を参考にしました。
  • ボタンのイベント抑止に関して。「バブリングイベントのイベント伝播抑止」のコード実例(stopImmediatePropagationに関する記述)を参考にしました。
    イベント抑止参考:http://blog.flair4.jp/2008/05/as30-mouseeventclick.html


以下、デモ用コード。

//  Buttonデモ
private var cb:CheckBox;
//
private var btn:Button;
private var tfbu:TextField;
private var tfbd:TextField;
private var tfbc:TextField;
private var btn_up_counter:int  =   0;
private var btn_down_counter:int    =   0;
private var btn_click_counter:int   =   0;
private function demo():void 
{
    cb  =   new CheckBox(<font size = "12" >Enable</font>.toXMLString(),true);
    addChild(cb);
    cb.addEventListener(Event.CHANGE, button_enable);
    //
    tfbc    =   new TextField();
    tfbc.x  =   0;
    tfbc.y  =   20;
    tfbc.width  =   100;
    tfbc.height =   20;
    tfbc.text   =   "Click:0";
    addChild(tfbc);
    //
    tfbu    =   new TextField();
    tfbu.x  =   0;
    tfbu.y  =   40;
    tfbu.width  =   100;
    tfbu.height =   20;
    tfbu.text   =   "Up:0";
    addChild(tfbu);
    //
    tfbd    =   new TextField();
    tfbd.x  =   0;
    tfbd.y  =   60;
    tfbd.width  =   100;
    tfbd.height =   20;
    tfbd.text   =   "Down:0";
    addChild(tfbd);
    //
    btn =   new Button("Button");
    addChild(btn);
    btn.x   =   100;
    btn.addEventListener(MouseEvent.CLICK, button_click);
    btn.addEventListener(MouseEvent.MOUSE_UP, button_up);
    btn.addEventListener(MouseEvent.MOUSE_DOWN, button_down);
}
private function button_enable(e:Event):void 
{   //  コントロールの有効/無効
    btn.enable  =   cb.check;
}
private function button_click(e:Event):void 
{   //  ボタン:クリックイベント
    btn_click_counter++;
    tfbc.text   =   "Click:"+btn_click_counter.toString();
}
private function button_up(e:Event):void 
{   //  ボタン:マウスアップイベント
    btn_up_counter++;
    tfbu.text   =   "Up:"+btn_up_counter.toString();
}
private function button_down(e:Event):void 
{   //  ボタン:マウスダウンイベント
    btn_down_counter++;
    tfbd.text   =   "Down:"+btn_down_counter.toString();
}


ソース

デモを含めたコンポーネントパッケージのソースはこちらで公開しています。
>> Action Script 3 の U/Iコンポーネント



トラックバック(0)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/133

コメントする

ホーム >> 左脳Script >> Adobe Flash >> Action Script >> Action Script 3 で 自作Button

アーカイブ

このブログ記事について

このページは、n-yagiが2009年6月 1日 18:57に書いたブログ記事です。

ひとつ前のブログ記事は「Action Script 3 で 自作RadioButton」です。

次のブログ記事は「Action Script 3 で 自作ScrollBar」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。