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

2007年12月31日

セーブデータのロード、生成を行うgetLocalメソッド


セーブデータを取得するgetLocalメソッドについて解説します。

public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject

第一引数に「セーブファイル名」です。

第二引数にセーブファイルを格納するパスを指定します。

第三引数にSharedObjectがhttp経由で接続されているかどうかを指定します。

getLoacalで指定したパスにsolファイルが無い場合は第一引数に指定したファイル名でsolファイルが生成されます。

セーブファイルのロードやセーブファイルの作成はこのgetLocalで行います(セーブファイル保存のメソッドSharedObject.flush()メソッドはは後日解説します)

例題

「save」というファイル名のセーブファイルを生成します。

SharedObjectフォルダ以下のディレクトリに「save.sol」というセーブファイルが生成されます。一度生成したこの「save.sol」はgetLocal()メソッドでロードする事ができます。

var my_so:SharedObject;

//ルートフォルダに生成
my_so=SharedObject.getLocal("save");
posted by 神風記 at 06:00| セーブ | このブログの読者になる | 更新情報をチェックする

2007年12月30日

SharedObjectクラスでセーブファイルを生成する。

データのセーブにはSharedObjectを使用します。

SharedObjectはユーザーのコンピュータに限定された量のデータの格納読み込みを行うものです。

このSharedObjectを使うことによってゲームのセーブ処理を実行する事ができます。

今回はSharedObjectの簡単な定義方法を行います。

例題

SharedObjectを使ってコンピュータに「save01」というセーブファイルを使用します。getLocalメソッドを使う事でセーブファイルを生成する事ができます。getLocalメソッドについては後日解説します。

//my_soという共有オブジェクトを定義
var my_so:SharedObject;

//save01というsolファイル(セーブファイル)を生成
my_so=SharedObject.getLocal("save01");
posted by 神風記 at 14:26| セーブ | このブログの読者になる | 更新情報をチェックする

2007年12月29日

SharedObjectで生成したsolファイルへのパス

SharedObjectで生成したsolファイルへのパスを記述します。


C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Flash Player\#SharedObjects
posted by 神風記 at 01:00| セーブ | このブログの読者になる | 更新情報をチェックする

2007年12月28日

セーブカテゴリを新設



セーブカテゴリを新設しました。

ゲームの進行状況を記録するための処理を研究します。

ゲームの進行状況、ステータス等を記録する処理を研究しセーブ機能をゲームエンジンに実装する事を目的に研究を行っていきます。

非常に重要な研究です。
posted by 神風記 at 01:38| セーブ | このブログの読者になる | 更新情報をチェックする

2007年12月27日

XMLへのアクセスを高速化(xmlList使用)

xmlへのアクセスを高速化できそうな処理を見つけたのでメモっときます。

ポイントは二つ

1
「xmlList」オブジェクトにxml.itemを代入する事でxml.item[index]へのアクセスをxmlList[index]で行う事ができる。

ここが重要

2
with(pass_xl[index_ui])
{
if(hasOwnProperty("text"))
{
trace("itemにtext要素が存在します")
}

if(hasOwnProperty("cg"))
{
trace("itemにcg様子が存在します")
}
}

withでxmlパスを回す事で一括してXMLのitemにアクセスできる

例題

1 xml.item[index_ui]へのをpass_xl[index_ui]で行うようにする

2 with(pass_xl[index_ui])で一括してpass_xl[index_ui])内の要素を参照する

var sample_ulo:URLLoader=new URLLoader();

var my_xml:XML;

sample_ulo.load(new URLRequest("xml/op.xml"));

sample_ulo.addEventListener(Event.COMPLETE,cpmpleteHandler)

var index_ui:uint=1;

var pass_xl:XMLList;

function cpmpleteHandler(evt:Event)
{
trace("ty="+typeof evt)
my_xml=new XML(evt.target.data);

pass_xl=my_xml.item;

//trace("my_xml="+my_xml)

with(pass_xl[index_ui])
{
trace("text="+text);

trace(hasOwnProperty("text"))
if(hasOwnProperty("text"))
{
trace("itemにテキストが存在します")
}



}

trace("pass_xl="+pass_xl[1])

}
posted by 神風記 at 05:34| XML | このブログの読者になる | 更新情報をチェックする

2007年12月26日

タイムラインアニメーションをActionScript3.0として書き出す方法



アニメーションをActionScript3.0として書き出す方法を紹介します。

1 タイムラインアニメーションを定義

2 定義したアニメーションのタイムラインをドラッグして右クリック

3「ActionScript3.0としてのモーションコピー」を選択(クリップボードにアニメーションコードが格納される)

4 プロンプトにアニメーションさせる対象のオブジェクト名を入力

5 3でコピーされたアニメーションコードをスクリプト記入欄にペースト。

これでタイムラインアニメーションをプログラムで実行する事ができます。
posted by 神風記 at 01:00| アニメーション | このブログの読者になる | 更新情報をチェックする

2007年12月25日

アニメーションカテゴリを新設


アニメーションカテゴリを新設しました。
ゲームエンジンにも組み込めるようにプログラムによるアニメーションを切り口に研究していきます。
タイムラインアニメーションを定義→XMLで出力→アニメーションをプログラム化→ゲームエンジンに組み込む。
この流れを精力的に研究していきます。
プログラムのアニメーションに関する事柄は随時記録していきます。

このアニメーションの研究を通してゲームエンジンにアニメーション機能を搭載できるように努力したいと思います。
posted by 神風記 at 05:42| アニメーション | このブログの読者になる | 更新情報をチェックする

2007年12月24日

AS3XMLギャラリーの処理を近日中に少し書き換える予定。



AS3ADVエンジンを最適化していく内に今のXMLギャラリーには無駄な処理が非常に多い事がわかったので近日中にAS3XMLギャラリーの処理を少し書き換える予定です。

具体的にはフェードインの処理をTimerイベントでやっていたりSpriteでできる事をMovieClip使ってたりしたのでその辺りを簡単に書き換える予定。
posted by 神風記 at 05:42| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年12月23日

!演算子を使用してStringに文字列が入っているかどうかを判断する

!演算子を使用してStringに文字列が入っているかどうかを判断します。

String!=="文字列"
でStringが特定の文字列ではない場合というif文を作る事ができます。

例題

Stringオブジェクトに文字列が入っているか否かを判断する。
Stringオブジェクトは二つ用意する。一つは「"a"」を代入し、もう一つはStringオブジェクトを定義した時に自動的に代入される「null」の値が設定されている。




var my_str:String="a";

//Stringの中身が空白ではない場合 
if(my_str!="")
{
trace("文字列が入っています");
}

var sample_str:String;

trace("sample_str="+sample_str)

//Stringの中身がnullではない場合
if(sample_str!=null)
{

trace("sample_strはnullではありません");
}
posted by 神風記 at 15:12| 条件分岐 | このブログの読者になる | 更新情報をチェックする

2007年12月22日

!演算子使ったindexOfで検索した文字列があったかどうかを判断するif文

!演算子を使ってindexOfで検索した文字列があったかどうかを判断するif文を研究します。

例題 "flash"という文字列を格納したStringの文字列に対して、indexOfで「f」という文字列を検索。
indexOfは値がない場合は-1を返すが、ここでは文字列が含まれるので、-1は返されないため「-1ではない場合(indexOfで検索した文字列は該当しない)」というステートメントは
実行される

var sample_str:String="flash";

var get_num:Number=sample_str.indexOf("f",0)



//数が特定の数でない場合という式を判断するには変数の後に!を
if(get_num!==-1)
{
alert("get_numは-1ではない");
}
posted by 神風記 at 01:00| Stringの操作 | このブログの読者になる | 更新情報をチェックする

2007年12月21日

!演算子を使用した変数が特定の値でない場合を判断するif文

変数が特定の値でない場合という式を判断するには変数の後に!をつけます。

変数の値が特定の値ではない場合のif文の処理は使う機会が多いので覚えておく事をお勧めします。

例題

変数get_numを生成し、値を2に設定。

if(get_num!==-1){}という処理を定義。get_numは-1でないためステートメントが実行される。

var get_num:Number=2

//数が特定の数でない場合という式を判断するには変数の後に!を
if(get_num!==-1)
{
alert("get_numは-1ではない");
}
posted by 神風記 at 12:44| 条件分岐 | このブログの読者になる | 更新情報をチェックする

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年12月18日

イベントハンドラに引数を渡すやり方を考える。

コードの整理中に、無駄な処理が非常に多い事に気づいたので効率よくメソッドを
使い回すやり方を調べてます。

処理の根本的な内容が共通しているイベントハンドラを使い回す方法を取ろうと思います。

イベントハンドラの関数を使い回すために、現在イベントハンドラに引数を渡すやり方を模索しています。

明日明後日中にはイベントハンドラに引数を渡す方法を調べ上げたいと思います。

2007年12月17日

setChildIndexの復習



setChildIndexの復習です。

深度を指定するsetChildIndexのおさらい。

第一引数で対象のオブジェクトを指定

第二引数で、第一引数で指定したオブジェクトの深度の値を指定。

例題

sample_mcというオブジェクトの深度を2に設定する。

setChildIndex(sample_mc,2);
posted by 神風記 at 12:42| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2007年12月16日

エンジンのコード整理



AS3ADVエンジンの総コード数が3000行超えているのですが各関数と変数の位置に統一性がなく、コードが整理されていないので今日はエンジンをコーディングをしやすいように整理を行っています

今日明日中には関数と変数の位置に統一性を持たせ、エンジンを改造しやすいようにしたい所。

エンジンコードを整理することは作業効率を向上させる事において非常に大事な事だと実感。
posted by 神風記 at 15:29| ADVエンジン | このブログの読者になる | 更新情報をチェックする

2007年12月15日

Wipeクラスを使ってワイプアニメーションを行う



Wipeクラスを使ってワイプアニメーションを行います。

Wipe クラスは、シェイプのアニメーション化されたマスクを使用して、MCの表示と非表示を切り替えます。

マスクアニメーションの方向は第六引数の「startPoint 」数字を指定する事によって定義する事ができます。

startPoint : ワイプアニメーションの開始位置を示す整数。
値の範囲は 1 〜 9 。左上 : 1。中央上 : 2。右上 : 3。左中央 : 4。中央 : 5。右中央 : 6。左下 : 7。中央下 : 8。右下 : 9。

例題

filta_mcというMCを1秒かけてワイプアニメーションで表示させる。
ワイプアニメーションの方向は右下から左上にかけて行われる(startPoint引数を9に指定しいるため)

import fl.transitions.*;
import fl.transitions.easing.*;

TransitionManager.start(filta_mc, {type:Wipe, direction:Transition.IN, duration:1, easing:None.easeNone, startPoint:9});
posted by 神風記 at 15:07| トランジション | このブログの読者になる | 更新情報をチェックする

2007年12月14日

PixelDissolveクラスでトランジションを行う

PixelDissolveクラスでトランジションを行います。

チェッカーボードのパターンでランダムに表示される矩形または消える矩形のアニメーションを使ってMCの表示非表示を制御します。

例題

filta_mcをPixelDissolveクラスのアニメーションで3秒かけて表示させる。使う短形の数はX軸に20個。y軸に20個


import fl.transitions.*;
import fl.transitions.easing.*;

TransitionManager.start(filta_mc, {type:PixelDissolve, direction:Transition.IN, duration:3, easing:Regular.easeIn, xSections:20, ySections:20});
posted by 神風記 at 22:39| トランジション | このブログの読者になる | 更新情報をチェックする

2007年12月13日

フェード処理をトランジションで行う。

フェード処理をトランジションで行う事ができます。

第二引数のトランジションタイプをFadeに指定する事によってフェードのアニメーションが行えます。

例題

maskFilta_mcというMCを2秒かけてフェードインさせる。

function FadeLoader()
{
// maskFilta_mc.visible=true;
TransitionManager.start(maskFilta_mc, {type:Fade, direction:Transition.IN, duration:2, easing:Elastic.easeOut});
}
posted by 神風記 at 13:41| トランジション | このブログの読者になる | 更新情報をチェックする

2007年12月12日

Blindsのトランジション効果

Blindsのトランジション効果の基礎的な処理を行います。

ADVの場面切り替えにおいて使用する予定。

Blinds クラスは、次第に表示される矩形または消えていく矩形を使用して、MCの表示アニメーション、非表示アニメーションを行う事ができます

この効果では次のパラメータを必要とします。

numStrips : Blinds 効果内のマスクストリップの数。推奨される値の範囲は 1 〜 50 です。
dimension : マスクストリップが垂直 (0) か水平 (1) かを示す整数。


例題

maskFilta_mcをBlindsでアニメーションして表示させる。1秒かけて10本のストライプで水平にアニメーション。

import fl.transitions.*;
import fl.transitions.easing.*;

TransitionManager.start(maskFilta_mc, {type:Blinds, direction:Transition.IN, duration:3, easing:None.easeNone, numStrips:10, dimension:1});

第一引数

maskFilta_mc(maskFilta_mcというMCをブラインドアニメーションでフェードインさせる)

第二引数
type:Blinds(Blinds でBlindタイプのアニメーションを指定)

第三引数

direction:Transition.IN(Transition.INで第一引数で指定したmaskFilta_mcを第二引数で指定したBlindsで表示させる)

第四引数

maskFilta_mc

duration:3(3秒かけてアニメーションを行う)

第五引数

numStrips:10(Blindsアニメーションのストライプの数を指定)

第六引数

dimension:1(マスクストリップを水平に指定)
posted by 神風記 at 13:11| トランジション | このブログの読者になる | 更新情報をチェックする