板 1- 前 次 新 レス
何でも質問箱
[37]kiyo:06/06/05 17:41:10 ID:WqiYnG12
// いらさい
//…ふむはむ 大きな間違いはひとつだけですが 気になる点もチラホラ
layer_count=prompt("レイヤー数は?",4);
comp_name=prompt("コンポ名は?","コンポ 1");
LayerArrayMax=Number(layer_count)
// ↑セミコロンは書き忘れても改行があれば動くです…けどご注意ね
PreComp=new Array(LayerArrayMax);
// 配列を作成する時に要素数を指定して作ると 初期値が「不定(undefined)」ですのでご注意
// PreComp=new Array(); または PreComp=new Array;
// ↑こうやって無要素の配列で初期化した方が一般に副作用が少ないです。
// ↓の行で値を代入した時に要素を作るので充分でしょう。
for(var i=0;i<LayerArrayMax;i++)PreComp[i]=i+1;
// あと、ループの範囲をしっかり意識するためにたとえ命令ひとつであっても
// { 囲んだ方が } 良いでしょう。
function Index(Name){
for (i=1;i<=app.project.items.length;i++)if(app.project.items[i].name==Name)return i;
// この関数は 「ループで一度もマッチがなかった時」の戻り値が考慮されていない様です。
// ループを抜けた場合「失敗」なので「失敗の始末」を書いておきましょう。
return false;//<こんなふうに
}
myComp=app.project.item(Index(comp_name));
// ↑関数から正常な戻りの値があった時だけ処理を続行した方がよりよいプログラムです。↓
if (myComp){
// ここに処理を書く
myPreComp=myComp.layers.precompose([PreComp],"プリコンポ1-"+LayerArrayMax,true);
// これは 配列指定の間違いですね。
// "[PreComp]" < こう書くと 「 0番要素が配列"PreComp"である 要素数1個 の 無名配列 」のことです。
// 単に↓こう書かないと、配列PreCompの指定になりません。
myPreComp=myComp.layers.precompose(PreComp,"プリコンポ1-"+LayerArrayMax,true);
alert(PreComp);
alert(Index(comp_name));
}else{
// エラー時の処理を考えておきましょう
alert("レイヤ "+comp_name+" が、ありませんでした");
}
// こんなカンジです。 では
前 次 新