PIXI Graphic鼠标悬停与移出时颜色未变更问题求助
解决PIXI.Graphics鼠标悬停颜色不更新的问题
问题核心:你用tint属性修改PIXI.Graphics的颜色是无效的——tint是针对纹理类对象(比如Sprite)的颜色叠加效果,而Graphics是矢量绘制的图形,它的填充色由绘制时的beginFill参数决定,需要通过修改其内置的填充属性并刷新来更新颜色。
以下是修正后的代码:
let rect = new PIXI.Graphics(); rect.visible = true; rect.beginFill(0X0000EE, 0.5); rect.drawRoundedRect(0, 0, 100, 1000); rect.endFill(); // 显式开启交互(确保事件响应稳定) rect.interactive = true; rect.buttonMode = true; rect.on('pointerover', (e) => { this._onMouseOverFn(e); }, allbckSprite); rect.on('pointerout', (e) => { this._onMouseOutFn(e); }, allbckSprite); _onMouseOverFn: function (e) { const graphic = e.target; // 修改填充色 graphic.fill.color = 0x0000EE; graphic.alpha = 0.5; // 刷新图形使修改生效 graphic.refresh(); console.log('on mouse over'); }, _onMouseOutFn: function (e) { const graphic = e.target; graphic.fill.color = 0x000000; graphic.alpha = 0; graphic.refresh(); console.log('on mouse out'); }
补充说明:
refresh()是PIXI v7中Graphics的内置方法,用于重新渲染修改后的矢量属性,无需重复调用绘制方法- 显式设置
interactive = true能避免不同场景下的交互响应异常
内容的提问来源于stack exchange,提问作者Vishmantha PB
相关产品推荐
相关产品推荐

