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

2008年03月31日

[復習]ステージのwidthとheightを図るプロパティ

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

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

ステージのwidthを参照する

stage.stageWidth

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

stage.stageHeight

//ステージのwidthが550 heightが400

trace(stage.stageWidth);//output 550

trace(stage.stageHeight);//output 400
posted by 神風記 at 22:43| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月30日

[復習]小数点のを値を切り上げるMath.ceilについて

小数点のを値を切り上げるMath.ceilについて解説します。

1.5という値がをMath.ceil(1.5)とすると2を返します。

Math.floorに比べて使う機会は少ないですが、使いようによっては中々便利です。トップのギャラリーもMath.ceilを使ってます。Math.ceilの詳しい応用方法の例などは後日記載します。

例題

1.1という値ををMath.ceilで2を出力する。


var index_num:Number=1.1;

trace("index_num ="+index_num);//output 1.1

index_num=Math.ceil(index_num);

trace("index_num = "+ index_num);//output 2
posted by 神風記 at 22:25| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月29日

[復習]配列に値を追加するpush

配列に値を追加するpushについて解説します。


配列には様々な値を格納する事ができます。配列のpushを使用すると配配列の一番後ろにpushで指定した値を追加できます。

ソースコード



var sampleArray:Array=[,3,7,10];

trace("sampleArray = "+sampleArray);//output 3,7,10

sampleArray.push(20);

trace("sampleArray = "+sampleArray);//output 3,7,10,20
posted by 神風記 at 19:22| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月28日

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

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

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


例題

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

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

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

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

ソースコード | Flashゲーム研究所
posted by 神風記 at 20:25| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月27日

[復習]Stringの後ろにStringを追加するconcatメソッド

Stringの後ろにStringを追加するconcatメソッドについて解説していきます。

concatはStringのデータに文字列を追加するメソッドです。

concatメソッドを実行した元のStringオブジェクトの内容は変化しません。

例題

concatメソッドで文字列に曜日を順番に表示します。出力結果は
今日は月曜日
今日は火曜日
今日は水曜日
今日は木曜日
今日は金曜日
今日は土曜日
今日は日曜日
となります。
sample_str:String(concatを実行)、dayArr:Array(追加する各文字列を格納)、day_str:String(sample_strにdayArrの文字列を追加したオブジェクト)
の三つのオブジェクトを定義。dayArrには曜日順に月〜日の文字列を格納しておく。
for文の処理内でday_strにsample_str.concat(dayArr[i]+"曜日")の処理を行う。sample_strのconcatメソッドでdayArr[i]の各値を追加していく。

sample_str.concatでdayArrの各文字列を追加した文字列を代入したday_strを出力していく

ソースコード


var sample_str:String="今日は";

var dayArr:Array=new Array("月","火","水","木","金","土","日");

var day_str:String=new String();

for(var i:Number=0;i<dayArr.length;i++){

day_str=sample_str.concat(dayArr[i]+"曜日")

trace("day_str = "+day_str);

}
posted by 神風記 at 23:09| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

[復習]Stringの後ろにStringを追加するconcatメソッド

Stringの後ろにStringを追加するconcatメソッドについて解説していきます。

concatはStringのデータに文字列を追加するメソッドです。

concatメソッドを実行した元のStringオブジェクトの内容は変化しません。

例題

concatメソッドで文字列に曜日を順番に表示します。出力結果は
今日は月曜日
今日は火曜日
今日は水曜日
今日は木曜日
今日は金曜日
今日は土曜日
今日は日曜日
となります。
sample_str:String(concatを実行)、dayArr:Array(追加する各文字列を格納)、day_str:String(sample_strにdayArrの文字列を追加したオブジェクト)
の三つのオブジェクトを定義。dayArrには曜日順に月〜日の文字列を格納しておく。
for文の処理内でday_strにsample_str.concat(dayArr[i]+"曜日")の処理を行う。sample_strのconcatメソッドでdayArr[i]の各値を追加していく。

sample_str.concatでdayArrの各文字列を追加した文字列を代入したday_strを出力していく

ソースコード


var sample_str:String="今日は";

var dayArr:Array=new Array("月","火","水","木","金","土","日");

var day_str:String=new String();

for(var i:Number=0;i<dayArr.length;i++){

day_str=sample_str.concat(dayArr[i]+"曜日")

trace("day_str = "+day_str);

}
posted by 神風記 at 23:09| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月26日

[復習]SharedObjectを使って数字を保存

SharedObjectを使って前に入れた数字を保存して表示する処理を行います。

例題 テキストフィールドに半角数字を入れる。保存のボタンを押すと代入した数字がSharedObjectに保存される。ロードを押すと以前に入れた数字が表示される。

SharedObjectを使っているので一度保存した数字は新規に数字を保存するまで残ります。数字を入れた後一度swfを閉じ、再度swfを開いてロードボタンを押すと、前に保存した数字が表示されます。

例題のソースコード



var so:SharedObject = SharedObject.getLocal("saveData");
so.data.highScore ;

so.flush();
trace("so = "+so.data.highScore)//out put 1000


var input_txt:TextField=new TextField();

input_txt.width=100;

input_txt.height=20;

input_txt.border=true;

input_txt.type=TextFieldType.INPUT;

input_txt.text="半角数字をいれてください";

input_txt.autoSize=TextFieldAutoSize.LEFT;

input_txt.addEventListener(Event.CHANGE,changeHandler);

var isChange:Boolean=false;

function changeHandler(evt:Event)
{

if(!isChange)
{
trace("イベント適用");
input_txt.text="";
isChange=true;
}

}


addChild(input_txt);

var save_btn:Sprite=new Sprite();

save_btn.graphics.beginFill(0x000000);

save_btn.graphics.drawRect(0,0,40,20);

save_btn.graphics.endFill();

save_btn.y=100;

save_btn.addEventListener(MouseEvent.CLICK,saveHandler);

var score_num:Number=0;

function saveHandler(evt:Event)
{
score_num=Number(input_txt.text);

trace("数字のタイプは"+typeof score_num);

trace("入力された数字は"+score_num);

so.data.highScore=score_num;

so.flush();

}

addChild(save_btn);

var load_btn:Sprite=new Sprite();

load_btn.graphics.beginFill(0x000000);

load_btn.graphics.drawRect(0,0,40,20);

load_btn.graphics.endFill();

load_btn.y=300;

load_btn.addEventListener(MouseEvent.CLICK,loadHandler);

function loadHandler(evt:Event)
{
trace("現在のハイスコアは"+so.data.highScore+"です")
trace("score_txtの座標は"+score_txt.x);
score_txt.text="代入した数字は"+so.data.highScore
addChild(score_sp);

so.flush();

}

addChild(load_btn);

var score_sp:Sprite=new Sprite();

score_sp.graphics.beginFill(0x000000);

score_sp.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);

score_sp.graphics.endFill();



score_sp.alpha=0.4;

score_sp.addEventListener(MouseEvent.CLICK,removeScoreHandler);

function removeScoreHandler(evt:Event)
{
removeChild(score_sp);
}

var score_txt:TextField=new TextField();

score_txt.border=true;

score_txt.autoSize=TextFieldAutoSize.LEFT;


trace("score_txtの座標は"+score_txt.x);
score_txt.text="ここにスコアが入ります";

score_txt.x=(stage.stage.stageWidth)/2-(score_txt.width/2)
score_sp.addChild(score_txt);

var save_txt:TextField=new TextField();

save_txt.selectable=false;

save_txt.textColor=0xFFFFFF;

save_txt.text="保存";

save_txt.autoSize=TextFieldAutoSize.LEFT;

save_txt.border=true;

save_btn.addChild(save_txt);

var load_txt:TextField=new TextField();

load_txt.selectable=false;

load_txt.textColor=0xFFFFFF;

load_txt.text="ロード";

load_txt.autoSize=TextFieldAutoSize.LEFT;

load_btn.addChild(load_txt);

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

2008年03月25日

[復習]イベントハンドラに引数をわたす簡単な処理

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

イベントハンドラに任意の引数を設定した後に、
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 23:22| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月24日

[復習]returnを使って関数の処理を中断

returnを使って関数の処理を中断します。

returnは関数の処理を途中で中断する事もできます。

function decisionReturn(){
trace("処理に入りました")
if(!isBtn) return;
trace("isBtnをtrueがtrue。引き続き関数を実行")

}

isBtnの値がfalseの場合、その場で関数の処理が中断されます。よってreturnの下に定義したtrace()の処理は実行されません。

条件を満たしていない時は関数の処理を中断するという処理を行う時にreturnは非常に便利です。

Flashゲーム制作では変数の状態を判断し、処理を実行するかどうかを判断する機会が非常に多いので、条件が満たされていない場合はreturnで関数の処理を中断するreturnの処理は非常に役に立ちます。

ソースコード

var isBtn:Boolean=false;

decisionReturn();

function decisionReturn(){
trace("処理に入りました")
if(!isBtn) return;
trace("isBtnをtrueがtrue。引き続き関数を実行")

}

2008年03月23日

[復習]多次元配列を生成します

多次元配列を生成します。情報の整理に非常に便利です。

var sample_arr:Array=new Array();

sample_arr[0]=new Array()
sample_arr[0][0]="0,0";
sample_arr[0][1]="0,1";

sample_arr[1]=new Array()
sample_arr[1][0]="1,0";
sample_arr[1][1]="1,1";


多次元配列は配列の中に新たな配列が生成された配列です。多次元配列は使いこなすと非常に便利ですので、使用例等を後日アップしていきたいと思います。

基本的な生成方法

ソースコード

var sample_arr:Array=new Array();

sample_arr[0]=new Array();

sample_arr[0][0]="0の0";

sample_arr[0][1]="0の1";

sample_arr[0][2]="0の2";

sample_arr[1]=new Array();

sample_arr[1][0]="1の0";

sample_arr[1][1]="1の1";

sample_arr[1][2]="1の2";

trace(sample_arr)//0の0,0の1,0の2,1の0,1の1,1の2

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

2008年03月22日

[復習]現在のswfのラベル名を調べる。

現在のswfのラベル名を調べます。swfのラベル名はFrameLabel
オブジェクトを使用します。FrameLabelオブジェクトには、フレーム番号や定義されたラベル名を参照するプロパティがあります。

定義されたラベル名はFrameLabel.nameプロパティで参照できます。

name:String [read-only]


例題 swfに定義されたラベル名を取得します。

まず、this.currentLabelsメソッドでステージ中のすべてのラベルを取得し配列に格納します。
for文を使いcurrentLabelsで取得した配列のlengthの数だけ処理をループさせます。
for文内でFrameLabelオブジェクトを生成し、ラベル配列のi番目を代入します。ラベル配列が代入されたオブジェクトのnameプロパティを参照します。
FrameLabel.nameプロパティを参照し、ステージのラベル名を参照していきます。



stop();

var my_arr:Array = this.currentLabels;

for (var i:uint = 0; i < my_arr.length; i++) {

var frameLabel:FrameLabel = my_arr[i];

trace("ラベル名= " + frameLabel.name);
}

2008年03月21日

[復習]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+"回目");
}

2008年03月20日

[復習]for文の処理を途中で止める「break」について

for文の処理を途中で止める「break」について解説します。

breakはfor文の処理を途中で抜ける処理です。

breakを使う事でfor文の途中で条件を満たした時点でfor文を中断し、残りのループ処理を抜ける事ができます。

for(var i:Number=0;i<20;i++)
{
if(i>10){

break;
}
}

これはiが10以上になったらfor文の残りの部分をスキップして抜ける処理です。
posted by 神風記 at 20:09| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年03月19日

tryメソッドでエラーの発生の有無に関わらず実行される、「finally」について

finallyはtryメソッドで、エラー発生の有無に関わらず、実行される処理です。

tryメソッドはエラーが発生しない(try{}で定義された処理の実行が可能)場合は、try{}で定義したメソッドが実行され、エラーが発生した(実行が不可能)場合は、catch{}で定義されたメソッドが実行されます。

finallyは、その様なエラーの発生の有無に関わらず、実行される処理です。

例題

my_spというSpriteオブジェクトを生成する。

tryメソッド内に

Spriteオブジェクトを、ステージ上にaddChild()するメソッドと、定義したmy_sp内にmy_spをaddChildする処理(実行できない処理)を定義します。

実行できない処理である、my_sp内にmy_spをaddChildする処理をコメントアウトしているので、ここではtry{}で定義されたメソッドが実行されます。コメントアウトを解除すると、try{}で定義された処理は実行されず、エラー処理を拾う、catch()メソッドで定義された処理が実行されます。

finallyの処理は、処理が実行可能な場合に実行される、tryメソッド、エラーが発生した時に実行されるcatchメソッドのどちらが実行されても実行される。


import flash.display.Sprite;

var my_sp:Sprite = new Sprite();
try
{
stage.addChild(my_sp);

//実行するとエラーが起こる処理。コメントアウトを解除した場合、catch内のメソッドが実行される
//my_sp.addChild(my_sp);

trace("tryの実行が完了");
}
catch (e:ArgumentError)
{
trace("tryが実行されませんでした");

trace(e); // エラー内容を出力

}finally
{
trace("エラー発生の有無に関わらず実行される");
}
posted by 神風記 at 20:10| 条件分岐 | このブログの読者になる | 更新情報をチェックする

2008年03月17日

MC内のラベルを取得する

MC内のラベルを取得します。

例題

my_mcというMCのタイムラインに複数のラベルを定義します。

メインタイムラインに以下のコードを記述する事により、MCに定義されたラベル(シーン)を取得します。


ソースコード

//my_mcのラベルを総て取得する
var scene_arr:Array=my_mc.currentScene.labels;

//ラベルの数
trace("scene_arr="+scene_arr.length)

for(var i=0;i<scene_arr.length;i++)
{
//my_label=scene_arr[i].name

trace(scene_arr[i].name)
}
posted by 神風記 at 20:17| MC制御 | このブログの読者になる | 更新情報をチェックする

2008年03月16日

[独立部隊]TOP 昼の時間帯の画像を追加しました。

[独立部隊]TOP 昼の時間帯の画像を追加しました。

金曜、昼の時間帯の画像が追加されています。
posted by 神風記 at 19:32| 独立部隊 | このブログの読者になる | 更新情報をチェックする

2008年03月15日

[復習]配列のメソッドreverseを使って配列の並びを反転

配列のメソッドreverseを使って配列の並びを反転させます。

reverseメソッドを使う事で配列の並び順を逆にする事ができます。

例題

配列オブジェクトを生成。配列の中に1,2,3,4,5と五つの文字を入れる。trace()すると1,2,3,4,5の文字が返される。この配列オブジェクトにreverseメソッドを適用。再度trace()すると5,4,3,2,1の順に返される。



var get_arr:Array=new Array();

get_arr.push(1,2,3,4);

trace(get_arr);//output 1,2,3,4

//reverse()で配列の中身の順番を逆にする
get_arr.reverse();

trace(get_arr);//output 4,3,2,1

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

2008年03月13日

while処理に使うcontinueメソッドの基礎

while処理に使うcontinueメソッドの基礎を学習します。

continueメソッドを使います。

ソースコード


var my_ui:uint = 0;

while (my_ui < 13)
{
if (my_ui % 4 == 0) {
my_ui++;
continue;
}
trace(my_ui);
my_ui++;
}