• ベストアンサー

幅の異なる複数のムービークリップを等間隔で配置するには

複数のムービークリップをattachMovieで配置することはできたのですが、これらを左右に等間隔で並べるにはどうしたらいいでしょうか?同じ幅であればなんとかできそうなんですが、ムービークリップの幅がひとつひとつ異なる場合の処理で悩んでいます。 for (i = 1; i < 10; i++) { this.attachMovie ("A" + i,"A" + i,i,{_x:15, _y:15}); } ここまではできました。 これらを下記のようにすれば並べられるんですが、もっとスマートにするにはどうしたら良いでしょうか? A2._x = A1._width + 30; A3._x = A1._width + A2._width + 45; A4._x = A1._width + A2._width + A3._width + 60; A5._x = A1._width + A2._width + A3._width + A4._width + 75; よろしくお願いします。

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

  • ベストアンサー
  • atse
  • ベストアンサー率83% (36/43)
回答No.1

for (i = 1; i < 10;; i++) { var A = this.attachMovie ("A" + i,"A" + i,i,{_x:15, _y:15}); // X座標の変更 // iが1の時は変更なしで、それ以外は1つ前に作ったムービークリップ Anの // 座標に An のwidthを足し、更に間隔15を足したX座標にする A._x = i == 1 ? A._x : this["A"+(i-1)]._x + this["A"+(i-1)]._width + 15; }

iroha2008
質問者

お礼

atse様 回答ありがとうございます。見事に希望通りのことができました。教えていただいたスクリプトを、じっくり勉強させていただきます。ありがとうございました。

その他の回答 (1)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

1つ挿入するごとに変数にムービークリップを配置する位置を記録していき、この変数の値を見ながら配置してはいかがでしょう。 次のように考えます。 挿入するムービークリップの基準点が、全て”左端”にあるものとします。 変数を1つ用意し、初期値として、最初に挿入するムービークリップの位置を入れておきます。 ムービークリップの位置を決める際には、_x プロパティにこの変数の値を設定します。 1つ挿入するごとに、この変数に、今挿入したムービークリップの幅( _width プロパティの値)と余白の大きさを加えたものを加算します。これは今挿入したムービークリップの右端から余白の分を空けた位置であり、つまりこれが、次のムービークリップの左端の座標になります。 スクリプトの一例です。 リンケージ識別子 A1 ~ A10 と付けた、それぞれ幅の異なるムービークリップ(基準点は全て左端)があるとします。 このスクリプトはタイムラインに記述してください。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください) /*************************************************/  //余白の大きさ  margin_x = 15;  //配置位置のX座標を保持  //ムービークリップを配置するごとに、幅+余白分だけ増えていく  put_x = 15;  //ムービークリップを等間隔に配置する  for( i = 1 ; i <= 10 ; i++ )  {   //ムービークリップを挿入する   obj = this.attachMovie( "A" + i , "A" + i , i );   //位置を決める   obj._x = put_x;   obj._y = 15;   //次のムービークリップのために配置位置を更新する   put_x += obj._width + margin_x;  } /*************************************************/ 変数 put_x に、ムービークリップを配置する位置が入ります。 最初だけは、全体の左端の位置を初期値として設定しておきます。 ムービークリップを挿入→位置を決める→ put_x の値を更新、という作業を、for ループを使ってムービークリップの数だけ繰り返します。 ムービークリップの位置、特にXの座標を決める時は、変数 put_x の値を使います。 今挿入したムービークリップの位置を決めたら、次のムービークリップのために、put_x の値をムービークリップの幅+余白の分だけずらしておきます。 この作業を繰り返していくことで、ムービークリップの幅に関係なく等間隔に並べることができます。 計算で規則正しく配置する場合は、基準点の位置が大切です。基準点がムービークリップごとに違っていると、ズレたり重なったりすることがあります。 左端であれば、単純に幅+余白で次のムービークリップの配置位置が算出できますから、特に理由がなければ左端がオススメです。

iroha2008
質問者

お礼

DPE様 回答ありがとうございました。DPEさんの方法でも、見事に希望通り動作しました。詳しい解説まで付けていただき、本当にありがとうございます。しっかり勉強させていただきます。

関連するQ&A