将等于true的对象推入数组

时间:2013-05-23 18:52:12

标签: actionscript-3 flash-cs5 tile

我有一个敌人击中了一堆瓷砖,并通过一个循环,我检查所有的瓷砖,如果敌人正在击中他们。我跟踪它们,有些人会告诉我它是真是假。我希望能够让敌人从那些真实的东西中随机选择,并继续那些瓷砖。它跟踪与敌人接触的所有瓷砖,问题是,我不确定如何将那些注册为真的瓷砖放入其自己的阵列中,然后让敌人随机移动到这些瓷砖中。

 for (var j:int = 0; j < tileset.length; j++){
     trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
     if (tileset[j].hitTestObject(enemy) && !tileset[j].hitTestObject(player)){
                 options.push(Boolean(true));
            }

编辑:这是我的计时器功能,每5秒,我希望敌人移动到可用的牌。虽然你看不到tileset,但它是一个数组,它等同于一个tile的movieclip,它本身就是for循环。所以基本上,tileset是49个瓷砖的电影剪辑。我有那些可用的瓷砖推入另一个阵列,这是选项。然后我制作一个名为enemyPick的var,它将成为计数器。那是我有多远。

function timerenemy (event:TimerEvent) {

                    var options:Array = [];

                    for (var j:int = 0; j < tileset.length; j++){
                        if (tileset[j].hitTestObject(enemy) && ! tileset[j].tileMiddle.hitTestObject(player)) {
                            //trace(tileset[j].currentFrameLabel, tileset[j].hitTestObject(enemy));
                            tileset[j].outline.gotoAndStop("attack");
                            options.push(tileset[j]);
                        }

                        if (options.length > 0){
                            var enemyPick:int = Math.floor(Math.random()*options.length)

                        }

                    }
                    trace(enemyPick, options);
            }

1 个答案:

答案 0 :(得分:1)

首先,创建一个数组,其长度是可接受的最大数量。例如,在直线的瓷砖中,一次只能有两个瓷砖可用。现在,每当你需要敌人移动瓷砖时,将一个计数器初始化为0.然后,循环遍历每个瓷砖,并“询问”它是否触及敌人。如果是它,将其记录在数组[计数器]中,并递增计数器。在循环之后,从0到(计数器)选择一个随机数,并使用数组[随机数]作为敌人移动到的区块。