【发布时间】:2014-01-20 05:53:11
【问题描述】:
我正在制作一个自上而下的射击游戏作为大学作业的项目,我没有多少时间可以完成。
我正在尝试让敌人的动画片段在舞台上生成,我已经设置了一个函数来为 x 和 y 位置创建一个随机数,然后将每个数字存储在一个 var 中,但是我不能使用这两个 var坐标,我得到 3 个错误:
Main.as, Line 33 1120: Access of undefined property enemy.
Main.as, Line 33 1137: Incorrect number of arguments. Expected no more than 0.
Main.as, Line 34 1120: Access of undefined property enemy.
Main.as 中的第 33 - 34 行代码:
enemy = new Enemy(stage, xPos, yPos);
this.stage.addChild(enemy);
分别在第 18 行和第 19 行创建的 xPos 和 yPos 变量:
public var xPos:Number;
public var yPos:Number;
xPos 和 yPos 在函数 spawnPos 中给出值:
public function spawnPos()
{
var a:Number = Math.round(Math.random()*5);
var aNum:Number;
if (a <= 3)
{
aNum = Math.ceil(Math.random()*20) + 640;
xPos = aNum;
aNum = Math.ceil(Math.random()*20) + 480;
yPos = aNum;
}
else if (a >= 2)
{
aNum = Math.ceil(Math.random()*-20) + 0;
xPos = aNum;
aNum = Math.ceil(Math.random()*-20) + 0;
yPos = aNum;
}
}
spawnPos 函数被声明为在创建敌人之前的第 32 行运行:
spawnPos();
非常感谢您的帮助,非常感谢,并希望大家在新的一年有一个美好的开始。 :)
【问题讨论】:
-
1 - 你可能没有声明敌人变量。 2 - 你的 Enemy 构造函数接受多少个参数?
-
1 - 我以为第 33 行将敌人声明为 var? 2 - 这个问题没有多大意义,因为我并不真正了解 AS3,但我们必须在其中制作游戏(我的讲师如何期望我不知道),但我可以告诉你敌人。因为类的构造函数是完全空的。
-
1.好吧,在第 33 行你写了enemy = new Enemy(...); => 在 as3 中你总是需要使用 'var' 关键字,因此它会抛出错误。它应该是 'var 敌人:敌人 = 新敌人(...);'。我也强烈建议您将实例添加到舞台。始终将它们添加到您的舞台所有者(主时间线或文档类)。 2. 构造函数是空的,但是你正在创建一个实例并传入值 => 删除它们: varenemy:Enemy = new Enemy();
-
我相信它已经解决了!我已将敌人设为 var,然后在敌人类中为其设置 args 以接受
xPos和yPos,然后将我的spawnPos()函数移至敌人类,并在其构造函数中调用该函数。现在它可以正常工作了......谢谢你们!没有你,我无法做到,向你们两个竖起大拇指:)
标签: actionscript-3 flash movieclip stage