Home > ActionScript 3.0 > ActionScript 3.0 :: イベントのデフォルト動作を拒否/定義する Event.preventDefault() / Event.isDefaultPrevented()

ActionScript 3.0 :: イベントのデフォルト動作を拒否/定義する Event.preventDefault() / Event.isDefaultPrevented()

デフォルト動作

ActionScript3.0のイベントアーキテクチャには、デフォルト動作と呼ばれる副次的な処理が登録されているものがあります。代表的なものにTextEvent.TEXT_INPUTがあり、ユーザーがTextField内でキー入力をすると、自動的に文字列が追加されるのはこのためです。

Event.preventDefault()

このようなデフォルト動作は、実は拒否(実行させない)することが出来ます。
それが、Event.preventDefault()メソッドです。このインスタンスメソッドは、イベント送出後、リスナー関数がイベントをキャッチした段階で呼び出す事で、そのイベントがもつデフォルト動作を拒否することが出来ます。

var textfield:TextField = addChild(new TextField()) as TextField;
textfield.type = TextFieldType.INPUT
textfield.addEventListener(TextEvent.TEXT_INPUT,textInputHandler)

private function textInputHandler(e:TextEvent):void {
	e.preventDefault()//文字入力の自動化を拒否!
}

Event.isDefaultPrevented()

イベントのデフォルト動作は、カスタムイベントでも実装することが可能です。そのキーとなるのがEvent.isDefaultPrevented()メソッドです。カスタムイベントについての詳細は割愛しますが、ポイントとしてはイベントオブジェクトを生成時にEvent.cancelableプロパティをtureにし、デフォルト動作無効可能であることを明示的にします。次に、Event.dispatchEvent()メソッドでイベントを送出後、Event.isDefaultPrevented()メソッドを呼び出し、リスナー関数内でEvent.preventDefault()が呼び出されていない...つまりデフォルト動作が拒否されていない事を確認します。拒否されていない場合、Event.isDefaultPrevented()はfalseを返すので、その中でデフォルトで実行される処理を書けばよいわけです。下記に、サンプルです。

package {
	import flash.display.MovieClip;
	public class TestExample extends MovieClip {
		
		public function TestExample():void {
			addEventListener(CustomEvent.EXAMPLE, exampleHandler)
			var e:CustomEvent = new CustomEvent(CustomEvent.EXAMPLE, false,true);
			dispatchEvent(e)
			
			//デフォルト動作処理
			if (!e.isDefaultPrevented()) {
				//デフォルト動作を記述
			}
			
		}
		
		private function exampleHandler(e:CustomEvent):void {
			//デフォルト動作の拒否
			e.preventDefault();//このメソッドが呼び出されているとデフォルト動作は動かない。
		}
		
	
	}
	

}
import flash.events.Event;
class CustomEvent extends Event {
	public static const EXAMPLE:String = "example"
	public function CustomEvent(type:String = null, bubbles:Boolean = false, cancelable:Boolean = false):void {
		super(type, bubbles, cancelable)
	}
}

バナー:小林茂に学ぶFIOモジュール入門ワークショップ

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://xingxx.com/mt/mt-tb.cgi/61
Listed below are links to weblogs that reference
ActionScript 3.0 :: イベントのデフォルト動作を拒否/定義する Event.preventDefault() / Event.isDefaultPrevented() from xingxx

Home > ActionScript 3.0 > ActionScript 3.0 :: イベントのデフォルト動作を拒否/定義する Event.preventDefault() / Event.isDefaultPrevented()

Search
Feeds
Tag Cloud

Return to page top