我的HTML页面中有多个画布设置。我在JS/jQuery中通过它们各自的ID访问它们。在这个画布中有一个“玩家”-character(一个基本的正方形),它有一个固定的大小和一个可变的位置。
我像这样创建player对象:
<script>
var player = {
xpos = 50,
ypos = 50
}
</script>
在同一个<script></script>
中,我有一个如下所示的函数:
async animate(cid2){
var c = Object.create(player);
cid = $(cid2)[0];
ctx = cid.getContext("2d");
c.xpos = 50;
c.ypos = 50;
while(c.xpos < 300){
await sleep(1100);
c.xpos = c.xpos + 50;
//draw a rectangle..
}
单击任何画布(使用jQuery .click函数)后,将使用相应的画布id执行<canvas id="test">
。
所有这些都很好用,只要页面上有一个画布。如果我假设有两个画布,控制台中会发生以下情况:
canvas1 is clicked!
X-Position: 50
X-Position: 100
canvas2 is clicked!
X-Position: 150
X-Position: 200
虽然单击了第二个画布,并且Object.create
应该创建一个新对象,但它不起作用:它仍然访问旧对象。
我几乎可以肯定在SO上有一个答案,但尽管我尽了最大的努力,我还是找不到它,因为我不知道到底出了什么问题。
有没有人可以帮我或者推荐我一个我可以问的问题?
提前谢谢你。
发布于 2018-06-09 04:48:08
您可以使用(我认为是ECMAscript 6)扩展运算符
const obj = { myProp: 'hi' };
const newObj = { ...obj };
newObj.myProp = 'ciao';
console.log(obj); // still { myProp: 'hi' }
知道你应该有两个独立的对象,而不是一个副本。
https://stackoverflow.com/questions/50768138
复制相似问题