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

2008年06月23日

[復讐]配列の値を切り取るspliceについて

配列の値を切り取るspliceについて
配列の値を削除する事ができるspliceについて解説します。
このメソッドを使うことで配列の中身の削除や追加など配列の中身を変更できます。
引数では配列の操作範囲を定義します。
第一引数は操作を行う配列エレメントのインデックス位置です。配列の操作を行う開始位置です。
第二引数では第一引数で指定した位置からいくつ配列を操作するかを定義します。配列をいくつ操作するかを定義します。
配列の操作は膨大なデータを扱うFlashゲームの制作に必須です。この様に配列を直接変更するspliceメソッドも使う機会が多いと思います。

今回は配列を生成しその配列の値をspliceメソッドで削除する処理を行います。



例文

配列オブジェクトsampleArrを生成。sampleArr.splice(2,4)と定義。配列の2のインデックス位置から4つの値を切り出す。traceでspliceによって切り出されたsampleArrを確認する。

ソースコード

var sampleArr:Array=new Array(1,2,3,4,5,6,7,8,9);trace(sampleArr);//output 1,2,3,4,5,6,7,8,9sampleArr.splice(2,4);trace("sampleArr = "+sampleArr)//output 12789
posted by 神風記 at 00:07| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月12日

[復習]?と:を使って条件分岐処理を行います。

?と:を使って条件分岐処理を行います。

例文

(sample2_ui<sample_ui)?trueMethod():falseMethod()

(条件文)?trueの場合の処理:falseの場合の処理

という風に記述します。

:の前の処理がtrueの場合の処理。

:の後の処理がfalseの場合の処理です。

簡潔に分岐処理を行う場合はこの手法がお勧めです。


var sample_ui:uint=10;
var sample2_ui:uint=8;

decisionCondition();
function decisionCondition(){


(sample2_ui<sample_ui)?trueMethod():falseMethod()

}

function trueMethod(){

trace(":(コロンの)前のtrueの場合の処理が実行されました")

}

function falseMethod(){
trace(":(コロン)の後のfalseの処理が実行されました");
}
posted by 神風記 at 21:15| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月11日

!(論理否定演算子)を使ってBoolean変数がtrueかfalseかを判断

!(論理否定演算子)を使ってBoolean変数がtrueかfalseかを判断します。

var isBtn:Boolean=false;

if(!isBtn){
trace("falseです");
}

変数の前に「!」をつける事によって変数が「false」の場合はという条件式になります。

Boolean変数のtrue,falseを判断するのに非常に便利な演算子なので覚えておく事をおすすめします。

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

2008年04月10日

XMLオブジェクトのデータ型を変換



XMLオブジェクトのデータ型のデフォルトは、「XML」です。

XMLに記述されているのが、文字列でも数字でも一律「XML」のデータ型です。

一度変数に、XMLの値を格納するのがベターな方法ですが、XMLにアクセスする際に直接データ型を指定する事で、そのまま、値を指定したデータ型へ変換し、使用する事ができます。

XMLオブジェクトのデータ型を指定して、そのまま値を使用する一例。

ch_arr[uint(item_xl[i].ch[chi].ui)][2].content.gotoAndStop(String(item_xl[i].cf[cfi].@str))

この様にデータ型を指定する事で、そのままXMLの値をFlashのオブジェクトに適用する事ができます。
posted by 神風記 at 22:10| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月09日

[復習]SharedObjectの保存をその場で行うflush()メソッド

SharedObjectの保存をその場で行うflush()メソッドについて解説します。

public function flush(minDiskSpace:int = 0):String

第一引数はSharedObjectに割り当てる必要のある最小ディスク領域 (バイト単位) を指定します。

引数はデフォルトで0です。


flush()メソッドはローカルに作成されたSharedObjectをただちにローカルファイルに書き込みます。このメソッドを使用しない場合、SharedObjectがファイルに書き込まれるのは、SharedObjectセッションの終了時となります。
それはswfファイルが閉じられるときです。
SharedObjectが参照されなくなってガベージコレクションされるとき、SharedObject.clear() または SharedObject.close() が呼び出されたとき、のいずれかの時点になります。

例題

flush()メソッドを使ってmy_soというSharedObjectのデータを保存する(solファイルの生成、更新を行う)


save_btn.addEventListener(MouseEvent.CLICK,saveHandler)

var my_so:SharedObject;


my_so=SharedObject.getLocal("getfordasave02");


var index_ui:uint=20;
//localPath
function saveHandler(evt:Event)
{
//dataプロパティにdata1_numという保存変数を生成しその中にindexuiの値を入れる
trace("セーブされました。flush()を実行します")
my_so.data.data1_num=index_ui;

//SharedObjectのデータ保存を実行します
my_so.flush();
var soStatus_str:String=my_so.flush();
trace("soStatus_str="+soStatus_str)//保存が成功すると「flushed」が返される

}

load_btn.addEventListener(MouseEvent.CLICK,loadHandler)

function loadHandler(evt:MouseEvent)
{

trace("dataプロパティに格納されている、data1_numという変数を参照する"+my_so.data.data1_num)
}
posted by 神風記 at 21:55| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月07日

[復習]matchメソッドを使用して、文字列を検索

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

function match(pattern:*):Array

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

例題

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

ソースコード


var my_str:String="検索用の文字列です";

var my_arr:Array=new Array();

var my2_arr:Array=new Array();

//matchメソッドでmy_strの中から「検索」という文字列を検索。
my_arr=my_str.match("文字列です");

trace("my_arr="+my_arr)//output 文字列です

//matchメソッドでmy_strの中から「検索」という文字列を検索。
my2_arr=my_str.match("該当無し");

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

2008年04月05日

[復習]Loaderでロードした画像は、一度に二つ以上表示できない

Loaderでロードした画像は、一度に二つ以上表示できません。

ですが、BitmapDataとしてなら複製し、同時に二つ以上、表示する事も可能です。

今回は、Loaderでロードした画像をビットマップデータとして書き出すコードを掲載します。

手順

Loaderオブジェクトがファイルをロード

ロード完了後、BitmapData オブジェクトを定義し、widthとheightをLoaderのwidthとheightに設定する

BitmapData.draw(lo)。BitmapData.draw()メソッドの引数にLoader()オブジェクトを代入する

Bitmapオブジェクトを定義。生成時の引数に上記のBitmapDataオブジェクトを代入。

以上の流れでLoaderでロードしたオブジェクトを複製する事ができます。

//画像をロードするLoaderオブジェクト
var my_lo:Loader=new Loader();

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

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

addChild(my_lo)

function coHabdler(evt:Event)
{
trace("オブジェクトのロード完了");

//BitmapDataオブジェクトを複製する
var my_bmd:BitmapData = new BitmapData(my_lo.width, my_lo.height);

//BitmapDataにLoaderのデータを複製する
my_bmd.draw(my_lo);

//Bitmapオブジェクトを生成し引数にLoaderデータを複製したBitmapDataを代入

var my_bm:Bitmap = new Bitmap(my_bmd);

//
my_bm.x+=300;

addChild(my_bm);

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

2008年04月04日

[復習]loaderにロードされたswfがrootの変数を参照

rootにaddChildしたloaderオブジェクトがswfファイルをloadした際にloaderにロードされたswfがrootの変数を参照する方法を解説します。loaderにロードされたswfがrootの変数を参照する処理はFlashゲームを制作する上で使用頻度が高い処理だと思います。

loaderにloadされるswfがparentを参照するための変数を生成します。
loaderにloadされたswfにthis.parent.parentと記述し変数に代入する事でrootを参照する事ができます。
loadされるswfにsampleParentオブジェクトを生成。
var sampleParent=this.parent.parent。
rootに変数を生成。rootのloaderオブジェクトがswfファイルをロードする。loadされたswfファイルのオブジェクトをクリックするとrootの変数を参照する。


ソースコード 

rootに記述

var root_str:String="呼び出しもとのrootに設定した変数です";

var get_sp:Sprite=new Sprite();

get_sp.graphics.beginFill(0x000000);

get_sp.graphics.drawRect(0,0,100,100);

get_sp.graphics.endFill();

addChild(get_sp)

get_sp.addEventListener(MouseEvent.CLICK,clickHandler);

var sampleLoader:Loader=new Loader();

sampleLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);

function clickHandler(evt:Event)
{
sampleLoader.load(new URLRequest("set.swf"));
}

function completeHandler(evt:Event)
{
addChild(sampleLoader);
}


loaderにロードされるswfに記述。呼び出されたrootの変数を参照

var getRoot:Object=this;

var sansyouBtn:Sprite=new Sprite();

sansyouBtn.graphics.beginFill(0x000000);

sansyouBtn.graphics.drawRect(0,0,100,100);

sansyouBtn.graphics.endFill();

sansyouBtn.x=300;

addChild(sansyouBtn);

sansyouBtn.addEventListener(MouseEvent.CLICK,sansyouHandler);

function sansyouHandler(evt:Event)
{
trace("rootの変数を参照 ="+getRoot.parent.parent.root_str);
}
posted by 神風記 at 21:16| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月03日

[復習]「split」でStringから任意の文字を区切り整理

「split」でStringから任意の文字を区切り整理します。

var arr:Array=new Array();

arr=str.split();

var arr:Array=str.split();

var my_arr:Array=my_arr=my_str.split(",");//

var my_str:String="black,0.5,0.02";

var my_arr: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
posted by 神風記 at 21:07| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

2008年04月02日

[復習]SharedObjectで生成したsolファイルへのパス

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


C:\Documents and Settings\ユーザー名\Application Data\Macromedia\Flash Player\#SharedObjects
posted by 神風記 at 23:00| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする

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月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月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| メモ(復習 走り書き) | このブログの読者になる | 更新情報をチェックする