我不知道如何添加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]);
}
}
}
答案 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功率和更清晰的代码。