我一直在使用 p5.js 使用 JavaScript 开发一个用于精灵渲染的库。我有一个用于存储精灵信息的对象,然后将其添加到一个数组中,该数组具有一个更新每一帧的函数。
function createsprite(img, x, y, width, height, layer, tag){
var sprite = {
img: img,
xpos: x,
ypos: y,
width: width,
height: height,
id: spriteid,
clayer: layer,
stag: tag,
removesprite: removeobject(this.id),
frozen: false
};
spriteid++;
spritesarray.push(sprite)
return sprite;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用这个函数来绘制精灵,这些精灵被添加到上面函数中的数组中。
function drawsprites(){
for(let i = 0; i < spritesarray.length; i++){
image(spritesarray[i].img, spritesarray[i].xpos, spritesarray[i].ypos)
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我试图修改xpos对象的 ,但它只是暂时存储,然后它重置为默认值。我不确定为什么会发生这种情况:我正在尝试修改对象的属性,但是,当使用该drawsprites()函数绘制数组时,我所做的任何修改都将sprite1重置为默认值。
function draw() {
background(220);
sprite1 = createsprite(img, 0,0,0,0, 1, "Player")
if(keyIsDown(DOWN_ARROW)){
sprite1.ypos -= …Run Code Online (Sandbox Code Playgroud)