如何以网格方式将影片剪辑添加到舞台?

时间:2017-05-14 03:11:08

标签: javascript actionscript-3 actionscript

我想要在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);
 }
}

我只做了不到一个月的AS,所以如果这是一个愚蠢的问题,我很抱歉。 :) 任何帮助是极大的赞赏。谢谢!

2 个答案:

答案 0 :(得分:2)

易。整数除以3会给你Y指数,模3会给你X指数。

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

答案 1 :(得分: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++;
  }
}