我正在制作一个自上而下的射击游戏作为大学作业的项目,我没有多少时间可以完成。
我试图让敌人的电影剪辑在舞台上产生,我已经设置了一个函数为x和y位置创建一个随机数,然后将每个存储在一个var中,但是我不能使用这两个var& #39; s为坐标,我得到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.
第33-34行来自Main.as的代码:
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();
非常感谢帮助,非常感谢并希望所有人都有一个新的一年的良好开端。 :)
答案 0 :(得分:0)
也许你错过了Enemy课程。使用3个参数创建一个Enemy类。然后在this.stage.addChild(enemy);
行之后你必须添加:
enemy.x = enemy.xPos;
enemy.y = enemy.yPos;
我正在考虑敌人类扩展Sprite
或MovieClip
类,xPos
和yPos
有get/set
。
class Enemy extends Sprite
{
private var _xPos:Number;
private var _yPos:Number;
public function Enemy(/*your params here*/)
{
//your code here
}
//xPos setter
public function set xPos(value:Number):void
{
this._xPos = value;
}
//xPos getter
public function get xPos():Number
{
return this._xPos;
}
//yPos setter
public function set yPos(value:Number):void
{
this._yPos = value;
}
//yPos getter
public function get yPos():Number
{
return this._yPos;
}
}
如果您想存储对象的位置,则不必使用xPos
或yPos
。 Sprite和Movieclip有x
和y
。 “不要重新创建轮子”;)
答案 1 :(得分:0)
Main.as和Enemy.as的变化如下:
<强> Main.as 强>
这里所做的改变是定义敌人的声明。这是
敌人=新敌人(阶段,xPos,yPos);
我删除了stage
参数但保留了两个变量xPos
和yPos
并将其变为变量。
变种敌人:敌人=新敌人(xPos,yPos);
我还删除了我调用spawnPos()
函数的位置。
<强> Enemy.as 强>
我将spawnPos()
函数从Main.as移动到此处,并在构造函数代码中调用它,因此它仅在enemy
变量为的时运行。
然后我修改了类定义并添加了我想要传递的参数
public function Enemy(xPos:Number,yPos:Number)