<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>SCRATCHBRAIN.BLOG ver.1// Flashでオブジェクト指向言語ActionScript3.0はじめました</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/" />
   <link rel="self" type="application/atom+xml" href="http://www.scratchbrain.net/ver1/blog/atom.xml" />
   <id>tag:www.scratchbrain.net,2008:/ver1/blog//1</id>
   <updated>2007-08-04T09:34:18Z</updated>
   <subtitle>Flashで始めるActionScript3.0（AS3）入門、オブジェクト指向（OOP）の基礎知識、サンプルコードなど</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>


<entry>
   <title>blog バージョン２</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000194.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.194</id>
   
   <published>2007-04-26T17:28:12Z</published>
   <updated>2007-08-04T09:34:18Z</updated>
   
   <summary>SCRATCHBRAIN.BLOG ver.2に切り替えました。 ひきつづき、F...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="info" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<a href="http://www.scratchbrain.net/blog/ver2/" target="_blank">SCRATCHBRAIN.BLOG ver.2</a>に切り替えました。

ひきつづき、Flash、ActionScript3.0の話題を中心に、ApolloやFlexについても取り上げたいと思っていますので、今後ともよろしくお願いします。]]>
      
   </content>
</entry>

<entry>
   <title>8-1-5.カスタムクラスからのイベント送出 その２</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000192.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.192</id>
   
   <published>2007-04-26T11:00:00Z</published>
   <updated>2007-08-04T09:53:02Z</updated>
   
   <summary>『8-1-4.カスタムクラスからのイベント送出 その１』のつづき。 その１ではE...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="8.Flash Player API" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<a href="http://www.scratchbrain.net/ver1/blog/entries/000189.php" target="_blank">『8-1-4.カスタムクラスからのイベント送出 その１』</a>のつづき。

その１ではEventDispatcherクラスを継承する場合についてまとめました。
ここではIEventDispatcherインターフェイスを使う場合を取り上げたいと思います。]]>
      <![CDATA[<u>IEventDispatcherインターフェイスの実装</u>
まず、IEventDispatcherインターフェイスを実装したクラスを作成し、各メソッドを定義します。
インターフェイスについては<a href="http://www.scratchbrain.net/ver1/blog/entries/000119.php" target="_blank">『5-4.インターフェイス』</a>をご覧下さい。

<pre><code>package {<br />&nbsp;import flash.events.IEventDispatcher;<br />&nbsp;import flash.events.Event;<br />&nbsp;import flash.events.EventDispatcher;<br />&nbsp;class CustomDispatcher implements IEventDispatcher {<br />&nbsp;&nbsp;private var dispatcher:EventDispatcher;<br />&nbsp;&nbsp;public function CustomDispatcher() {<br />&nbsp;&nbsp;&nbsp;dispatcher = new EventDispatcher(this);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{<br />&nbsp;&nbsp;&nbsp;dispatcher.addEventListener(type, listener, useCapture, priority);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public function dispatchEvent(evt:Event):Boolean{<br />&nbsp;&nbsp;&nbsp;return dispatcher.dispatchEvent(evt);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public function hasEventListener(type:String):Boolean{<br />&nbsp;&nbsp;&nbsp;return dispatcher.hasEventListener(type);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public function removeEventListener(type:String, listener:Function,useCapture:Boolean = false):void{<br />&nbsp;&nbsp;&nbsp;dispatcher.removeEventListener(type, listener, useCapture);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public function willTrigger(type:String):Boolean {<br />&nbsp;&nbsp;&nbsp;return dispatcher.willTrigger(type);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;// イベント処理<br />&nbsp;&nbsp;public function doAction():void {<br />&nbsp;&nbsp;&nbsp;// 処理開始送出<br />&nbsp;&nbsp;&nbsp;dispatchEvent(new Event("start"));<br />&nbsp;&nbsp;&nbsp;// イベントの内容<br />&nbsp;&nbsp;&nbsp;for (var i:int; i < 5 ; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;trace(i);<br />&nbsp;&nbsp;&nbsp;dispatchEvent(new Event("processing"));<br />&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;// 処理終了送出<br />&nbsp;&nbsp;&nbsp;dispatchEvent(new Event("complete"));<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}</code></pre>

<u>CustomDispatcherクラスの使用</u>
次に、MainクラスでCustomDispatcherクラスを使ってイベント処理を行ってみます。
<pre><code>package {<br />&nbsp;import flash.display.Sprite;<br />&nbsp;import flash.events.Event;<br />&nbsp;public class Main extends Sprite {<br />&nbsp;&nbsp;private var example:CustomDispatcher = new CustomDispatcher();<br />&nbsp;&nbsp;public function Main() {<br />&nbsp;&nbsp;&nbsp;example = new CustomDispatcher();<br />&nbsp;&nbsp;&nbsp;example.addEventListener("start", onStart);<br />&nbsp;&nbsp;&nbsp;example.addEventListener("processing", onProcess);<br />&nbsp;&nbsp;&nbsp;example.addEventListener("complete", onComplete);<br />&nbsp;&nbsp;&nbsp;example.doAction();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onStart(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("イベント開始");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onProcess(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("処理中...");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onComplete(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("イベント終了");<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}</code></pre>

出力結果は次のようになります。
<pre><code>イベント開始<br />0<br />処理中...<br />1<br />処理中...<br />2<br />処理中...<br />3<br />処理中...<br />4<br />処理中...<br />イベント終了</code></pre>

EventDispatcherクラス継承したほうがやっぱりスマート。
それとも間違っているのかな、


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/IEventDispatcher.html" target="_blank" target="_blank">IEventDispatcherインターフェイス</a>
Adobe Flex 2 ヘルプ <a href="http://livedocs.adobe.com/flex/2_jp/docs/00001845.html" target="_blank">インターフェイス</a>
akihiro kamijo <a href="http://weblogs.macromedia.com/akamijo/archives/2005/12/post_5.cfm" target="_blank">カスタムイベントのディスパッチ</a>]]>
   </content>
</entry>

<entry>
   <title>Adobe Video Workshop その２</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000191.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.191</id>
   
   <published>2007-04-25T05:21:17Z</published>
   <updated>2007-08-04T09:51:20Z</updated>
   
   <summary>『Adobe Video Workshop その１』のつづき。 Creating...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="Flash CS3" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<a href="http://www.scratchbrain.net/ver1/blog/entries/000178.php" target="_blank">『Adobe Video Workshop その１』</a>のつづき。

<u>Creating a simple application with components</u>
リストとボタンコンポーネントのチュートリアル。
次のような内容。]]>
      <![CDATA[１.コンポーネントパネルからステージにListとButtonをドラッグ
２.Listの名前をmyList、Buttonの名前をmyButton、ButtonのlabelにEat Itemと設定する
３.ActionScriptパネルを開き、１フレーム目に次のコードを記述する
<pre><code>import fl.events.*;<br />import flash.events.*;<br />import fl.data.DataProvider;<br />var dp:DataProvider = new DataProvider();<br />dp.addItem({label:"tomato"});<br />dp.addItem({label:"carrot"});<br />dp.addItem({label:"blueberry"});<br />dp.addItem({label:"turnip"});<br />myList.dataProvider = dp;</code></pre>

コンパイルすると、ここまででリストが表示される。
（turnipってカブなんだ。）

<pre><code>myList.addEventListener(Event.CHANGE,announceSelect);<br />myButton.addEventListener(MouseEvent.CLICK,eatItem);<br />function announceSelect(e:Event):void{<br />&nbsp;trace("You have selected item: ", myList.selectedItem.label);<br />}<br />function eatItem(e:MouseEvent):void{<br />&nbsp;trace("You have eaten item: ", myList.selectedItem.label);<br />&nbsp;dp.removeItem(myList.selectedItem);<br />}</code></pre>

コンパイル。

４.Listでアイテムを選ぶと『You have selected item: tomato』とかtraceされる
５.Listでアイテムを選んで、Buttonを押すと、選んだアイテムがListから削除される

<u>Writing ActionScript for components</u>
ボタンコンポーネントを使ったボタンにActionScriptを記述する方法についてのチュートリアル。
だいたい次のような内容。

１.コンポーネントパネルからステージにButtonをドラッグ
２.ステージからボタンを削除（ライブラリにボタンがある）
３.ActionScriptパネルを開き、１フレーム目に次のコードを記述する
<pre><code>import fl.controls.Button;<br />var b:Button = new Button();<br />addChild(b);</code></pre>
４.コンパイルしてステージにボタンが表示されることを確認して、次の２行を削除する
<pre><code>var b:Button = new Button();<br />addChild(b);</code></pre>
５.次のコードを記述する
<pre><code>var i:uint = 0;<br />var j:uint = 0;<br />var posX:uint = 0;<br />var posY:uint = 0;<br />var buttonSize:uint = 25;<br />while(posY < stage.stageHeight){<br />&nbsp;posX = 0;<br />&nbsp;j = 0;<br />&nbsp;posY = i * buttonSize;<br />&nbsp;while(posX < stageWidth){<br />&nbsp;&nbsp;posX = j * buttonSize;<br />&nbsp;&nbsp;var b:Button = new Button();<br />&nbsp;&nbsp;b.setSize(buttonSize,buttonSize);<br />&nbsp;&nbsp;b.move(posX, posY);<br />&nbsp;&nbsp;b.label = getRandomLetter();<br />&nbsp;&nbsp;addChild(b);<br />&nbsp;&nbsp;j++;<br />&nbsp;}<br />&nbsp;i++;<br />}</code></pre>

あらかじめgetRandomLetter()メソッドが定義されている
<pre><code>var letters:Array = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"S","T","U","V","W","X","Y","Z"];<br />function getRandomLetter():String{<br />&nbsp;var randomIndex:uint = Math.Floor(Math.random() * letters.length);<br />&nbsp;return letters[randomIndex];<br />}</code></pre>

６.コンパイルするとA～Zをラベルとするボタンがランダムの順序で碁盤状に敷き詰められている
７.ボタンサイズとステージサイズを変えて、試し]]>
   </content>
</entry>

<entry>
   <title>TextFieldにShapeでマスク</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000190.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.190</id>
   
   <published>2007-04-25T04:48:49Z</published>
   <updated>2007-08-04T09:56:21Z</updated>
   
   <summary>手順メモ。 １.テキストフィールド作成 var label:TextField ...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="トライアル&amp;サンプル" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[手順メモ。

１.テキストフィールド作成
<pre><code>var label:TextField = new TextField();<br />label.autoSize = TextFieldAutoSize.LEFT;<br />label.text = "SCRATCHBRAIN.NET";<br />addChild(label);<br />label.x = 25;<br />label.y = 25;</code></pre>]]>
      <![CDATA[２.マスク用Shape作成
<pre><code>var square:Shape = new Shape();<br />addChild(square);<br />square.graphics.beginFill(0x999999,1.0);<br />square.graphics.drawRect(25,25,50,50);<br />square.graphics.endFill();</code></pre>

３.マスク適用
<pre><code>label.mask = square;</code></pre>


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/display/DisplayObject.html#mask" target="_blank">DisplayObjectクラス maskプロパティ</a>]]>
   </content>
</entry>

<entry>
   <title>8-1-4.カスタムクラスからのイベント送出 その１</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000189.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.189</id>
   
   <published>2007-04-25T04:28:39Z</published>
   <updated>2007-08-04T10:01:10Z</updated>
   
   <summary>カスタムクラスからイベントを送出するようにするにはEventDispatcher...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="8.Flash Player API" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      カスタムクラスからイベントを送出するようにするにはEventDispatcherクラスを拡張します。
すでにほかのクラスを継承している場合は、IEventDispatcherインターフェイスを使います。

ここではEventDispatcherクラスを使う場合について取り上げています。
      <![CDATA[<u>CustomDispatcherクラス作成</u>
まず、CustomDispatcherクラスを作成し、イベントの内容を定義します。
このクラスはEventDispatcherクラスを継承して作ります。
DisplayObjectContainerクラスがEventDispatcherクラスを継承しているので、CustomDispatcherクラスはSpriteクラスを継承しても作成可能です。

１.Eventクラス、EventDispatcherクラスをimport
<pre><code>import flash.events.Event;<br />import flash.events.EventDispatcher;</code></pre>

２.イベントタイプ作成
<pre><code>public static const START:String = "start";<br />public static const PROCESSING:String = "processing";<br />public static const COMPLETE:String = "complete";</code></pre>

３.イベントの内容とイベント送出設定
forループを5回ループすると、処理終了を送出します。
その他、処理開始、処理中を送出します。

<pre><code>public function doAction():void {<br />&nbsp;// 処理開始送出<br />&nbsp;dispatchEvent(new Event(CustomDispatcher.START));<br />&nbsp;// イベントの内容<br />&nbsp;for (var i:int; i < 5 ; i++) {<br />&nbsp;&nbsp;trace(i);<br />&nbsp;&nbsp;dispatchEvent(new Event(CustomDispatcher.PROCESSING));<br />&nbsp;}<br />&nbsp;// 処理終了送出<br />&nbsp;&nbsp;dispatchEvent(new Event(CustomDispatcher.COMPLETE));<br />&nbsp;}<br />}</code></pre>

<u>CustomDispatcherクラスのイベント使用</u>
次に、MainクラスでCustomDispatcherクラスで定義したイベントを使ってみます。

<pre><code>package {<br />&nbsp;import flash.display.Sprite;<br />&nbsp;import flash.events.Event;<br />&nbsp;public class Main extends Sprite {<br />&nbsp;&nbsp;public function Main (){<br />&nbsp;&nbsp;&nbsp;var example:CustomDispatcher = new CustomDispatcher();<br />&nbsp;&nbsp;&nbsp;example.addEventListener(CustomDispatcher.START,onStart);<br />&nbsp;&nbsp;&nbsp;example.addEventListener(CustomDispatcher.PROCESSING,onProcess);<br />&nbsp;&nbsp;&nbsp;example.addEventListener(CustomDispatcher.COMPLETE,onComplete);<br />&nbsp;&nbsp;&nbsp;example.doAction();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onStart(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("イベント開始");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onProcess(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("処理中...");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private function onComplete(event:Event):void{<br />&nbsp;&nbsp;&nbsp;trace("イベント終了");<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}</code></pre>

example.doAction()メソッドを実行することによって、イベント処理が開始します。
上の処理の出力結果は次のようになります。
イベント開始
<pre><code>0<br />処理中...<br />1<br />処理中...<br />2<br />処理中...<br />3<br />処理中...<br />4<br />処理中...<br />イベント終了</code></pre>

カスタムイベントは上手に使えるようになりたい。


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html" target="_blank">EventDispatcherクラス</a>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/IEventDispatcher.html" target="_blank">IEventDispatcherインターフェイス</a>
fladdict.net blog AS3メモ <a href="http://fladdict.net/blog/2006/07/as3_command_2.html" target="_blank">Commandライブラリ仕様メモ</a>
fladdict.net blog <a href="http://fladdict.net/blog/2006/07/as3command.html" target="_blank">AS3用のCommandライブラリ作ってみた</a>]]>
   </content>
</entry>

<entry>
   <title>8-1-3.イベントリスナー</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000187.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.187</id>
   
   <published>2007-04-23T15:45:54Z</published>
   <updated>2007-08-04T10:06:03Z</updated>
   
   <summary>イベントリスナーはイベントに応答して実行される関数で、イベントハンドラとも言いま...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="8.Flash Player API" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      イベントリスナーはイベントに応答して実行される関数で、イベントハンドラとも言います。
イベントリスナーはイベントが発生すると、リスナー関数（イベントハンドラ関数）を呼びます。

イベントリスナーの登録は次の手順で行います。
      <![CDATA[１.イベントリスナー追加
<pre><code>btnA.addEventListener(MouseEvent.CLICK, onClickHandler);</code></pre>

btnAがクリックされるとonClickHandler()メソッドが呼ばれます。

２.ハンドラ関数作成
<pre><code>private function onClickHandler(event:MouseEvent):void{<br />&nbsp;trace("Hello !");<br />}</code></pre>

次に挙げるaddEventListener()メソッドのパラメータのうち、type、listenerは必須です。

<u>typeパラメータ:String</u>
Event.ENTER_FRAME、MouseEvent.CLICKなど、イベントのタイプを指定します。

<u>listenerパラメータ:Function</u>
typeパラメータで指定したイベントが発生したときに実行するハンドラ関数を指定します。

<u>useCaptureパラメータ:Boolean</u>
イベントフローのどの段階の処理をアクティブにするか指定します。trueを指定するとキャプチャ段階のみイベントを処理します。falseを指定すると、ターゲット段階とバブリング段階のイベントを処理します。デフォルトfalse。
詳細は<a href="http://www.scratchbrain.net/ver1/blog/entries/000173.php" target="_blank">『8-1-1.イベントモデルの概要とイベントフロー』</a>をご覧下さい。

<u>priorityパラメータ:int</u>
イベントリスナーの優先度を指定します。数が大きいほど先に処理されます。デフォルト0。

priorityパラメータを次のように指定した場合、リスナー関数が実行される順序はonClickHandler1、onClickHandler2、onClickHandler3になります。
<pre><code>square.addEventListener(MouseEvent.CLICK, onClickHandler3,false,0);<br />square.addEventListener(MouseEvent.CLICK, onClickHandler1,false,1);<br />square.addEventListener(MouseEvent.CLICK, onClickHandler2,false,1);</code></pre>

<u>useWeakReferenceパラメータ:Boolean</u>
リスナー関数への参照を強参照（false）にするか、弱参照（true）にするか指定します。
trueの場合、リスナー関数が使用されなくなった後、メモリから削除されます。デフォルトfalse。

イベントリスナーの削除はremoveEventListener()メソッドを使います。
<pre><code>square.removeEventListener(MouseEvent.CLICK, onClickHandler1,false);</code></pre>

イベントリスナーが存在するか確認するにはhasEventListener()メソッドか、willTrigger()メソッドを使います。
次のようなイベントリスナーが登録されていたとします。
<pre><code>stage.addEventListener(MouseEvent.CLICK, onClick);</code></pre>

<u>hasEventListener()メソッド</u>
パラメータに指定したイベントタイプが存在する場合、trueを返します。存在しない場合、falseを返します。
ステージにマウスクリックイベントの登録があるのでtrue、squareにはマウスクリックイベントが登録されていないのでfalseを返します。
<pre><code>trace(stage.hasEventListener(MouseEvent.CLICK));// 出力 true<br />trace(square.hasEventListener(MouseEvent.CLICK));// 出力 false<br />trace(stage.hasEventListener(MouseEvent.ROLL_OVER));// 出力 false</code></pre>

<u>willTrigger()メソッド</u>
hasEventListener()メソッド同様、パラメータに指定したイベントタイプが存在する場合、trueを返します。存在しない場合、falseを返します。
hasEventListener()メソッドとの違いは、イベントフロー全体に対する結果を返します。
したがって、squareに対する結果がhasEventListener()メソッドと異なります。squareのイベントフローにステージが存在する為、square自体にマウスクリックイベントが登録されていなくても、結果はtrueとなります。
<pre><code>trace(stage.willTrigger(MouseEvent.CLICK));// 出力 true<br />trace(square.willTrigger(MouseEvent.CLICK));// 出力 true<br />trace(stage.willTrigger(MouseEvent.ROLL_OVER));// 出力 false</code></pre>


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html" target="_blank">EventDispatcherクラス</a>
FumioNonaka.com <a href="http://www.fumiononaka.com/TechNotes/Flash/FN0608004.html" target="_blank">EventDispatcher.addEventListener()メソッド</a>]]>
   </content>
</entry>

<entry>
   <title>ActionScript3.0ゲームプログラミングブック</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000186.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.186</id>
   
   <published>2007-04-23T15:44:11Z</published>
   <updated>2007-08-07T13:15:14Z</updated>
   
   <summary> ゲームプログラミングとタイトルにあるわりにはゲームの話題はほんの少しです。 次...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="参考文献" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=scratchbrainn-22&o=9&p=8&l=as1&asins=4839921938&fc1=000000&IS2=1&lt1=_blank&lc1=FF0099&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

ゲームプログラミングとタイトルにあるわりにはゲームの話題はほんの少しです。
次期Flashに備えてActionScript3.0予習したかったんですが、入門書としてよかったです。

Flash関係の書籍によくある3Dメニューとかそういった表現については書いてありません。]]>
      
   </content>
</entry>

<entry>
   <title>Spriteロールオーバー時に指カーソルにする</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000185.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.185</id>
   
   <published>2007-04-23T15:32:04Z</published>
   <updated>2007-08-04T10:08:22Z</updated>
   
   <summary>buttonModeプロパティにtrueを設定すると、指カーソルになる。 サンプ...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="トライアル&amp;サンプル" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      buttonModeプロパティにtrueを設定すると、指カーソルになる。

サンプルコード
      <![CDATA[<pre><code>var square:Sprite = new Sprite();<br />addChild(square);<br />square.graphics.beginFill(0x999999,1.0);<br />square.graphics.drawRect(0,0,50,50);<br />square.graphics.endFill();<br />square.buttonMode = true;</code></pre>


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/display/Sprite.html#buttonMode" target="_blank">Spriteクラス buttonModeプロパティ</a>]]>
   </content>
</entry>

<entry>
   <title>トウェルヴ／パティ スミス</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000184.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.184</id>
   
   <published>2007-04-23T15:27:42Z</published>
   <updated>2007-08-04T10:11:22Z</updated>
   
   <summary> パティ スミス初のカヴァーアルバム。 目当てはニルヴァーナの『スメルズ ライク...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="パティ スミス" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=scratchbrainn-22&o=9&p=8&l=as1&asins=B000NDEXIE&fc1=000000&IS2=1&lt1=_blank&lc1=FF0099&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

パティ スミス初のカヴァーアルバム。
目当てはニルヴァーナの『スメルズ ライク ティーン スピリット』のカヴァーだったけど、HMVでニール ヤングの『ヘルプレス』のカヴァーを試聴して泣きそうになって、即購入。

]]>
      ビートルズ、ローリング ストーンズ、ボブ ディラン、スティーヴィー ワンダーなどカヴァーしています。
ドアーズのカヴァーを聴きながら、なんかに似ていると思ったら、コーラルだった。

パティ スミス自身による曲説明を読むと、どんなにカート コバーンに共感していたかがわかる。カートはマイケル スタイプ（REM）とのコラボを望んでいたようだけど、パティ スミスにしろ、キム ゴードン（ソニックユース）にしろ、彼に深い愛情と理解を示す人たちが今なお新しい曲を作り続けていることに感動を覚える。

これでヴェルヴェット アンダーグラウンドの『オール トゥモローズ パーティーズ』あたり入っていたらもっと嬉しかったな。
   </content>
</entry>

<entry>
   <title>Adobe Video Workshop その１</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000178.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.178</id>
   
   <published>2007-04-22T14:21:30Z</published>
   <updated>2007-08-04T10:12:09Z</updated>
   
   <summary>AdobeのFlas CS3関連リソースメモ。『Using Flash』から。 ...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="Flash CS3" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[AdobeのFlas CS3関連リソースメモ。<a href="http://livedocs.adobe.com/flash/9.0/UsingFlash/" target="_blank">『Using Flash』</a>から。

<a href="http://www.adobe.com/designcenter/video_workshop/" target="_blank">『Adobe Video Workshop』</a>にCS3のチュートリアル、Tipsなど200以上ある。
製品リストからFlash CS3を選ぶと、34のトピックスが出てくる。]]>
      <![CDATA[<u>Creating an effective workflow between design and development</u>
デザイナーとデベロッパーのワークフローを紹介。
１.デザイナーがステージ上でグラフィックとタイムラインを使って作成
２.トゥイーンの設定してあるフレームを選択して右クリック「Copy Motion as ActionScript3.0」を選択
３.ActionScriptで使うインスタンス名をなににするか決めて、OKボタンを押す
４.クリップボードにActionScript（とmxml）が記憶されているので、第１フレームにペースト
５.パブリッシュ

<u>Using components</u>
コンポーネントの使い方。
１.[Window]-[Components]選択し、パネルを表示。
２.Buttonをステージにドラッグ
３.ステージ上のButtonを選択し、[Parameters]-[label]に任意の名前を設定
４.Buttonをダブルクリックし、デザイン変更
５.[Control]-[Test Movie]選択

<u>Drawing with the Pen tool</u>
ペンツールによる描画。アンカーポイントの操作など。

<u>Working with text</u>
テキストツールの使い方。

<u>Using the drawing tools</u>
矩形ツールの使い方。
・角丸は角をドラッグすると角度を変えられる
・円ツールその２だと、ドーナッツ状にしたり、裂け目を作ったりドラッグで可能
・「Object Drawing」ボタンを押すと、矩形を２つ重ねた時に重なった部分が消去されるのを防ぐことができる（Flash8にもある機能）

<u>Using the Flash Video Encoder</u>
Flash Video Encoder使い方。
１.[Add]ボタンを押し、エンコードするムービーファイル選択
２.[Settings]ボタンを押し、いろいろ設定
３.[Start Queue]ボタンクリック

今日見た中だと、「Creating an effective workflow between design and development」が一番見る価値あり。]]>
   </content>
</entry>

<entry>
   <title>東京ミッドタウン</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000177.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.177</id>
   
   <published>2007-04-22T12:34:58Z</published>
   <updated>2007-08-04T10:12:43Z</updated>
   
   <summary>土曜日に東京ミッドタウンに行ってきました。 ...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="エッセイ&amp;日記" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[土曜日に東京ミッドタウンに行ってきました。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e177_01.jpg" alt="東京ミッドタウン" />]]>
      <![CDATA[草木の緑と茶とコンクリートのグレーがとても落ち着いた気分にさせてくれました。
六本木ヒルズ、表参道ヒルズより雰囲気好き。

混んでいたけど、窮屈な感じではなかったので、ぶらぶら楽しめました。
一番気に入ったのは化粧室のアイコンだったりします。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e177_02.jpg" alt="東京ミッドタウンアイコン" />

近くでやっているモネ大回顧展にも行きたかったけど、時間切れで断念。]]>
   </content>
</entry>

<entry>
   <title>8-1-2.イベントオブジェクト</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000176.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.176</id>
   
   <published>2007-04-20T15:44:25Z</published>
   <updated>2007-08-04T10:15:51Z</updated>
   
   <summary>イベントオブジェクトはEventクラスとそのサブクラスを使って作成します。 イベ...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="8.Flash Player API" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[イベントオブジェクトはEventクラスとそのサブクラスを使って作成します。
イベントオブジェクトはイベントの種類が何かを表現します。
例えば、enterFrameイベントをイベントリスナーに登録するには次のようにします。
<pre><code>square.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);</code></pre>]]>
      <![CDATA[イベントが、マウスクリックに対するものであれば、MouseEvent.CLICKとします。
このようにイベントオブジェクトのtypeプロパティにイベントの種類を意味する定数を設定します。

Eventクラスのプロパティには、typeプロパティのほかに、次のものがあります。

<u>bubblesプロパティ</u>
読み取り専用。trueの場合、バブリング段階があります。flaseの場合、バブル不可能です。
詳しくは<a href="http://www.scratchbrain.net/ver1/blog/entries/000173.php" target="_blank">『8-1-1.イベントモデルの概要とイベントフロー』</a>をご覧下さい。

<u>cancelableプロパティ</u>
読み取り専用。trueの場合、イベントに関連づけられたデフォルト動作をキャンセル可能です。falseの場合、不可。
このプロパティがtrueのイベントは少ないようです。調べていて見つけたのは次の３つ。
・FocusEvent.KEY_FOCUS_CHANGE
・FocusEvent.MOUSE_FOCUS_CHANGE
・TextEvent.TEXT_INPUT

実際にデフォルト動作をキャンセルするにはpreventDefault()メソッドを使います。
ここではTextEvent.TEXT_INPUTで動作確認してみます。
次のようなテキスト入力フィールドを作成します。
<pre><code>var input:TextField = new TextField();<br />addChild(input);<br />input.type = TextFieldType.INPUT;</code></pre>

当然のことながらフィールドに対して文字入力が可能です。
そこで、次のようなイベントを設定してみます。
<pre><code>input.addEventListener(TextEvent.TEXT_INPUT, textInputHandler);</code></pre>

イベントハンドラでpreventDefault()メソッドを呼び出します。
<pre><code>private function textInputHandler(event:TextEvent):void{<br />&nbsp;event.preventDefault();<br />}</code></pre>

こうすると、デフォルト動作がキャンセルされ、テキストフィールドに文字を打とうとしても、反映されません。

<u>eventPhaseプロパティ</u>
読み取り専用。イベントがどの段階にあるのか数値で示します。
1であればキャプチャ段階。
2であればターゲット段階。
3であればバブリング段階。

<u>targetプロパティ</u>
イベントターゲットを示します。
例えば、次のような表示リストがあったとします。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e176_01.jpg" alt="図１：表示リスト" />

squareAとsquareBにマウスイベントを登録します。
<pre><code>squareA.addEventListener(MouseEvent.CLICK, onClickHandler);<br />squareB.addEventListener(MouseEvent.CLICK, onClickHandler);</code></pre>

ハンドラ関数は次のように設定します。
<pre><code>private function onClickHandler(event:Event):void{<br />&nbsp;trace("eventPhase:" + event.eventPhase, " target:" + event.target.name, " currentTarget:" + event.currentTarget.name);<br />}</code></pre>

squareBをクリックしたときの出力結果は次のようになります。
<pre><code>eventPhase:2  target:squareB  currentTarget:squareB
eventPhase:3  target:squareB  currentTarget:squareA</code></pre>

このようにバブリング段階においてもイベントターゲットはsquareBとなります。
イベントターゲットが表示リストに含まれる場合は注意が必要となります。

<u>currentTargetプロパティ</u>
イベントオブジェクトをアクティブに処理しているオブジェクトを示します。
targetプロパティでの例にある通り、targetプロパティとcurrentTargetプロパティで値が異なるので、状況に応じて使い分ける必要があります。

Eventクラスのサブクラスによっては、MouseEvent.CLICKのshiftKeyプロパティなど、他にもプロパティがあります。


<u>参考URL</u>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/Event.html" target="_blank">Eventクラス</a>]]>
   </content>
</entry>

<entry>
   <title>別冊黒い画集／松本清張</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000175.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.175</id>
   
   <published>2007-04-20T15:40:52Z</published>
   <updated>2007-08-04T10:22:54Z</updated>
   
   <summary>６編からなる短編集。 家政婦が派遣された家でその家庭の崩壊を楽しむ『熱い空気』、...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="松本清張" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      ６編からなる短編集。
家政婦が派遣された家でその家庭の崩壊を楽しむ『熱い空気』、邪馬台国論争と推理小説をくっつけた『陸行水行』の２編が変わった作品だと思った。
      
   </content>
</entry>

<entry>
   <title>メイク アナザー ワールド／アイドルワイルド</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000174.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.174</id>
   
   <published>2007-04-20T15:34:58Z</published>
   <updated>2007-08-04T10:23:22Z</updated>
   
   <summary> アルバム序盤、あれ、オーディナリーボーイズ？ って思ってしまうくらい若々しい。...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="アイドルワイルド" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      <![CDATA[<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=scratchbrainn-22&o=9&p=8&l=as1&asins=B000M5KB84&fc1=000000&IS2=1&lt1=_blank&lc1=FF0099&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
アルバム序盤、あれ、オーディナリーボーイズ？ って思ってしまうくらい若々しい。
でもやっぱり全体的にはREM好きにはたまらない曲調がアルバム後半にどっと続く。

35分に満たない全９曲の通算５枚目のアルバム。
なかなか結成10年のバンドがやらない短さ。]]>
      ロッキンオンのインタビューによると、「都会」がテーマらしい。
「いろんな人達が、いろんなものを持ち寄って、都会という一つの世界を作り上げている。ひとりひとりがこの街に貢献しているし、誰もが日々新たに世界を作り変えてる（引用）」

サードアルバム『リモート パート』の邦訳が『ひなびた場所』だったことを思うと、『メイク アナザー ワールド』というタイトルには当時よりも力強さを感じる。

廃盤になっていたセカンドアルバム『100ブロークン ウィンドウズ』をようやくレコファンで見つけて購入。ついでにサード『リモート パート』も。
これで４枚目以外揃った。ファーストから順に聞いていくとバンドの軌跡が感じとれる。こうなったら全部揃えるしかない。
   </content>
</entry>

<entry>
   <title>8-1-1.イベントモデルの概要とイベントフロー</title>
   <link rel="alternate" type="text/html" href="http://www.scratchbrain.net/ver1/blog/entries/000173.php" />
   <id>tag:www.scratchbrain.net,2007:/ver1/blog//1.173</id>
   
   <published>2007-04-19T18:23:58Z</published>
   <updated>2007-08-05T02:33:11Z</updated>
   
   <summary>ボタンがクリックされるなどのユーザー操作や、データのロードが完了した時など、なん...</summary>
   <author>
      <name></name>
      
   </author>
   
      <category term="8.Flash Player API" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://www.scratchbrain.net/ver1/blog/">
      ボタンがクリックされるなどのユーザー操作や、データのロードが完了した時など、なんらかのトリガによってイベントが発生します。
ActionScript3.0では、イベントをイベントオブジェクトとして、Eventクラスとそのサブクラスのインスタンスで表現します。
      <![CDATA[イベント利用の基本手順は次のようになります。
次のイベントでは、ボタンをクリックすると、そのボタンのインスタンス名が出力されます。

１.EventクラスまたはEventクラスのサブクラスをimport
<pre><code>import flash.events.MouseEvent;</code></pre>

２.イベントリスナー登録
<pre><code>addChild(btnA);<br />btnA.name = "A";<br />btnA.addEventListener(MouseEvent.CLICK, btnAOnClick);</code></pre>

３.イベントに応答するメソッド定義
<pre><code>private function btnAOnClick(event:MouseEvent):void {<br />&nbsp;trace(event.currentTarget.name);// 出力 A<br />}</code></pre>

ここで、イベントオブジェクトの送出先となるオブジェクトbtnAをイベントターゲットと呼びます。
上の例ではイベントターゲットにイベントリスナーを登録し、イベントに応答するメソッドbtnAClickHandlerを結び付けています。

イベントターゲットが表示リストにない場合は直接イベントターゲットに対してイベントオブジェクトが送出されます。
イベントターゲットが表示リストに含まれる場合は、表示リストの階層内を経由して、イベントターゲットまでイベントオブジェクトが送出されます。イベントオブジェクトが表示リスト内を伝播する経路のことをイベントフローと言います。

ActionScript3.0のイベント処理では、イベントフロー、イベントオブジェクト、イベントリスナーが基本概念となります。
まずはその中から、イベントフローについて取り上げたいと思います。

次のような表示リストがあったとします。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e173_01.jpg" alt="図１：表示リスト" />

イベントフローは３段階に分かれます。

<u>キャプチャ段階</u>
btnAがクリックされると、イベントオブジェクトはイベントフローをステージからイベントターゲットに向けて下がっていきます。これをキャプチャ段階と言います。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e173_02.jpg" alt="図２：キャプチャ段階" />

キャプチャ段階ではStageとsquare(Parent Node)が含まれています。

<u>ターゲット段階</u>
イベントターゲットであるbtnAに到達した段階をターゲット段階と言います。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e173_03.jpg" alt="図３：ターゲット段階" />

ターゲット段階にはbtnA(Child Node1)が含まれています。

<u>バブリング段階</u>
イベントオブジェクトは最後にステージに向かって浮上（バブリング）します。これをバブリング段階と言います。

<img src="http://www.scratchbrain.net/ver1/blog/img/entry/e173_04.jpg" alt="図４：バブリング段階" />

バブリング段階ではStageとsquare(Parent Node)が含まれています。

各段階で含まれるノードは、イベントに応答することが可能です。
次のようにイベントリスナーを登録した場合、btnAに対するイベントにStageやsquareが応答することができます。
<pre><code>stage.addEventListener(MouseEvent.CLICK, onClick);<br />square.addEventListener(MouseEvent.CLICK, squareOnClick);<br />btnA.addEventListener(MouseEvent.CLICK, btnAOnClick);</code></pre>

それぞれのリスナー関数には次のような定義をします。
<pre><code>private function onClick(event:MouseEvent):void{<br />&nbsp;trace(event.currentTarget.stageHeight);<br />}<br />private function squareOnClick(event:MouseEvent):void{<br />&nbsp;trace(event.currentTarget.name);<br />}<br />private function btnAOnClick(event:MouseEvent):void{<br />&nbsp;trace(event.currentTarget.name);<br />}</code></pre>

btnAをクリックした時の出力結果は次のようになります。
<pre><code>btnA<br />square<br />200</code></pre>

squareをクリックした時の出力結果は次のようになります。
<pre><code>square<br />200 </code></pre>

ステージをクリックした時の出力結果は次のようになります。
<pre><code>200</code></pre>

これはターゲット段階、バブリング段階でリスナー関数が呼び出されているためです。
最後の200はステージの高さです。StageクラスにはnameプロパティがないためstageHeightを使いました。

上の例を見ると、キャプチャ段階が無視されていることがわかります。
キャプチャ段階でリスナー関数を呼び出すにはaddEventListener()の第３引数useCaptureにtrueをセットします。
btnBで試してみます。
<pre><code>btnB.addEventListener(MouseEvent.CLICK, btnBOnClick,true);</code></pre>
btnBのリスナー関数は次のようにしてみます。
<pre><code>private function btnBOnClick(event:MouseEvent):void{<br />&nbsp;trace(event.currentTarget.name);<br />}</code></pre>

btnBをクリックした時の出力結果は次のようになります。
<pre><code>square<br />200</code></pre>

このようにターゲット段階、バブリング段階は無視されます。

<a href="http://livedocs.adobe.com/flex/2_jp/docs/00000475.html" target="_blank">『Adob Flex 2 ヘルプ イベントの伝播』</a>に次のようにあります。
「キャプチャ段階が使用されることはほとんどありません。またキャプチャ段階を使用すると、計算処理の負荷が大きくなります。キャプチャとは逆に、バブリングは頻繁に実行されます。（引用）」

また、バブリング段階についても、イベントのタイプによっては処理しない場合があるので注意が必要です。

例えばMouseEventのClickイベントがキャプチャ段階やバブリング段階を経るかどうかは、<a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/MouseEvent.html#CLICK" target="_blank">『Adobe Flex 2 リファレンスガイド MouseEventクラス CLICK定数』</a>を見るとわかります。
bubblesプロパティがtrueになっているのでターゲット段階以外のフェーズを経由します。

上の例でbtnAを押した時にsquareとステージのリスナー関数を呼び出したくない場合は、次のようにstopPropagation()メソッドを使います。
<pre><code>private function btnAOnClick(event:MouseEvent):void{<br />&nbsp;trace(event.currentTarget.name);<br />&nbsp;event.stopPropagation();<br />}</code></pre>

btnAをクリックした時の出力結果は次のようになります。
<pre><code>btnA</code></pre>

stopPropagation()メソッドは、後続のイベントフローのイベントリスナーが処理されないようにするためのメソッドです。


<u>参考URL</u>
akihiro kamijo <a href="http://weblogs.macromedia.com/akamijo/archives/2005/12/post_2.cfm" target="_blank">イベントフロー</a>
akihiro kamijo <a href="http://weblogs.macromedia.com/akamijo/archives/2005/11/eventdispatcher.cfm" target="_blank">EventDispatcherクラス</a>
void element blog <a href="http://void.heteml.jp/blog/archives/2006/07/as3_eventflow2.html" target="_blank">ボタン作成のためのイベントフロー制御</a>
void element blog <a href="http://void.heteml.jp/blog/archives/2006/07/as3_eventflow.html" target="_blank">イベントフロー図解</a>
fladdict.net blog <a href="http://fladdict.net/blog/2006/07/as3_mouseevent.html" target="_blank">AS3メモ MouseEventについて</a>
Adob Flex 2 ヘルプ <a href="http://livedocs.adobe.com/flex/2_jp/docs/00000461.html" target="_blank">イベントの使用</a>
Adobe Flex 2 リファレンスガイド <a href="http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html" target="_blank">EventDispatcherクラス</a>]]>
   </content>
</entry>

</feed>
