Javascript Raphael元素在函数中创建时未定义?
我正在使用Raphael元素创建一个小游戏,当玩家用“子弹”撞击时,它会创建一个弹出窗口,到目前为止,如果我正常创建每个元素,代码会相应地工作。例如,这:Javascript Raphael元素在函数中创建时未定义?,javascript,undefined,raphael,collision,Javascript,Undefined,Raphael,Collision,我正在使用Raphael元素创建一个小游戏,当玩家用“子弹”撞击时,它会创建一个弹出窗口,到目前为止,如果我正常创建每个元素,代码会相应地工作。例如,这: let playerCircle = paper.circle(100, 3*pHeight/10, 15).attr({ "fill": "black" }); let enemyShip = paper.circle(100, 100, 15).attr({ "fill&
let playerCircle = paper.circle(100, 3*pHeight/10, 15).attr({
"fill": "black"
});
let enemyShip = paper.circle(100, 100, 15).attr({
"fill": "red",
"stroke": "black",
});
然而,我希望在点击玩家圈时产生“敌人”,我现在有以下代码:
let spawnEnemy = function(ev){
let posX = random(pWidth, pWidth+30);
let posY = random(0, 3*pHeight/5-30);
let enemyShip = paper.circle(posX, posY, 15).attr({
"fill": "red",
"stroke": "black",
});
enemyShip.animate({
"cx": posX-pWidth-60,
}, 1000, "linear", function(){enemyShip.remove()})
};
然而,当我这样做时,它会导致“未捕获的引用错误:未定义Enemmyship”,我可以用什么方法修复它吗
不确定此信息是否有用,但这是注册冲突的代码:
let collision = function(a, b){
a = {
"x": a.attr("cx"),
"y": a.attr("cy"),
};
b = {
"x": b.attr("cx"),
"y": b.attr("cy"),
};
let d = distance(a, b);
if (d < playerCircle.attr("r") + enemyShip.attr("r")){
alert("hi");
};
};
让碰撞=函数(a,b){
a={
“x”:a.attr(“cx”),
“y”:a.attr(“cy”),
};
b={
“x”:b.attr(“cx”),
“y”:b.attr(“cy”),
};
设d=距离(a,b);
如果(d
这可能是一个范围问题。如果您在“繁殖敌人”函数之外声明“enemyShip”,它可能会起作用。因为我们不知道这个变量是什么
我还将稍微更改碰撞函数,使其适用于任意2个对象/实体,因此,与其强制使用playerCircle和enemyShip,不如使用a&b及其属性,而不要在该函数中使用任何硬编码引用