我对java很陌生,我一直在慢慢地建立一个游戏。我知道有不同的方法来编写对象,但是在推荐之后,我将它们构建为这样的模型:
function object(x,y,z){
var object={
a:x,
b:y,
c:z
};
function doSomething(){
...
}
return object;
}
一切都很顺利,直到我让我的“玩家”射门。螺栓是对象,每个新创建的螺栓都存储在一个数组中。这里是:
var playerBolts=new Array();
这是他射击时在“玩家”对象内部调用的方法:
function shootBolt(){
playerBolts.push(bolt(player.playerNum,player.facingLeft,player.x,player.y));
}
螺栓从玩家的当前位置射出,并且根据他所面对的方向,螺栓显然会朝那个方向移动。为了让螺栓知道它必须移动哪个,我在螺栓的对象构造函数中有一个布尔值,称为“面向”(上面的 player.facingLeft)。当我在三元运算符中使用该布尔值来给出方向速度时,它总是给我一个错误:“ReferenceError: facesLeft 未定义”。
这是创建的螺栓对象:
function bolt(fromPlayer,facing,playerX,playerY){
var bolt={
playerNum:fromPlayer,
damage:10,
facingLeft:facing, //The direction at which the bolt moves, if left, true
x:playerX, //The x position of the bolt
y:playerY, //The y position of the bolt
xSpeed:facingLeft ? -3 : 3, //The horizontal speed at which the bolt is moving
ySpeed:0, //The vertical speed at which the bolt is moving
W:3, //The width of the bolt's model
H:3, //The height of the bolt's model
color:"red", //The color of the bolt's model
update:update,
draw:draw
};
function update(){
...
}
function draw(){
...
}
return bolt;
}
如果我删除三元运算符并将 xSpeed 设置为预定义的值,则构造函数中的所有其他变量似乎都可以正常传递。所以我真的想知道我在这里做错了什么......我试着做一个 if/else 语句,但我得到:“SyntaxError:missing : after property id”。
我是否必须将所有对象更改为不同的模型,或者有什么我没有看到?如果不清楚,我可以随时提供更多信息或代码。
谢谢?!:P