AS3:从数组创建和访问动画片段

时间:2013-06-19 20:35:21

标签: arrays actionscript-3 movieclip

我知道这里有类似的问题,但我没有找到适当的细节。什么是有用的肯定是对问题的解释,也许是一个基本的例子,以后搜索的任何人都可以申请。 (不要求你为我写这些,我只是觉得这些例子很有帮助)我不想让任何人感到不安,我有点担心在论坛上发帖......

我想知道基于从数组创建的切片创建屏幕的替代方法。我一直在尝试访问已经放置在屏幕上的动画片段,并试图追踪以找到引用它们的方法一直没有问题。

无论如何,采取类似于数组的基本内容,并将其连接到movieclip,然后在完成后如何访问movieclip本身。所以我一直在研究这个问题,并使用了许多不同的在线资源,所以我相信很多东西看起来很熟悉,只是用得更加混乱。

这需要数组来显示影片剪辑(我确定这里至少有一部分是不必要的,而且我认为我在这里做错了,这使得以后不能解决)所以这有用,但感觉相当笨重。

两者都来自同一主类文件。

function makeWorld (anyMap, tileW, tileH) {                 
var worldWidth = anyMap[0].length;
var worldHeight = anyMap.length;
var MAP = this.addChild(new mapHolder());

    function tiler(MAP, i, j, tileW, tileH, tile) 
    {
    MAP.addChild(tile);
    tile.x = (j * tileW);
    tile.y = (i * tileH);                                               
    }                                               

for (var i = 0; i < worldWidth; ++i) {
  for (var j = 0; j < worldHeight; ++j) {
      var curTile:int = anyMap[i][j];
      if (curTile == 101) {
          var tile1 = new tileGround();
          tiler (MAP, i, j, tileW, tileH, tile1);

...

      else {
          var tile3 = new empty();
          tiler (MAP, i, j, tileW, tileH, tile3);
      }
}}}

然后有人试图引用它,我遇到了这个问题。我不知道该叫什么.MAP.tileGround by,我尝试了很多东西。我读过它并不是一个好主意,当它不是很先进的时候通过名字来引用,所以我也想避免那种事情。

addEventListener (Event.ENTER_FRAME, hits);
function hits (event:Event) {
    var tileCatchG:MovieClip = this.MAP.tileGround;

    if(tileCatchG.hitTestPoint(this.MAP.Char.x + leftBumpPoint.x, this.MAP.Char.y + leftBumpPoint.y, true)){
        leftBumping = true;
    } else {
        leftBumping = false;
    }

...

}

谢谢!

1 个答案:

答案 0 :(得分:1)

在第二次查看你正在做的事情时,你应该看到代表地图的2索引数组。

您可以在文件顶部创建一个常规(单个索引)数组,如

public var tileArray:Array = [];

然后在你创建它们的地方将它们推入数组

var tile1 = new tileGround();
tileArray.push(tile1);

然后引用它们所有你可以运行一个简单的循环

for each(var tile:MovieClip in tileArray)
{
    //Do stuff
    if(tile instanceof tileGround)
    {
       //Do stuff specific to tileGround
    }
}