• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xmlで読み込んだ幅が違う画像を横に並べる方法がわかりません。【AS3】)

xmlで読み込んだ幅が違う画像を横に並べる方法がわかりません。

このQ&Aのポイント
  • Flash CS3 AS3を使用して、xmlで読み込んだ幅が異なる画像を横に並べる方法が分かりません。
  • 要求された仕様に基づいて、表示される画像の高さを360pxに固定し、各画像の幅を計算して10pxの間隔で横に並べたいです。
  • 現在のコードではうまく動作せず困っています。助けていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mahny
  • ベストアンサー率74% (57/77)
回答No.1

私はCS3は持っていないので確認は出来なかったのですが、、、 ★問題点 bannermc[i].x = bannermc[i].x + rw[i]; の処理ですが、、、 bannermc[i].xがおそらく初期値が0なので bannermc[i].x = rw[i]; と同じ またrw[i]はi番目の画像の幅と10を足しているだけなので 全ての画像が x座標=(画像幅+10) の位置に来てしまっていると予想します。 配列をそのまま使うなら bannermc[i].x = bannermc[i-1].x + rw[i-1]; が正解になるんですかね。 ※ただし(i==0)の時は、bannermc[i]=0; としないと  配列範囲外へのアクセスで例外エラー出ますね。 ★直してみたコード forとwhileが重なってるのが見づらかったので外しちゃいました。 -------------------- //画像の数だけバナークラスの作成を繰り返す var rw:Number = 0; for each(var element:XML in xmlList) {  var bannermc = new bannerclass(             element.@image,             element.@link,             element.@target,             element.@imgwidth,             element.@imgheight);  // ★ここが問題の部分  bannermc.x = rw;  scrollmc.addChild(bannermc);  // 次に並べる画像の開始位置 = 余白 + ( 元の画像幅 * 拡大率 )  rw = 360 * element.@imgwidth / element.@imgheight + 10; }

kgfx
質問者

お礼

ありがとうございます! ばっちりでした!!!! キレイに並びました。 もうここで何日苦労したか。。。 これで今日はゆっくり寝れそうです。 間違いの部分も作って頂いたサンプルを見て直せました。 +=でrwを足していくということですね。 色々勉強になります。 これから、ボタンを配置して、クリックでスライドするスクリプトに挑戦です! ありがとうございました!

その他の回答 (1)

  • mahny
  • ベストアンサー率74% (57/77)
回答No.2

#1です。 すいません。直したコードの最後間違っていますね。 // 次に並べる画像の開始位置 = 前画像の開始位置 + ( 元の画像幅 * 拡大率 ) + 余白 (誤) rw = 360 * element.@imgwidth / element.@imgheight + 10; (正) rw += 360 * element.@imgwidth / element.@imgheight + 10;

関連するQ&A