forked from: ダブルクリックとシングルクリックの判定

by djakarta_trap forked from ダブルクリックとシングルクリックの判定 (diff: 44)
Progressionのコマンドを使わせてもらったけど、全然ダメですね。。。
SingleClick と DoubleClick の差がなんなのかを理解しないとダメっぽい。
もっとシンプルかスマートに書く方法あるんでしょうか?
♥0 | Line 55 | Modified 2010-02-27 19:28:39 | MIT License
play

ActionScript3 source code

/**
 * Copyright djakarta_trap ( http://wonderfl.net/user/djakarta_trap )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/durZ
 */

//Progressionのコマンドを使わせてもらったけど、全然ダメですね。。。
//SingleClick と DoubleClick の差がなんなのかを理解しないとダメっぽい。

// forked from dkgkAs's ダブルクリックとシングルクリックの判定

//もっとシンプルかスマートに書く方法あるんでしょうか?

package  
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.utils.Timer;
        import jp.progression.commands.*;
        import jp.progression.commands.lists.*;

	public class ClickTest extends Sprite
	{
		private var _delay:int = 200;
		private var _isDoubleClicked:Boolean = false;

                private var _clickCommand:SerialList;
                private var _clickExecutor:SerialList;
		
		private var _tf:TextField = new TextField();
		
		public function ClickTest() 
		{
			_tf.text = "ステージをクリック or ダブルクリック";
			_tf.width = 300;
                        _tf.autoSize = "left";
                        _tf.wordWrap = true;
			addChild(_tf);

                        _clickCommand = new SerialList();
                        _clickExecutor = new SerialList( null,
                                    0.2,
                                    _clickCommand
                        );
                        
			_init();
		}
		
		private function _init():void
		{
			stage.doubleClickEnabled = true;
			
			stage.addEventListener(MouseEvent.CLICK, _singleClickHandler);
			stage.addEventListener(MouseEvent.DOUBLE_CLICK, _doubleClickHandler);
		}
		
		private function _singleClickHandler(event:MouseEvent):void 
		{
                        
                        _clickCommand.clearCommand(true);
                        _clickCommand.addCommand(
                            function():void{ _tf.appendText("singleClick");}
                         );
                         
                         _clickExecutor.execute();
		}
		
		private function _doubleClickHandler(event:MouseEvent):void 
		{
                        if(_clickExecutor.state == 2) _clickExecutor.interrupt();
                        
                        _clickCommand.clearCommand(true);
                        _clickCommand.addCommand(
                            function():void{ _tf.appendText("doubleClick");}
                         );
                         
                         _clickExecutor.execute();
		}
		
	}

}