PixiJS 学习:设置图形的光标样式

开发 前端
当 pixijs 要设置图形的 cursor 值时,如果发现映射表中作为 key 有映射值,会改为使用映射值;否则直接使用图形的 cursor 值。

大家好,我是前端西瓜哥。

最近又要开始学习 pixijs 了。

今天我们来学习如何给 pixijs 的图形设置光标(cursor)。

pixijs 版本为 7.4.2

首先我们先用 pixijs 绘制好一个椭圆和一个矩形。

import { Application, Graphics } from'pixi.js';

const app = new Application({
width: 500,
height: 400,
antialias: true,
backgroundColor: 0xffffff,
});

const ellipse = new Graphics()
  .beginFill(0xff0044)
  .drawEllipse(130, 100, 60, 30)
  .endFill();

const rect = new Graphics()
  .beginFill(0x0000ff)
  .drawRect(200, 150, 60, 40)
  .endFill();

app.stage.addChild(ellipse, rect);
document.body.appendChild(app.view);

渲染结果为:

设置光标

我们先给 ellipse 设置为可交互,这样图形才能激活 hitTest 功能和触发事件。

ellipse.eventMode = 'static';
// ellipse.interactive = true; // 这个废弃了

然后设置 cursor 为 pointer。

ellipse.cursor = 'pointer';

看看效果:

原理是鼠标移动时会进行 hitTest,当椭圆的 hitTest 为 true 时,将 canvas 画布元素的 style 的 cursor 属性设置为椭圆对应的 cursor,即 "pointer"。

当鼠标移出椭圆时,canvas 的 cursor 值会恢复为默认的  "inherit"。

矩形因为没设置为可交互,所以没有任何反应。

设置自定义光标

一般来说,pixijs 只是会将 canvas 的 cursor 改为对应的字符串值,比如 "default"。

但我们可以全局配置 app.renderer.events.cursorStyles,重新定义 "default" 为我们自定义的光标图片。

app.renderer.events.cursorStyles.default =
  'url(./suika-cursor-default.png) 5 5, auto';

app.renderer.events.cursorStyles.pointer =
  'url(./suika-cursor-move.png) 16 16, auto';

语法同 CSS 的 cursor。

效果:

其实就是更新了一个映射表,当 pixijs 要设置图形的 cursor 值时,如果发现映射表中作为 key 有映射值,会改为使用映射值;否则直接使用图形的 cursor 值。

责任编辑:姜华 来源: 前端西瓜哥
相关推荐

2023-02-22 09:27:31

CanvasWebGL

2023-02-23 08:40:09

Pixijs修改图形属性

2024-01-08 08:30:05

光标图形编辑器开发游标

2010-08-09 15:19:29

Flex滚动条

2024-10-23 09:05:07

PixijsMatrixTransform

2023-07-07 13:56:01

图形编辑器画布缩放

2023-10-09 07:49:33

PixiJSWebGL

2010-08-03 09:54:20

Flex鼠标样式设置

2010-08-03 09:27:29

设置Flex样式

2023-10-13 07:29:23

PixiJSRunner

2023-02-28 07:28:50

Spritepixijs

2010-09-13 13:44:35

CSS表格CSS表单

2023-06-08 08:16:33

TickerPixiJS

2023-06-07 08:13:46

PixiJSCanvas 库

2010-08-13 08:57:20

Flex主题

2023-03-02 07:44:39

pixijsWebGL

2020-06-30 20:55:17

PygalPython编程语言

2010-09-07 13:45:53

<div>标签

2022-02-16 08:12:03

组件样式元素

2010-07-12 13:56:33

UML图形
点赞
收藏

51CTO技术栈公众号