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 值。

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

2024-08-29 08:31:16

2023-06-24 17:09:06

React前端

2015-09-22 09:50:36

FacebookAndroid

2017-01-04 10:18:00

React NativScrollViewAndroid

2021-08-27 14:26:06

开发技能React

2016-08-12 08:49:46

React NativFacebookNative

2017-04-17 06:07:01

React Nativ开发性能

2023-09-04 08:32:43

web开发图像

2016-08-15 13:34:37

React NativiOSjs入口

2019-02-25 07:07:38

技巧React 优化

2022-08-03 09:11:31

React性能优化

2016-12-19 10:00:00

React性能优化

2023-11-01 17:57:56

React应用程序性能

2023-03-07 16:12:32

2019-08-29 09:00:55

开发Flutter框架

2024-06-04 10:21:33

React组件布局架构

2023-07-12 16:10:48

人工智能

2020-06-22 07:30:00

React开发工具

2021-11-05 10:36:19

性能优化实践

2022-03-11 10:23:02

React性能优化
点赞
收藏

51CTO技术栈公众号