変数のデータ型を指定して取得します。
変数の値を取得する際にデータ型を指定して引数に取得したい変数を変数の指定した型に変換して取得する事ができます
例題
文字列で"1"と定義された変数をuint(変数)で括る事により数値として計算する。
trace("my_da="+my_da);
var sample="1";
trace(10+sample);//101 正常に数値が計算されない
sample=uint(sample);
trace(10+sample)//正常に数値が計算された

2008年01月31日
2008年01月30日
Timerオブジェクトの実行回数の指定を行う
Timerオブジェクトの実行回数の指定を行います。
public 関数 Timer(delay:Number, repeatCount:int = 0)
定義時の第二引数で繰り返し回数を指定します。
var my_tm:Timer=new Timer(1000,3);
だと、第二引数に3と指定されているので3回処理を繰り返した後に停止します。
0を指定した場合、stop()メソッドで止めるまでずっと処理を繰り返します。
例題
my_tmというTimerObjectが5回処理を繰り返す。
var my_tm:Timer=new Timer(1000,5);
my_tm.addEventListener(TimerEvent.TIMER,tmHandler)
var repeat_ui:uint=0;
my_tm.start();
function tmHandler(evt:TimerEvent)
{
repeat_ui++;
trace(repeat_ui+"回目");
}
public 関数 Timer(delay:Number, repeatCount:int = 0)
定義時の第二引数で繰り返し回数を指定します。
var my_tm:Timer=new Timer(1000,3);
だと、第二引数に3と指定されているので3回処理を繰り返した後に停止します。
0を指定した場合、stop()メソッドで止めるまでずっと処理を繰り返します。
例題
my_tmというTimerObjectが5回処理を繰り返す。
var my_tm:Timer=new Timer(1000,5);
my_tm.addEventListener(TimerEvent.TIMER,tmHandler)
var repeat_ui:uint=0;
my_tm.start();
function tmHandler(evt:TimerEvent)
{
repeat_ui++;
trace(repeat_ui+"回目");
}
2008年01月29日
エンジン開発はバリバリ動かしてテストした方が作業効率が良いらしい

エンジン工事中。
演出面が一段落したので、実際に動かして色々やってます。
実際に動かして見て必要な事がわかる事機能がたくさんある事に気づく
自分の場合あらかじめ必要な機能を予測して実装するのもいいけど実際にバリバリ動かして必要とわかった機能をそのつど実装する方が色々な作業が前に進むのは間違いないとわかりました。
2008年01月28日
2008年01月27日
stringの文字列を区切って配列に返すsplit()メソッド
split()メソッドを使って指定した文字列で区切って配列に格納する事ができます。
function split(delimiter:*, limit:Number = 0x7fffffff):Array
第一引数で区切りたい文字列を指定します。
値は配列で返されます。
例題
「,」で区切った文字列を取得します。
文字列「black,0.5,0.02」
「,」で区切られた3つの文字列、数字があります。
これを「black」「0.5」「0.02」と三つに分けて取得します。
ソースコード
var my_str:String="black,0.5,0.02";
var my_arr:Array=new Array();
my_arr=my_str.split(",");
trace(my_arr[0])// black
trace(my_arr[1])// 0.5
trace(my_arr[2])// 0.02
trace(my_arr.length)//3
function split(delimiter:*, limit:Number = 0x7fffffff):Array
第一引数で区切りたい文字列を指定します。
値は配列で返されます。
例題
「,」で区切った文字列を取得します。
文字列「black,0.5,0.02」
「,」で区切られた3つの文字列、数字があります。
これを「black」「0.5」「0.02」と三つに分けて取得します。
ソースコード
var my_str:String="black,0.5,0.02";
var my_arr:Array=new Array();
my_arr=my_str.split(",");
trace(my_arr[0])// black
trace(my_arr[1])// 0.5
trace(my_arr[2])// 0.02
trace(my_arr.length)//3
2008年01月26日
引数に定義された値をスマートに取得する方法を考え中。

いままで放置していた「,」で区切られた文字列を一つ一つ効率良く取得する方法を考え中。今までは超ローテク方法で取得していたのでそろそろ綺麗に取得できんもんかと考えてます。
現在のコードの一部
fi_str=String(item_xl[index_ui].filta);//XMLオブジェクトのitemにある「filta」要素を取得
var fiP1_in:uint=fi_str.indexOf(",",0)
var fiP2_in:int=fi_str.indexOf(",",fiP1_in+1);
//第一引数の区切りにあたる「,」がfilta要素の文字列の何番目にあたるかを取得。第一引数、第二引数は必須項目のため、indexOfの結果が-1(記述していないと返す値)はありえないため、「fiP1_in」の型は-の符号を取得する事ができない「uint」を指定してます。
第三引数以降は記述しなくても動作するようにしている、つまりエンジン側でデフォルト値を割り当てています。ですので第三引数の値を検索するために必要な「fiP2_in」はindexOfで検索結果無しを表す「-1」の値を受け止める事ができる「int」に設定しています。
var fiImg_str=fi_str.substring(0,fiP1_in);//第一引数で区切られた
var fiTy_in=0;
//================特にここが効率が悪い
if(fiP2_in!==-1)
{
//XMLが第3引数以降を指定している場合
fiTy_in=String(fi_str.substring(fiP1_in+1,fiP2_in));//
} else
{
//第2引数で記述を終えている
fiTy_in=String(fi_str.substr(fiP1_in+1));//
}
//==================
擬似的な引数がXMLに記述されているかどうかを表す「,」をindexOf()で検索した結果によって取得方法が微妙に違うのですが、この辺りの文字列の取得ロジックが効率が悪いです。
クラスに文字列だけ投げて勝手に引数を取得できるメソッドを数時間ほど考える予定です。
数時間考えて駄目だったら保留します。
2008年01月25日
地震効果のXMLの疑似クラス設定

地震効果の設定が落ち着いたのでいまからXMLの疑似クラスに対応できるようエンジンを実装します。
地震効果のXMLの疑似クラス設定。
1 対象のオブジェクト
2 オブジェクトの揺れる揺れ幅
3 オブジェクトの揺れる時間
XMLにこの三つを入れる事で揺れる命令が実行できるようにする予定です。
2008年01月24日
画面が揺れる動きをつけたい

地震効果を実装中。
てはじめに、mcをトゥイーンアニメーションで動かす動きをくみました。
数分で組んだ簡単な処理なので当然ながらかなりかくかくした動きですこれからなめらかに動くように調整します。
import fl.transitions.*;
import fl.transitions.easing.*;
import fl.motion.easing.*;
import flash.utils.*;
my_mc.addEventListener(MouseEvent.CLICK,clickHandler);
var move_arr:Array=new Array(10,-10,0,10,-10,0);
var moveHoukou_arr:Array=new Array("x","x","x","y","y","y");
var moveArr_ui:uint=0;
var tw_arr:Array=new Array();
var mcA_tw:Tween;
var mcSp_num:Number=0.1;
function clickHandler(evt:Event)
{
trace("クリックされました");
moveArr_ui=0;
/*for(var i:uint=0;i<4;i++)
{
my_mc.x+=10;
}*/
mcA_tw=new Tween(my_mc,moveHoukou_arr[moveArr_ui],Quadratic.easeInOut,0,move_arr[moveArr_ui],mcSp_num,true);
mcA_tw.addEventListener(TweenEvent.MOTION_FINISH,mcAFinHandler);
tw_arr[0]=mcA_tw;
//bgXa_tw=new Tween(bg_arr[0],"x",Quadratic.easeInOut,bgStX_num,bgFiX_num,bgTiX_num,true);
}
function mcAFinHandler(evt:TweenEvent)
{
moveArr_ui++;
if(moveArr_ui>=move_arr.length)
{
trace("アニメーション終了");
} else
{
trace("move_arr.length="+move_arr.length+"moveArr_ui="+moveArr_ui)
mcA_tw=new Tween(my_mc,moveHoukou_arr[moveArr_ui],Quadratic.easeInOut,(move_arr[moveArr_ui-1]*2),move_arr[moveArr_ui],mcSp_num,true);
mcA_tw.addEventListener(TweenEvent.MOTION_FINISH,mcAFinHandler);
tw_arr[0]=mcA_tw;
}
}
2008年01月23日
cssを適用したテキストフィールドにappendText()メソッドは使えない

cssを適用したテキストフィールドにappendText()メソッドは使えないようです。
css_txt.styleSheet=style_css
とテキストフィールドを適用してから
css_txt.appendText("aaa");
appendText()メソッドを使うとエラーが出ました。
cssを適用したテキストフィールドでappendText()以外でテキストアニメーションを実現する方法を模索する予定です。
2008年01月22日
cssかテキストフォーマットか

テキスト表示関連の処理を最適化中。
スタイルシートでテキストを装飾するか、テキストフォーマットで装飾するか迷ってるので両方試してみようと思います。
2008年01月21日
テキストフィールドにcssを適用する処理のメモ
エンジンで使用するテキストにcssを使う事を検討しているので過去エントリーからテキストフィールドにcssを適用させる処理のメモ。
//cssファイル
.sampleStyle { font-family: Times New Roman, Times, _serif; font-size: 30; color: #333333;}
//cssファイル
.sampleStyle { font-family: Times New Roman, Times, _serif; font-size: 30; color: #333333;}
|
2008年01月20日
dispatchEvent()のイベントのブロードキャストがうまく動作したのでとりあえずエンジンの工事終了。
dispatchEvent()のイベントのブロードキャストがうまく動作してくれました。
今からSWfアニメーションの完了通知をdispatchEvent()する方法を研究します。
今からSWfアニメーションの完了通知をdispatchEvent()する方法を研究します。
2008年01月19日
現在の時刻を「時間(hours)」単位で取得
現在の時刻を「時間(hours)」単位で取得します。
時間帯を取得するにはDateクラスを使用します。
時間(60分)の取得はgetHoursプロパティで取得します。
例題
現在の時間を時間(hours)単位で取得します。
現在の時間が20時30分だったら20という数値を返します。
var date_da = new Date();
var nowHours_ui:uint= date_da.getHours();
trace("nowHours_ui="+nowHours_ui);
時間帯を取得するにはDateクラスを使用します。
時間(60分)の取得はgetHoursプロパティで取得します。
例題
現在の時間を時間(hours)単位で取得します。
現在の時間が20時30分だったら20という数値を返します。
var date_da = new Date();
var nowHours_ui:uint= date_da.getHours();
trace("nowHours_ui="+nowHours_ui);
2008年01月18日
エンジン工事中
エンジン工事中。
hasOwnPropertyでXMLの検索と実行していた時は要素の中に多数の属性を埋め込んで属性事に定義された情報を実行していたけどdispatchEventでトリガしていく今回の形式では、要素に一つも属性を持たせず、要素にXMLの疑似クラスみたいなもの作って引数持たせて、片っ端から要素をイベントトリガした方が早いかもしれません。
思いのほかバグが出てるので土日中かかりそうです。
ゲームエンジン制作は難しい・・・
だ が そ れ が い い ! !
hasOwnPropertyでXMLの検索と実行していた時は要素の中に多数の属性を埋め込んで属性事に定義された情報を実行していたけどdispatchEventでトリガしていく今回の形式では、要素に一つも属性を持たせず、要素にXMLの疑似クラスみたいなもの作って引数持たせて、片っ端から要素をイベントトリガした方が早いかもしれません。
思いのほかバグが出てるので土日中かかりそうです。
ゲームエンジン制作は難しい・・・
だ が そ れ が い い ! !
2008年01月17日
ゲームエンジン改造中。XMLの命令をdispatchEventのイベントトリガで行う事になりそう。

ゲームエンジン改造中です。XMLの命令の伝達をhasOwnPropertyで検索、実行していた処理からdispatchEvent要素を検索し、イベントトリガで制御する形式に書き換えそうです
今までのhasOwnPropertyはitemに記載されたプログラムで決められた順番通りに処理の実行を行ってくれるので、シナリオは書きやすい形でした。
しかし一つのアイテムを検索するのに必要以上に検索幅を広げるので、エンジンの命令の種類が多くなるほど情報検索量が多くなるという問題がありました。
今は特に問題ありませんが、これから結構な量の立ち絵やCGのアニメーション機能やエフェクト呼び出し機能を拡張する予定です。
後々の事を考えるとhasOwnPropertyに依存していたXMLの命令処理をdispatchEvent経由の命令に書き換えた方が良いと判断。
軽く1000行はエンジンコード書き換える必要がありますが、こういうのは早くした方がいいので今日明日中に大工事を予定してます。
2008年01月16日
時間帯取得のカテゴリを解説しました。

時間帯取得のカテゴリを解説しました。
Date()メソッドなど時間帯を計る処理を扱っていきます。
2008年01月15日
BitmapData.draw()でMCを複製する。

BitmapData.draw()メソッドでMCを複製します。
BitmapDataオブジェクトを生成。
BitmapData.draw()メソッドの第一引数に複製したいオブジェクトを指定。
Bitmapオブジェクトを定義。
Bitmapオブジェクトをnewで生成する際の第一引数に、BitmapDataオブジェクトを代入。
例題
ステージに配置した「my_mc」を複製する。
BitmapData.draw()メソッドで第一引数に「my_mc」というmcを代入します。BitmapDataオブジェクトにmy_mcが複製されました。
「Bitmap」オブジェクトを生成し、draw()メソッドでMCを代入したBitmapDataオブジェクトを、Bitmapオブジェクトに代入します。
これでステージ上にあるmy_mcが複製されます。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;
var myBitmapData2:BitmapData = new BitmapData(200, 40);
myBitmapData2.draw(my_mc);
var bmp2:Bitmap=new Bitmap(myBitmapData2);
this.addChild(bmp2);
2008年01月14日
独立部隊のTOP仕様変更 曜日と時間帯二つの要素から選択。

独立部隊のTOPを曜日と時間帯二つの要素から選択できるようにしました。
3(時間帯)×7(曜日)で一週間で21パターンをローテーションしていく形式です。
時間を判断するのはDateメソッドで行い、画像管理はXMLで行っています。






