matter js中创建body后如何改变body的纹理?
How to change the texture of a body after the body is created in matter js?
我已经像这样向世界添加了一个名为 testObj 的 body
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 的纹理更改为图像。
( p.s- 如果重要的话,我正在用 React 构建这个网站。我正在使用 useEffect 钩子来渲染东西。)
更新
好的,所以我确实找到了一种方法来做到这一点。基本上我应该能够做到
testObj2.render.sprite.texture = './Images/Ellipse.png'
并更改纹理,但出现此错误。 (我可以用 render.fillStyle = "red " 改变颜色,但不能改变精灵纹理)
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
我已经像这样向世界添加了一个名为 testObj 的 body
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 的纹理更改为图像。
( p.s- 如果重要的话,我正在用 React 构建这个网站。我正在使用 useEffect 钩子来渲染东西。)
更新
好的,所以我确实找到了一种方法来做到这一点。基本上我应该能够做到testObj2.render.sprite.texture = './Images/Ellipse.png'
并更改纹理,但出现此错误。 (我可以用 render.fillStyle = "red " 改变颜色,但不能改变精灵纹理)
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