• ベストアンサー
  • すぐに回答を!

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

  • 質問No.5152181
  • 閲覧数95
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 88% (8/9)

複数のムービークリップを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;

よろしくお願いします。

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 83% (36/43)

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

お礼率 88% (8/9)

atse様

回答ありがとうございます。見事に希望通りのことができました。教えていただいたスクリプトを、じっくり勉強させていただきます。ありがとうございました。
投稿日時:2009/07/24 21:27

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 85% (666/776)

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

お礼率 88% (8/9)

DPE様

回答ありがとうございました。DPEさんの方法でも、見事に希望通り動作しました。詳しい解説まで付けていただき、本当にありがとうございます。しっかり勉強させていただきます。
投稿日時:2009/07/24 21:32
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ