我想要在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,所以如果这是一个愚蠢的问题,我很抱歉。 :) 任何帮助是极大的赞赏。谢谢!
答案 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++;
}
}