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

2007年09月30日

セーブデータを作るために色々試そうと思います

ゲームの進行状況をセーブするために試行錯誤中。セーブという処理一つとってもアプローチの方法はいくらでもあるので考える事がとても面白い。開発中のゲームではXMLでデータのやり取りをしているのでデータ保存もXMLのセーブ領域を定義した要素をflaのSharedObjectに保存する形になりそうです。保存に必要な値を厳密にXML側で定義する事が重要になってくると思います。もっと効率の良いセーブ処理の方法はいくらでもあると思いますが、とりあえず思いついたものを片っ端から試していきたいと思います。
posted by 神風記 at 13:59| Comment(0) | TrackBack(0) | データ保存 | このブログの読者になる | 更新情報をチェックする

2007年09月29日

matchメソッドで検索したオブジェクトを配列で返す

matchメソッドを使用して、文字列を検索します。検索に該当した文字列は配列で返されます。

function match(pattern:*):Array

第一引数には検索したいものを入れます。基本的にはString、つまり文字列を入れます。検索したい文字列が該当した場合、それを配列として返します。

例題

my_strというStringを生成します。その中の文字列をmatchメソッドを使用して検索します。該当する文字がある場合は、第一引数で検索した文字列が返され、該当する文字が無い場合はnullが返されます。




ソースコードを見る | Flashゲーム研究所

2007年09月28日

hasOwnPropertyで指定した文字列が含まれているかどうかを判断

hasOwnPropertyメソッドで指定した文字列がX含まれているかどうかを判断します。

hasOwnProperty(name:String):Boolean

第一引数に検索したい文字列を代入します。文字列があった場合はtrueを返し、文字列がない場合はfalseを返します。

例題

XMLで検索したい文字があるかをhasOwnPropertyで判断します。
xmlオブジェクトのitemにbgという文字列があるかどうかを判断します
my_xml.item.hasOwnProperty("bg")

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

2007年09月27日

ロードしたSWFのタイムラインを制御する。

ロードしたSWFのタイムラインを制御します。

ロードした外部SWFを、呼び出しもとのファイルから外部SWF内のラベルにgotoAndPlayするようにします。

呼び出しもとのファイルを基軸に外部SWFのタイムラインを制御する基本です。

例題

loaderオブジェクトのパスを定義したオブジェクトを生成します。

ロードするSWFにはタイムラインがあり「prev2」というラベルを定義しておきます。

loaderオブジェクトに外部SWFをロードします。

ロード完了後、loaderのパスを定義したオブジェクトにcontentをはさんでgotoAndPlay()の引数に
外部SWFで定義しておいたラベル名を代入します。
ソースコードを見る | Flashゲーム研究所
posted by 神風記 at 02:28| Comment(0) | TrackBack(0) | ファイル読み込み | このブログの読者になる | 更新情報をチェックする

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月24日

ステージのwidthとheight

ステージのwidthとheightを図るプロパティです。

Flashゲーム制作ではステージのサイズを参照する機会は非常に多いです。覚えておくべきプロパティの一つです。

ステージのwidthを参照する

stage.stageWidth

ステージのheightを参照する。

stage.stageHeightソースコードを見る | Flashゲーム研究所

2007年09月23日

XMLに関連づけしたFlashコンテンツの進行状況の入力、出力を行う。

XMLに関連づけしたFlashコンテンツの進行状況の入力、出力を行います。

XMLに関連づけしたswfコンテンツをユーザーが閲覧している時にユーザーが一度swfを閉じ、再度開くと
前に閲覧した状態からXMLに関連づけしたswfを閲覧する事ができます。


例題

ボタンを押してXMLの各アイテムを取得し、表示する。保存ボタンを押すと現在の閲覧しているアイテムの場所(Number)を保存する。

保存した後に上のボタンを押すとSharedObjectのXMLデータが出力され、テキストフィールドにXMLの
itemの情報が表示される。真ん中のボタンを押すとアイテムが一つずつプラスされる。一度SWFを閉じてから
再度ファイルを開き、プレビューボタンを押すと前のXMLオブジェクトとアイテムをどこまで読み進んでいたかを記録した
変数が呼び出される、結果、テキストフィールドに前に表示されたXMLのアイテム情報が表示される。続きを読む

2007年09月22日

XMLデータをSharedObjectに格納


ロードしたXMLデータをSharedObjectに格納します。

XMLデータをSharedObjectに格納して自由に呼び出す処理は汎用性の高い処理です。


例題

SharedObjectを複数生成し、配列に代入。

XMLをロードし。ロードが完了したらXMLをSharedObjectに代入するボタンを生成するメソッドにアクセス。

下のボタンをクリックすると配列内のSharedObjectにXMLを代入。

下のボタンをクリックしてから上のボタンをクリックすると配列内のSharedObjectの内容が出力される。続きを読む

2007年09月21日

クイズゲームFlashをXMLで作成する

クイズゲームFlashをXMLで作成したいと思います。

機能

問題文を出題し4つの選択文から一つ選択します。答えがあっている場合は
点数が追加されます。ハイスコアは更新されます。

XMLで問題文、問題数、選択文、配点、正解不正解を定義します。

まだまだ調整する部分がたくさんあるので、ソースコードの調整が終わったらXMLファイルを含めてコードの解説をしていきたいと思います。

とりあえず書き出したソースコード(as)。別途問題文を定義したXMLファイルが必要です。続きを読む

2007年09月20日

swapChildrenメソッドを使用してオブジェクト同士の深度を入れ替える。

swapChildrenメソッドを使用してオブジェクトの深度を参照します。

swapChildren(child1:DisplayObject, child2:DisplayObject):void

第一引数のオブジェクトの深度と第二引数のオブジェクトの深度が入れ替わります。


生成した表示オブジェクトにオブジェクトを表示させ、ボタンを押すとcontainer.swapChildren(オブジェクト,オブジェクト)で
第一引数のオブジェクトの深度と第二引数のオブジェクトの深度が入れ替わります。

例題

表示用オブジェクトであるcontainer_spを生成。

my1_sp、my2_spの二つのオブジェクトを生成しcontainer_sp内に表示。

childManage_spオブジェクトを生成。クリックするとcontainer内のmy1_spの深度と

my2_spの深度が入れ替わる。続きを読む
posted by 神風記 at 09:38| Comment(0) | TrackBack(0) | 深度の調整 | このブログの読者になる | 更新情報をチェックする

2007年09月19日

setChildIndexを使用してオブジェクトの深度を変更する。


setChildIndexを使用してオブジェクトの深度を変更します。

setChildIndex(child:DisplayObject, index:int):void

第一引数に深度を変更したいオブジェクト第二引数に深度を指定します。


生成した表示オブジェクトにオブジェクトを表示させ、ボタンを押すとcontainer.setChildIndex(オブジェクト,深度)で
container内に表示されているオブジェクトの深度を調整できます。

例題

表示用オブジェクトであるcontainer_spを生成。

my1_sp、my2_spの二つのオブジェクトを生成しcontainer_sp内に表示。

childManage_spオブジェクトを生成。クリックするとcontainer内のmy1_spの深度が

が指定され、my2_spの前列にくる。

addChildAtとの違いの一つはそのコンテナ内に表示されているオブジェクトの数以上の深度は指定できないという事です。

深度を確実に指定したい場合はsetChildIndexで深度を指定すると良いと思います。続きを読む
posted by 神風記 at 10:00| Comment(0) | TrackBack(0) | 深度の調整 | このブログの読者になる | 更新情報をチェックする

2007年09月18日

getChildIndexを使用してオブジェクトの深度を参照する。


getChildIndexを使用してオブジェクトの深度を参照します。

getChildIndexメソッドはオブジェクトの深度を参照する事ができるメソッドです。

getChildIndex(child:DisplayObject):int

第一引数には、深度を測るオブジェクトを代入します。


getChildIndex(オブジェクト)で表示オブジェクト内に表示されているオブジェクトの深度を測る事ができます。

例題

表示用オブジェクトであるcontainer_spを生成。

my1_sp、my2_spの二つのオブジェクトを生成しcontainer_sp内に表示。

childManage_spオブジェクトを生成。クリックするとgetChildIndexでcontainer内のmy1_spの深度が

出力され、その後にaddChildAtでmy1_spの深度が調整されmy1_spが前列にくる。調整された後にgetChildIndexでmy1_spの

深度を測るとmy1_spの深度が変更されている。
posted by 神風記 at 18:57| Comment(0) | TrackBack(0) | 深度の調整 | このブログの読者になる | 更新情報をチェックする

addChildAtを使用して表示オブジェクト内に表示されたオブジェクトの深度を調整する。

addChildAtを使用して表示オブジェクト内に表示されたオブジェクトの深度を調整します。


生成した表示オブジェクトにオブジェクトを表示させ、ボタンを押すとcontainer.addChildAt(オブジェクト,深度)で
container内に表示されているオブジェクトの深度を調整できます。

例題

表示用オブジェクトであるcontainer_spを生成。

my1_sp、my2_spの二つのオブジェクトを生成しcontainer_sp内に表示。

childManage_spオブジェクトを生成。クリックするとcontainer内のmy1_spの深度が

が指定され、my2_spの前列にくる。続きを読む
posted by 神風記 at 18:37| Comment(0) | TrackBack(0) | 深度の調整 | このブログの読者になる | 更新情報をチェックする

2007年09月17日

addChildAtでcontainerの深度を調整

addChildAtメソッドはオブジェクトの深度を数字で指定するメソッドです。

addChildAt(child:DisplayObject, index:int):DisplayObject

第一引数に深度を調整するオブジェクト、第二引数でオブジェクトの深度を数字で指定します。

例題

my1_mcとmy2_mcという二つの生成します。btn_mcというmcを生成しクリックするとaddChildAtでmy1_mcの深度が2になり、my2_mcの上に表示されます

続きを読む
posted by 神風記 at 22:13| Comment(0) | TrackBack(0) | 深度の調整 | このブログの読者になる | 更新情報をチェックする

2007年09月16日

hitTestPointメソッドでオブジェクトがステージ上のx値、y値にヒットしているかどうか判定する

hitTestPointメソッドを使ってオブジェクトが指定したx位置、y位置にあるかどうか判定します。

hitTestPointメソッドの構成は

hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):

となっています。

第一引数にはx値、第二引数にはy値、第三引数はshapeFlagです。

第三引数は代入しなくても判定可能です。自分は第三引数の代入は殆ど使ってません。

x値とy値はオブジェクトの表示コンテナではなくステージサイズを基準にしています。

例題

sample_mcというMCがhitTestPointで指定した値にヒットしているかどうか判定します。

sample_mcのx値は0、width値は100です。

hitTestPoint(100,0)にした時はtrue、hitTestPoint(100,0)にした時はfalseを返します。続きを読む
posted by 神風記 at 00:00| Comment(0) | TrackBack(0) | ヒット判定(hitTest) | このブログの読者になる | 更新情報をチェックする

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) | イベント | このブログの読者になる | 更新情報をチェックする

loadしたswf内の変数をロードした側のswfから参照する。

loadしたswf内の変数をロードした側のswfから参照します。

前にやったものの復習です。

やり方を忘れる所だったのでメモです。

「Loader.content.ロードしたswfの変数名」でロードしたswfの変数にアクセスできますが
いきなりこれをやるとエラーが出てしまいます。Loader.contentの部分をあらかじめ変数、
オブジェクトとして定義しておきます。

var accessObj:Object=Loader.content;

accessObj.ロードしたswfの変数名

この様にLoader.content(パス)を変数化する事でLoaderがロードしたswfの変数にアクセス可能です。続きを読む