You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:55:05