所以我有一个火球数组,我想知道如何移动这些物品来创建一个类似手套的游戏。我已经创建了阵列,里面充满了火球,但我似乎无法让它们移动。这是我创建的数组的样子:
for (var i:Number = 0; i < fireballs; i++) {
var mcFireball :fireball = new fireball();
this.addChild(mcFireball);
mcFireball.x = Math.floor((Math.random() * location) + 100);
mcFireball.y = Math.floor((Math.random() * location) + 100);
mcFireball.scaleX = .5;
mcFireball.scaleY = .5;
array.push(mcFireball);
}
这就是我尝试移动它们的方式:
for (var i :Number = 0; i < fireballs; i++) {
if (array[i] == null) {
trace("Error here");
return;
}
trace(array[i]);
var mcFireball :fireball = array[i];
mcFireball.moveEnemy();
}
这就是我的 moveEnemy() 的样子:
public function moveEnemy():void
{
if ((this.x + this.width > this.stage.stageWidth) || (this.x - this.width <= 0))
_nEnemyMovementSpeed *= -1;
this.x += _nEnemyMovementSpeed;
}
我确定错误在函数范围内,但我不确定我需要做什么才能让这些正常工作
My error is that moveEnemy() isn't a function
好吧,我很困,这是我的头顶(没有Flash测试),但它应该给你一个大致的想法。
mcFireball.moveEnemy();
导致错误,因为你试图通过说它是 mcFireball 类中的一个函数来达到它。为了更好地理解(示例):你有一个 Game_Stages.as 类文件,每个级别都是一个函数,所以要运行级别 5,你会说类似于你所拥有的。Game_Stages.5级();现在考虑一下 mcFireBall 是一个类文件吗?它有移动敌人功能吗?看看为什么闪电侠哭泣?
可能的解决方案
for (var i :Number = 0; i < fireballs; i++)
{
if (array[i] == null)
{ trace("Error here"); return; }
trace(array[i]);
var mcFireball :fireball = array[i];
moveEnemy(mcFireball); //do moveEnemy func with mcFireball as input
}
然后你可以像下面这样做moveEnemy
。在这个函数中,我们现在引用与"fball"相同的输入
public function moveEnemy(fball:Sprite):void
{
if ((fball.x + fball.width > this.stage.stageWidth) || (fball.x - fball.width <= 0))
{ _nEnemyMovementSpeed *= -1; }
else
{fball.x += _nEnemyMovementSpeed; }
}
这假设 mcFireball 是一个精灵(无论它是库对象还是由代码创建,都应该有效)