仕事が忙しくてプルタブを更新している暇がありません。
ごめんなさい。pulltabのSEOも最近落ちてきているので、やり直さなければなりません。
あうー。
本題
ボタンインスタンスbtn0~btn9の合計10個ある場合、
どれを押されたかを検出するには、一つ一つにコードを書き、フラグで検出するよりは
関数に飛ばして、関数内でfor文で処理させたほうが短くて済む。
for(i=0;i<10;i++){
btnOnRelease(i);
}
function btnOnRelease(_num){
this["btn"+i].onRelease = function(){
trace("btn"+i+" is released");
}
}
たとえばこんな感じ
たとえばっすよ!先輩!
switch (this._name) {
case "mcSamnail1" :
nImgNum = 1;
break;
case "mcSamnail2" :
nImgNum = 2;
break;
case "mcSamnail3" :
nImgNum = 3;
break;
case "mcSamnail4" :
nImgNum = 4;
break;
case "mcSamnail5" :
nImgNum = 5;
break;
case "mcSamnail6" :
nImgNum = 6;
break;
case "mcSamnail7" :
nImgNum = 7;
break;
case "mcSamnail8" :
nImgNum = 8;
break;
case "mcSamnail9" :
nImgNum = 9;
break;
case "mcSamnail10" :
nImgNum = 10;
break;
case "" :
nImgNum = Math.floor(1+Math.random()*6);
break;
default :
//nImgNum = Math.floor(1+Math.random()*6);
}
こいつを・・・
ActionScriptでの変数の罠です。仕事で1時間ほどはまったのでメモ。下記の二つのスクリプトを見比べてください。ActionScriptの書き出し設定を1.0のままにして、うっかりActionScript2.0で記述してしまいハマる人もおおいのでは?実は私も・・・
① AS1.0で正解
onClipEvent (load) {
nSpd = 4;
nTempWidth = 1200;
trace(nTempWidth);
}
// 実行結果
// 1200
②AS1.0では間違い
onClipEvent (load) {
var nSpd:Number = 4;
var nTempWidth:Number = 1200;
trace(nTempWidth);
}
// 実行結果
// undefined
ActionScript書き出し設定1.0
Flash MX2004pro
WindowsXP sp2
記事修正:12:29 2008/02/08
ActionScript スコープ this. のfunction内における動作の検証
ムービークリップ_root.mcHogeにASを書き込む。他にムービークリップ_root.mcPiyoを作成しておく。
/*:mcHoge:*/
onClipEvent ( load ){
//
_parent.mcPiyo.onRelease = function () {
trace("_name = " + _name);
trace("this._name = " + this._name);
};
}
実行結果
_name = mcHoge
this._name = mcPiyo
う~ん、マンダム 謎は深まるばかり。
WindowXP sp2
Flash MX 2004 pro
Flash player 7