在matter js中创建实体后,如何更改实体的纹理



我向这个添加了一个名为testObj的主体

const testObj = Bodies.rectangle(200,200,40,40,)
World.add(engine.current.world, [
Bodies.rectangle(cw/2, 0, cw, 20, { isStatic: true }),
Bodies.rectangle(cw/2, ch, cw, 20, { isStatic: true }),
Bodies.rectangle(0, ch/2 , 20, ch, { isStatic: true }),
Bodies.rectangle(cw, ch/2 , 20, ch, { isStatic: true }),
testObj,])

我有一个像这样的按钮

<Button onClick={changeTexture}>change</Button>

所以当我点击这个按钮时,我想将testObj的纹理更改为图像。

(附言-如果这很重要的话,我正在用React构建这个网站。我正在使用useEffect钩子来渲染东西。(

更新

好吧,所以我确实找到了一种方法。基本上我应该可以
testObj2.render.sprite.texture = './Images/Ellipse.png'

并更改纹理,但我得到了这个错误。(我可以用render.fillStyle="红色"来更改颜色,但不能更改精灵纹理(

Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' st

然后我发现了一个关于这个的GitHub问题。这个答案解决了问题。

https://github.com/liabru/matter-js/issues/497#issuecomment-519113260

最新更新