【问题标题】:How to add movie clips to stage in a grid fashion?如何以网格方式将影片剪辑添加到舞台?
【发布时间】:2017-10-13 02:08:20
【问题描述】:

我有 9 个“宝丽来”电影剪辑,我想将它们添加到 3x3 网格中,每次播放电影时以随机顺序添加。

我将宝丽来的名称放在一个数组中,如下所示:

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 才不到一个月,如果这是一个愚蠢的问题,我很抱歉。 :) 任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 双循环。

标签: javascript actionscript-3 actionscript


【解决方案1】:

简单。整数除以 3 会得到 Y 索引,模除以 3 会得到 X 索引。

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

【讨论】:

  • 这是填充网格的“正确”方式。这里的其他答案错过了非常有用的模数概念
【解决方案2】:

您可以采取几种不同的随机化方法。您可以随机化一组位置,然后循环遍历该数组,然后根据这些随机坐标将图片输出。

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++;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多