第2回目ですね!

今回はついに部屋の遷移に挑戦です。
AS初挑戦なのでもっといい書き方や
注意点等があれば教えて頂けると本当に嬉しいです!

1.移動ボタンの作成

 ピクチャ 11

まずは移動させるための移動ボタンを
作る必要があるので、部屋レイヤーに
左右に長方形でボタンを作成します。
形は別に何でもいいです!

ピクチャ 13

そして、ボタンの画像が完成後、
選択しシンボルに変更します。
画像選択し右クリックからシンボルに変換できます。
シンボル名はどんな名前でも大丈夫です。

ただし種類はボタンを選択して下さい!
※厳密にはムービークリップでもできるようなのですが、
まぁボタンなので素直にボタン選択します。


ピクチャ 15

これでプロパティを確認し画像のようになっていれば成功です。
最後にインスタンス名を変更します。

私の場合は

左:transbarL_btn
右:transbarR_btn

としました。
ここは、AS書く時に使うので分かりやすい名前を
使った方がいいと思います!

ピクチャ 16

最後に、部屋のレイヤーの1フレーム目を選択し、
F6キーで4フレーム目まで部屋画像をコピーします。

そして分かりやすいように各部屋の色を変更しました。
これで最低限の部屋画像が4面完成です笑


2.部屋の遷移のAS 

2-1 AS2.0用のコードをAS3.0用に書き換え 

さて、ついにASを書く時がきました!
AS2.0環境ではスクリプトを直接ボタンに
記載できるのですが、AS3.0は無理なので、
アクションレイヤーの1フレーム目に記載します。

そして遷移のAS2.0のスクリプトが

on(Release){
gotoAndStop("s2");
}

こちらなのですが、このスクリプトの
on(Release)という書き方もAS3.0では無理ため、
AS3.0用に書き換えなくてはなりません…。

これはいきなり詰みそうな感じがしましたが、
あれこれ調べてようやく書き方を発見!

どうやらこう書けばいいようです。

transbarL_btn.addEventListener(MouseEvent.CLICK,transClickL);
function transClickL(evt:MouseEvent):void{gotoAndStop("s2"); }
 
1行目でtransbarL_btnにマウスをクリックした時に
 transClickLというイベントを定義。

2行目でそのイベントの内容を記載する形ですね。
※:voidの意味がいまいち分からないのですが、
とりあえずは気にしなくてよさそうなのでこのまま行きます笑


ココで注意点はtransbarL_btnの部分は
先ほど記載したボタンのインスタンス名に
しないと上手く動作しないです。
完全一致なので注意ですね! 
 
また、transClickLの部分は自分で
好きに定義して大丈夫です! 


2-2 4部屋分のASを記載

2−1でボタン1つ分のASが分かったので
今度はこのASを4部屋分のボタンに適用させる必要があります。

以下最終のスクリプトです。
※もっと簡略に書く方法もあるかも知れませんが、
とりあえず一番分かりやすかったもので書いてみました。

transbarL_btn.addEventListener(MouseEvent.CLICK,transClickL);
transbarR_btn.addEventListener(MouseEvent.CLICK,transClickR);
function transClickL(evt:MouseEvent):void{
if (currentLabel == "s1"){ 
gotoAndStop("s2"); 
}else if(currentLabel == "s2"){
gotoAndStop("s3"); 
}else if(currentLabel == "s3"){
gotoAndStop("s4"); 
}else if(currentLabel == "s4"){
gotoAndStop("s1"); }
}

function transClickR(evt:MouseEvent):void{
if (currentLabel == "s1"){ 
gotoAndStop("s4"); 
}else if(currentLabel == "s2"){
gotoAndStop("s1"); 
}else if(currentLabel == "s3"){
gotoAndStop("s2"); 
}else if(currentLabel == "s4"){
gotoAndStop("s3"); }
}
 
ラベルを使って、場合分けしてみました。
currentLabelで現在のラベル名を取得できます!
※フレーム指定で移動する事もできるのですが、
どちらがいいのかは不明です…。
この辺りは試してみて検証するしか無さそうです…。
とりあえずは本家様の通りにやってみます。

注意点としてはASの条件式を書く際に
currentLabel == "s1"の==を=と間違いやすいです。
イコールは==と記載するようです。


それではこのASをアクションフレームの
1フレーム目に記載します! 

ピクチャ 17

ここまでを動作確認してみると、
各部屋の遷移ができるようになりました。

AS楽しいですが大変です…。
とりあえず今回はここまでにします。

次はアイテムの取得に挑戦します!