pixi.js 5.0_使用Pixi.js进行高级绘图

pixi.js 5.0

Stars, bursts, gears, wedges, polygons, arcs, and dashes all drawn using Pixi.js, the HTML5 creation engine with the fastest, most flexible 2D WebGL renderer.

使用Pixi.js(具有最快,最灵活的2D WebGL渲染器HTML5创建引擎)绘制的星形,爆炸,齿轮,楔形,多边形,弧形和破折号。

It was many years ago when adding a burst to a graphic I stumbled upon the Funky Monkey drawing script by Ric Ewing. Comments embedded in the function immediately resonated with me:

多年前,当在图形中添加连拍时,我偶然发现了Ric Ewing的Funky Monkey绘图脚本。 函数中嵌入的注释立即引起了我的共鸣:

Burst is a method for drawing star bursts. If you’ve ever worked with an advertising department, you know what they are ;-)

爆发是一种绘制星爆发的方法。 如果您曾经在广告部门工作过,您就会知道他们是什么;-)

Clients tend to want them, Developers tend to hate them…

客户倾向于想要它们,开发人员倾向于讨厌它们……

Thought I’d bring these back to life leveraging modern web.

以为我会利用现代网络将它们重新带回生活。

Here are seven of those drawing shapes ported to Pixi.js.

这是移植到Pixi.js的七个图形。

划线 (Drawing Dashes)

Draws a dashed line from point x1, y1 to point x2, y2.

从点x1,y1到点x2,y2绘制一条虚线。

Usage:

用法:

  • target — Graphics instance on which dashed line will be drawn

    target —将在其上绘制虚线的图形实例

  • x1 — Starting position along x-axis

    x1 —沿x轴的起始位置

  • y1 — Starting position along y-axis

    y1沿y轴的起始位置

  • x2 — Final position along x-axis

    x2 —沿x轴的最终位置

  • y2 — Final position along y-axis

    y2沿y轴的最终位置

  • dashLength — Length of each dash, in pixels

    dashLength —每个破折号的长度,以像素为单位

  • spaceLength — Space between dashes, in pixels

    spaceLength —破折号之间的间隔,以像素为单位

function drawDash(target,
x1,
y1,
x2,
y2,
dashLength = 5,
spaceLength = 5) {
let x = x2 - x1;
let y = y2 - y1;
let hyp = Math.sqrt((x) * (x) + (y) * (y));
let units = hyp / (dashLength + spaceLength);
let dashSpaceRatio = dashLength / (dashLength + spaceLength);
let dashX = (x / units) * dashSpaceRatio;
let spaceX = (x / units) - dashX;
let dashY = (y / units) * dashSpaceRatio;
let spaceY = (y / units) - dashY; target.moveTo(x1, y1); while (hyp > 0) {
x1 += dashX;
y1 += dashY;
hyp -= dashLength;
if (hyp < 0) {
x1 = x2;
y1 = y2;
}
target.lineTo(x1, y1);
x1 += spaceX;
y1 += spaceY;
target.moveTo(x1, y1);
hyp -= spaceLength;
}
target.moveTo(x2, y2);
}

绘制弧 (Drawing Arcs)

Draws an arc from star

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pixi.js 是一个流行的开源 HTML5 图形库,它可以帮助开发者在浏览器中创建高性能的图形和交互式内容。对象池是一种常用的优化技术,它可以提高程序的效率,减少内存使用和垃圾回收的频率。 在 Pixi.js使用对象池的步骤如下: 1. 定义对象池的结构,即池中对象的类型以及初始化方式。 2. 创建对象池的实例。 3. 使用对象池时,调用 `acquire` 方法从池中获取对象。 4. 在使用完对象后,调用 `release` 方法将对象归还给池。 示例代码如下: ``` // 定义对象池的结构 const pool = new PIXI.utils.Pool(() => new PIXI.Graphics(), (graphics) => { graphics.clear(); }); // 使用对象池 let graphics = pool.acquire(); // 在此使用 graphics 对象 pool.release(graphics); ``` 注意:对象池只能用于对象的重复使用,而不能用于动态创建对象。 ### 回答2: Pixi.js是一种使用HTML5和JavaScript的2D渲染引擎,可以用于创建跨平台的游戏和交互式应用程序。对象池是一种提高性能的技术,可以重复使用已创建的对象,避免频繁的创建和销毁。 在Pixi.js使用对象池,可以通过以下步骤实现: 1. 创建对象池:使用Pixi.js提供的`pixi.utils`模块中的`pool`方法,可以创建一个对象池。例如,可以创建一个精灵对象池: ``` const spritePool = new PIXI.utils.pool(async () => { return new PIXI.Sprite(); }); ``` 2. 从对象池获取对象:使用对象池的`getItem`方法可以从对象池中获取一个可复用的对象。如果对象池中没有可用的对象,则会调用创建函数来创建新的对象。 ``` const sprite = spritePool.getItem(); ``` 3. 使用对象:使用获取到的对象进行需要的操作,比如设置位置、纹理等。 ``` sprite.position.set(x, y); sprite.texture = texture; stage.addChild(sprite); ``` 4. 释放对象:使用完成后,将对象返回给对象池,以便后续的重用。 ``` spritePool.release(sprite); ``` 通过使用对象池,我们可以避免频繁地创建和销毁对象,从而提高程序的性能。请注意,在使用对象池时,要确保正确地释放对象,以防止资源泄漏。 ### 回答3: Pixi.js是一个用于创建交互式2D游戏和图形应用程序的强大JavaScript库。使用对象池是一种优化技术,用于重复使用对象以提高内存利用率。下面是使用对象池的Pixi.js的简要概述: 1. 创建一个对象池:使用Pixi的`Pool`类或使用常规JavaScript数组作为你的对象池。对象池应该至少保存一个可以重复使用的对象。 2. 初始化对象池:在初始化阶段,可以创建和填充对象池。根据你的需求,可以创建多个对象,并将它们添加到对象池中。 3. 使用对象池:当需要创建新对象时,首先尝试从对象池中获取可重复使用的对象。可以使用`pool.pop()`方法从对象池中获取一个对象。如果对象池为空,则创建一个新的对象。 4. 对象的重用:当你使用完一个对象后,使用`pool.push(obj)`方法将其放回对象池中,使其可以再次被重复使用。重复使用对象代替频繁地创建和销毁对象可以减少内存开销。 5. 对象池的管理:根据你的需求,你可以选择自己实现对象池的管理,如限制对象池的大小、处理对象的初始化和释放等。你可以根据应用的需求对对象池进行优化。 使用对象池可以优化Pixi.js应用程序的性能,特别是在需要频繁创建和销毁对象时。这可以显著减少内存使用,并提高应用程序的响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值