ASが運営するWebサイトに飛びます

2007年12月20日

イベントハンドラの引数に...restを定義

イベントハンドラの引数を...restに設定して、各イベントに対応した処理をそれぞれ定義しておくとかなり使い回しができる関数が
作れると思います。

イベントハンドラに引数をつけて使い回す関数を作る事については今後色々研究していく予定です。


例題

イベントハンドラの引数に...restを設定し、...restに渡された各引数の内容を出力する。
マウスイベントでアクセスした場合は...restは関係しない。

my_btn.addEventListener(MouseEvent.CLICK,completeHandler(5,15,"returnにイベントを定義しておく"));

function completeHandler(...rest:Array)
{
//trace("...rest="+typeof rest[0]);



var restLength_ui:uint=rest.length;//引数の数

trace("引数の数="+restLength_ui);

trace("...rest="+rest);//rest配列に格納された引数



return function (e:MouseEvent):void{
//btnがクリックされた時の処理
trace("ボタンがクリックされました"+e.currentTarget)
//
}
}
posted by 神風記 at 13:16| イベント | このブログの読者になる | 更新情報をチェックする

2007年12月19日

イベントハンドラに引数をつける

イベントハンドラに引数をわたす簡単な処理を行います。

イベントハンドラに任意の引数を設定した後に、
returnでイベントハンドラ用の引数を設定したfunction を定義しておく事で
同じ関数内でクリックした時の処理と、通常の方法でアクセスした時の処理を
振り分ける事ができます。

例題 一つの関数内ににクリックイベント時に行う処理と、引数を設定して通常のやり方で
アクセスした場合の処理の両方を定義する。

通常にアクセスした時と、オブジェクトをクリック(MouseEvent)してアクセスした時で
それぞれ違う処理を返す。

my_btn.addEventListener(MouseEvent.CLICK,sampleHandler(12));//output 12

function sampleHandler(ui:uint)
{
trace("引数 ui ="+ui)
return function (evt:MouseEvent):void{
//btnがクリックされた時の処理
trace("ボタンがクリックされました"+evt.currentTarget)
//
}
}

sampleHandler(30)//output 30

この様にイベントハンドラの関数内に return function(引数:イベントトリガと同じ型)と定義する事で、イベントハンドラの関数に普通にアクセスした場合と特定のイベントでアクセスした場合の処理を振り分けする事でき、イベントハンドラに引数を設定する事ができます。
posted by 神風記 at 13:38| イベント | このブログの読者になる | 更新情報をチェックする

2007年11月22日

Loaderがファイルのロードに失敗した時のIOErrorEvent.IO_ERROR

Loaderがファイルのロードに失敗した時のIOErrorEvent.IO_ERRORについて解説します。IOErrorEvent.IO_ERRORはLoaderやURLLoaderがファルのロードに失敗した時のイベント処理です。なんらかの事情でファイルが正常にロードされない事もあるので、Loaderを使う処理を行う時は、ロードに失敗した時の事も考えてIOErrorEventの処理をきちんと設定しておく事をお勧めします。

例題

URLLoaderがファイルをロードした際に、ファイルがみつからなかった場合のIOErrorEvent.IO_ERRORで設定した関数にアクセス。

xmlLoader.addEventListener (IOErrorEvent.IO_ERROR,xmlIoErrorEvent);

xmlLoader.load(new URLRequest("notfound.swf"));;

function xmlIoErrorEvent(evt:IOErrorEvent)
{
trace("XMLのロードに失敗しました。")


}
posted by 神風記 at 08:33| イベント | このブログの読者になる | 更新情報をチェックする

2007年11月20日

addEventListenerでイベントを定義したLoaderオブジェクトをnewで初期化するとaddEventListenerで定義した イベントも初期化される

addEventListenerでイベントを定義したLoaderオブジェクトをnewで初期化するとaddEventListenerで定義した
イベントも初期化されます。
newで初期化したLoaderに初期前のLoaderと同じ振る舞いをさせたい時は同じイベントをもう一度設定する必要があります。

例題 Loaderがswfをロードが完了したら完了通知のイベントをトリガさせる。初期化した後にロードしてもイベント定義が初期化
されているため、完了通知のイベントはトリガしない。

var my_lo:Loader=new Loader();

my_lo.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler)

my_lo.load(new URLRequest("sample.swf"));

function completeHandler(evt:Event)
{

//ファイルをロードが完了した際にトリガされるイベント

}


my_lo.load(new URLRequest("sample.swf"));

//my_loオブジェクトを初期化する

my_lo=new Loader();

my_lo.load(new URLRequest("sample.swf"));//newで初期化されているためイベントがトリガされない
posted by 神風記 at 12:36| イベント | このブログの読者になる | 更新情報をチェックする

2007年09月26日

addEventListenerでイベントの定義と実行を同時に行う

addEventListenerでイベントの定義と実行を同時に行います。

addEventListenerの第一引数にはイベント名、第二引数に関数そのものを定義します。

例題

sample_mc.addEventListenerでMouseEvent.CLICKイベントトリガを定義すると同時に関数も定義します。

sample_mcをクリックすると関数にアクセスします。ソースコードを見る | Flashゲーム研究所
posted by 神風記 at 00:00| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年09月25日

removeEventListenerでaddEventListenerで設定したイベントを消去する。

removeEventListenerでaddEventListenerで設定した設定したイベントを消去します。

removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

removeEventListenerは不要になったイベントを無効にしたい時に使用します。

例題

ボタンに設定したクリックイベントをremoveEventListenerで消去します。

btn_mc.addEventListener(MouseEvent.CLICK,clickHandler)でbtn_mcをクリックするとclickHandlerにアクセスするイベントを設定します。

clickHandlerの関数内に
btn_mc.removeEventListener(MouseEvent.CLICK,clickHandler)
と定義しbtn_mcのイベントを消去します。

これでbtn_mcのクリックイベントが無効になります。

Flashゲーム制作ではイベント数は膨大な数になります。不要なイベントは放っておくと様々なトラブルを引き起こします。
不要になったイベントは即removeEventListenerで消去すると良いでしょう。


ソースコードを見る | Flashゲーム研究所
posted by 神風記 at 03:35| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年09月15日

格納用オブジェクトにEvent.ADDEDを定義し格納用オブジェクト内に何かのオブジェクトが表示されたらイベントをトリガする。

格納用オブジェクトにEvent.ADDEDを定義し格納用オブジェクト内に何かのオブジェクトが表示されたらイベントをトリガします。

Event.ADDEDはaddChild等でオブジェクトが表示された時にトリガされるイベントです。

前回は表示するオブジェクトにEvent.ADDEDを定義し、addChildで表示されたらイベントがトリガされましたが

今回は表示される格納用オブジェクトにオブジェクトが表示されたらイベントがトリガされる使い方をします。

格納用オブジェクトになにか表示されたらイベントがトリガされるという事です。

前回と全く一緒です、オブジェクトを格納するオブジェクト.addEventListener(Event.ADDED,addedHandler)

で表示オブジェクト内にオブジェクトが追加されたらイベントがトリガされます。

今回の様に格納用オブジェクトにEvent.ADDEDを設置するやり方がEvent.ADDEDメソッドの本当の使い方に近いと思います。

例題

sample_spオブジェクトを生成します。

box_mcというsample_spを格納するためのMCを生成します。

このbox_mcにEvent.ADDEDを定義します。

childBtn_spというボタンを生成し、クリックするとsample_spがbox_mcに表示されます。

box_mc内にオブジェクトが表示されたのでイベントがトリガされます。続きを読む
posted by 神風記 at 00:00| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年09月14日

dispatchEventを応用してサムネイルを総て読み込んだ事を通知し、一度にサムネイルを表示させる

dispatchEventを使用してサムネイルを総て読み込んだ事を通知し、一度にサムネイルを表示させるメソッドを記述しました。

dispatchEventがだいたいどういうものなのか認識できた気がします。

dispatchEventを使って「Loaderオブジェクトが画像を全部読み込んだ」という事をブロードキャストしています。

ソースコード



続きを読む
posted by 神風記 at 00:00| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年09月13日

Event.ADDEDで表示リストにオブジェクトが表示された事を参照する。

Event.ADDEDで表示リストにオブジェクトが表示された事を参照します。

Event.ADDEDはaddChild等でオブジェクトが表示された時にトリガされる
イベントです。

object.addEventListener(Event.ADDED,addedHandler)

と記述した場合、objectがaddChild等で表示された場合

addedHandlerにアクセスします。

addChildはFlashコンテンツを作る場合必ずと言っていいほど使う処理です。そのaddChildが実行された
タイミングを参照できるEvent.ADDEDの使い方を把握しておくと色々処理が円滑に進むと思います。

例題

sample_spオブジェクトを生成します。sample_sp.addEventListener(Event.ADDED,sampleAddedHandler)
と記述し、sample_spが表示されるとsampleAddedHandlerメソッドにアクセスするよう定義します。

childBtn_sptというボタンを生成し、クリックするとsample_spがaddChildされるよう定義します。

クリックするとsample_spが表示されるのでEvent.ADDEDがトリガされsampleAddedHandlerにアクセスします。

続きを読む
posted by 神風記 at 18:04| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

dispatchEventの基本的な使用方法について

dispatchEventの基本的な使用方法について解説します。



dispatchEventはイベントをブロードキャストするメソッド。主に自分で定義したイベントに
アクセスする際に使われます。プロパティは
dispatchEvent(event:Event)
となっていて第一引数にはイベントオブジェクトを指定する必要があります。

イベント処理はFlash制作の上で避けては通れません。逆に言えばこのイベント処理に長けていると
その分制作効率、クオリティが大きく向上します。イベント処理に大きく関わる
dispatchEventの応用方法もこれからどんどん行っていきます。
今回は基本的な処理方法を記述します。

例題

sample_mcという空のMCにイベントを定義します。今までと違うのは自分でイベントのトリガを定義するという事です。今までは
MouseEvent.CLICKの様にあらかじめ定型化されていましたが今回はaddEventListenerの第一引数に"myEvent"とFlash側では
決められていないイベントを自分で定義します。第二引数は第一引数のイベントのトリガが押されたときにアクセスする
関数名を記述します。

sample_mc.dispatchEvent(new Event("myEvent"))で上記で定義したmyEventをブロードキャストします。dispatchEventの第一引数にnew Event("イベント名")と入れますが、この第一引数に入れるオブジェクトはEventオブジェクトである必要があるので
new Eventでイベントオブジェクトを生成する事が重要です。

myEventのトリガがひかれ定義した関数にアクセスします。

続きを読む
posted by 神風記 at 00:00| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年08月05日

AS3のNow Loading

AS3でNow Loadingを行う方法。自己流なのでもっと効率的なやり方があると思いますが一応ソースコードを記しときます。続きを読む
posted by 神風記 at 16:51| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年08月04日

外部ファイルをロードする時にLoaderに関連づけするイベントリスナー

外部ファイルをロードする時にLoaderに関連づけするイベントリスナー



続きを読む
posted by 神風記 at 00:17| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年07月30日

currentTargetプロパティでイベントを呼び出したオブジェクトを知る事ができる

イベントハンドラの処理内でcurrentTargetプロパティを参照する事でイベントをアクティブに処理しているオブジェクトを知る事ができます。

続きを読む
posted by 神風記 at 04:28| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年07月21日

addEventLitenerのイベント

addEventListenerので主に使用するイベントのプロパティ一覧
続きを読む
posted by 神風記 at 17:46| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年07月18日

addEventListener()の基本的な引数について

addEventListener()の引数を解説します。





続きを読む
posted by 神風記 at 13:04| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2007年07月17日

addEventLitenerの練習

as3のイベント処理で主流となったaddEventListenerの使用方法を基礎の基礎からやっていく。
続きを読む
posted by 神風記 at 23:16| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする