• 締切済み

外部の画像を読み込んで並べたい

お世話になります。外部の画像を読み込み、それを縦に並べるだけで、 難しいことは無い、と思って挑戦しましたが、すでにハマって、時間だけが過ぎております。 var btnlength = 7;//並べるボタン画像の数 var btncount=1; var oLsn:Object = new Object(); var myMcLoader:MovieClipLoader //読み込み成功時 oLsn.onLoadInit = function(mc:MovieClip) { mc._y = setbtn_y ; setbtn_y = setbtn_y + mc._height; btncount++; if (!(btncount > btnlength)){ create_btn(btncount); } } //ボタンMC作成 function create_btn(_cnt){ var _mc:MovieClip = this.createEmptyMovieClip("btn"+btncount, this.getNextHightestDepth()); myMcLoader.loadClip("img/btn"+ _cnt +".png",_mc); } myMcLoader = new MovieClipLoader(); myMcLoader.addListener(oLsn); create_btn(1); やろうとしていることは、 MovieClipLoaderを使って、狙いの画像を読み出し、 読み込まれた後に、次の画像を読み出す。 という仕様です。 現状では、一番最後の、7番目の画像のみが、7番目の位置に表示されます。それ以前の画像は表示されません。 それ以前の画像が、読み込まれていないのかと思い、onProgressや、エラーも見張ってみたのですが、問題無く読み込まれていました。 なぜ、表示されないのでしょうか? ご教授いただければ、幸いでございます。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#2(#1)です。 少し気になったもので...。 > ・変数の宣言 > ・スペルミスの修正 > で、動くようになりました。 単なる書き間違いかもしれませんが, 変数の宣言は特に必要ありませんよ。 「変数の初期値」 が必要な場合とそうでない場合があるのです。 ------------------ a = 5 + 3; b = a + 2; trace(b); ------------------ これ↑には,変数 a も b も初期値は要りません。 初期値は要らないと言うよりも, a は 5+3,つまり 8 が初期値になります。 b は 8+2,つまり 10 が初期値になります。 ですから,初期値は勝手に代入されるのであえて書く必要はありません。 ------------------ a = b + 3; b = a + 2; trace(b); ------------------ これ↑には,変数 b の初期値が要ります。 a は ?+3 で ?(非数) です。 したがって, b も ?(非数)+2 で ?(非数) になってしまいます。 良くあるのが次のパターンです。 ------------------ a++; //a=a+1 と同じ意味 b = a + 2; trace(b); ------------------ これ↑には,変数 b の初期値が要ります。 a は ?+1 で ?(非数) です。 したがって, b も ?(非数)+2 で ?(非数) になってしまいます。 最初に定数が入っていない変数は, 数として足し算や引き算や掛け算などができません。 そういうことです。 ですから,ActionScript2 までで,普通にスクリプトを書く場合は, 別に変数の宣言が必ず要るというものではありません。 a = ? * 5 みたいな計算ができないということです。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1 です。 #1で書いたように,スクリプトの最初の方に次のような1行が必要です。 ------------------------------------ // y座標指定用変数 setbtn_y の初期化 var setbtn_y:Number = 0; ------------------------------------ それと追加で, getNextHightestDepth() ←スペルミスです。 getNextHighestDepth() ←こうです。 #1を回答した(出勤前で検証する時間がなかった)後, ご質問で書かれていらっしゃるスクリプトを Flash のフレームアクションとしてコピペで貼り付けてみました。 私は英語に弱いもので直間で間違いには気づきません。 ですから貼り付けるまではスペルミスに気づきませんでしたが, 貼り付けたら文字が青色に変わらなかったのですぐにわかりました。 両方ケアレスミスだと思います。 ===================== 以下は回答ではなく検証報告です。 ではいったい 間違っている方のスクリプト getNextHightestDepth() では, _mc (btn1~7)はどの深度に作成されるのだろう? と思って, trace(_mc.getDepth()); で調べてみましたら, 全て深度 0 に作成されていました。 this.getNextHightestDepth() の値は当然 undefined ですが, undefined の場合は深度 0 に作成されるようです。 ご存じとは思いますが, 同じ深度に複数のインスタンスを配置できませんから, 前のものが消えるので btn1~6 は消えて btn7 だけが残るわけです。

Smarpon
質問者

お礼

BlurFiltan様 ご回答ありがとうございます。 なるほど、、。 、、ケアレスミスでしたか、検証していただきありがとうございました。 ・変数の宣言 ・スペルミスの修正 で、動くようになりました。 仰々しく質問しておきながら恥ずかしい限りです。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

ざっと見ただけで検証などはしておりませんが, setbtn_y の初期値が見あたりません。 > mc._y = setbtn_y ; > setbtn_y = setbtn_y + mc._height;  ↓こうなるのでは?↓ mc._y = 未定義; setbtn_y = 非数 + mc._height;  ↓したがって setbtn_y は 非数(NaN) mc._y = 非数;

関連するQ&A