AS3-如何正确添加这个数组(john)

时间:2014-02-05 20:48:10

标签: arrays actionscript-3 flash adobe addchild

我不知道如何添加john数组并使用它创建一个hittestobject。 Bal是与这个问题无关的另一类。 我试过做约翰[新巴尔] 试过约翰[k] 尝试了z并指定z作为for循环但是我会得到Z球的位置。 这应该成为一种太空入侵者的游戏类型。我正试图在HENK和'落球'(JOHN)之间制作一个命中测试对象。我不知道如何处理数组,特别是考虑到应该是定时器触发的事实。

由于

public class Main extends Sprite

{
   public var henk:Sprite = new Sprite();
   public var level:Timer = new Timer (2000, 0);
   public var valTijd:Number = new Number
   public var i:Number = 2000;
   public var john:Array = new Array(); 
   public var k:Number = 9000;  

   public function Main():void


   {
        henk.graphics.beginFill(0xFF00FF);
        henk.graphics.drawCircle(0, 500, 20);
        henk.graphics.endFill();
        addChild(henk);

        level.addEventListener(TimerEvent.TIMER, up);
        level.start();

        henk.addEventListener(Event.ENTER_FRAME, muis);
        henk.addEventListener(Event.ENTER_FRAME, hit); 


   }

    public function up(e:TimerEvent):void
    {             
        var tijdje:Timer = new Timer( i, 0)
        tijdje.addEventListener(TimerEvent.TIMER, tijdLuisteraar);
        tijdje.start();
         i = i - 250;

    }
       public function muis (e:Event):void
    {
        henk.x = mouseX;
    }






    public function hit (e:Event): void
    {
        if ( henk.hitTestObject(john [k] )) 
         { 
             if (contains(john[k] ))
            {
                removeChild(henk);
                    }

         }

    }



    public function tijdLuisteraar(e:TimerEvent):void
    {



                john.push(new Bal);
                addChild(john[k]);



    }

}

}

1 个答案:

答案 0 :(得分:0)

欢迎来到stackoverflow!

这个问题实际上相当简单,我将描述你可能想要在你描述的情况下使用数组。

在你创建新Ball的部分,你想将它们附加到一个数组,如下所示:

var ball = new Bal();
john.push(ball);
addChild(ball);

显然,这将进入你的定时器触发功能。

其次,您想要hitTestObject henk并将所有球存储在john数组中。

for(var i = 0; i < john.length; i++) {
    if (henk.hitTestObject(john[i])) {
        // well, that's a bummer for your player, henk hit one of the balls in the john array
        // display something like a message here
    }
}

这会自动检测数组的大小,因此会测试所有元素。当你在john-array中有很多元素时要小心hitTestObject,这会大大减慢你的游戏速度。

此外,反映您的代码我建议如下:

  • 删除public var i:Number = 2000;public var k:Number = 9000;,这些没有任何意义
  • 使用鼠标事件移动henk对象,而不是ENTER_FRAME。我想你将能够找到它是如何工作的。这只会在必须执行某些操作时触发该功能,从而减少所需的CPU功率和更清晰的代码。
  • 如果您想让游戏更酷,您可以添加使用箭头键的支持