2017-05-14 32 views
0

私は映画が再生されるたびにランダムな順序で3x3グリッドに追加したい9個のポラロイドのムービークリップを持っています。ステージにムービークリップを追加するにはどうすればいいですか?

私はそうのような配列のポラロイドの名前をしている:

var animals:Array = ["lion_polaroid", "rhino_polaroid"...];

はどのようにして、ステージに追加する関数を作成することができますか?私の主な問題は、a)グリッドのランダムな位置がロードされるたびに、b)xとyの変数を変更して3以上の行がある場合、新しい行を開始する方法です。これは私がこれだけ愚かな質問である場合のでごめんなさい月未満の場合と同様に行ってきた...私の知る限り、脳のおならずに持っているよう

var mySprite:DisplayObjectContainer = new Sprite(); 
stage.addChild(mySprite); 

function addPolaroids() { 
for (var i = 0; i < animals.length; i++) { 
var polaroid[i]:DisplayObject = new [i](); 
polaroid.x = ?; 
polaroid.y = ?; 
mySprite.addChild(polaroid); 
} 
} 

です。 :)どんな助けも大歓迎です。ありがとうございました!

+0

ダブルフォーループ。 – DodgerThud

答えて

2

簡単。 3で整数の除算は、あなたにXインデックスを与える3でモジュロYインデックスを与えるでしょう。

polaroid.x = (i%3) * 100; 
polaroid.y = int(i/3) * 100; 
+0

これは、グリッドを設定する「正しい」方法です。他の答えはここではスーパーの有用なモジュロコンセプトを逃す –

1

ランダム化にはいくつかのアプローチがあります。位置の配列をランダム化することも、配列をループさせることも、ランダムな座標に基づいて画像を配置することもできます。

function randomize (a : *, b : *) : int { 
    return (Math.random() > .5) ? 1 : -1; 
} 

var grid = [{x:0,y:0},{x:10,y:0},{x:20,y:0},{x:0,y:10},{x:10,y:10},{x:20,y:10},{x:0,y:20},{x:10,y:20},{x:20,y:20}]; 

grid.sort(randomize)); 

for(var i = 0 ; i < grid.length ; i++){ 
    polaroid.x = grid[i].x; 
    polaroid.y = grid[i].y; 
} 

ピクチャをランダム化して同様の方法で繰り返すこともできます。

function randomize (a : *, b : *) : int { 

    return (Math.random() > .5) ? 1 : -1; 
} 

var pictures = [pic1,pic2,pic3,ect]; 

pictures.sort(randomize)); 

var rows = 3; 
var cols = 3; 
var currentRow = 0; 
var currentCol = 0; 
var rowHeight = 50; 
var colWidth = 50; 
for(var i = 0 ; i < rows*cols ; i++){ 
    polaroid.x = currentCol*colWidth; 
    polaroid.y = currentRow*rowHeight; 
    currentCol++; 
    if(currentCol == 3){ 
    currentCol = 0; 
    currentRow++; 
    } 
} 
関連する問題