正在召唤神秘力量
导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

2D WebGL renderer Pixi.js v4 入门【第五回】

作者:广树·时间:2018-08-31 15:08:01·分类:JavaScript/jQuery/Vue

前情回顾

上回链接:2D WebGL renderer Pixi.js v4 入门【第四回】》

上回我们说了精灵的编组以及Container和ParticleContainer。

这次我们来说说WebGL的图形绘制吧。


图形绘制的方法

如果懂canvas自带的图形绘制功能的话,大可跳过这里。

首先使用PIXI.Graphics,描绘各种图形。

// 画矩形
var rectangle = new Graphics();

// lineStyle(width, color , alpha透明度)
rectangle.lineStyle(4, 0xFF3300, 1);

rectangle.beginFill(0x66CCFF);

// drawRect(x, y, width, height)
rectangle.drawRect(0, 0, 64, 64);

rectangle.endFill();

// 位置(基于矩形左上角)
rectangle.x = 170;
rectangle.y = 170;
stage.addChild(rectangle);

// 画圆
var circle = new Graphics();
circle.beginFill(0x9966FF);

// drawCircle(x, y, radius半径)
circle.drawCircle(0, 0, 32);
circle.endFill();

// 位置(基于圆的中心)
circle.x = 64;
circle.y = 130;
stage.addChild(circle);

// 画椭圆
var ellipse = new Graphics();
ellipse.beginFill(0xFFFF00);

// drawEllipse(x, y, width, height);
ellipse.drawEllipse(0, 0, 60, 20);
ellipse.endFill();

// 位置(基于中心点)
ellipse.x = 180;
ellipse.y = 130;
stage.addChild(ellipse);

// 画圆角矩形
var roundBox = new Graphics();
roundBox.lineStyle(4, 0x99CCFF, 1);
roundBox.beginFill(0xFF9933);

// drawRoundedRect(x, y, width, height, cornerRadius)
roundBox.drawRoundedRect(0, 0, 84, 36, 10)
roundBox.endFill();

// 位置(基于矩形左上角)
roundBox.x = 48;
roundBox.y = 190;
stage.addChild(roundBox);

// 画直线
var line = new Graphics();
line.lineStyle(4, 0xFFFFFF, 1);

// 开始
line.moveTo(0, 0);
// 结束
line.lineTo(80, 50);

// 位置
line.x = 32;
line.y = 32;
stage.addChild(line);

// 画三角形
var triangle = new Graphics();
triangle.beginFill(0x66FF33);

triangle.drawPolygon([
    -32, 64,             //最初的坐标点
    32, 64,              //第二个坐标点
    0, 0                 //第三个坐标点
    
]);

triangle.endFill();

// 位置(基于最初的坐标点)
triangle.x = 180;
triangle.y = 22;

stage.addChild(triangle);

完成效果如下,和canvas并没有多大区别。

<点击查看效果>


文字

使用PIXI.Text function。绘制方法和canvas也类似。

var message = new Text(
  "Hello Pixi!",
  {fontFamily: "Arial", fontSize: 32, fill: "white"}
);

message.position.set(54, 96);
stage.addChild(message);


中途可以再次定义样式和文本。

message.text = "Text changed!";
message.style = {font: "16px PetMe64", fill: "pink"};


在canvas的时候比较困扰的文字换行部分,这里也可以用样式来指定。

message.style = {wordWrap: true, wordWrapWidth: 5, align: "left"};



这里有一个注意点。

在英语的情况下,无法拆分单个单词(手写或者用word的时候,换行普遍会使用‘-’,但是这里不行)。

单词会在结束之前全部输出。具体可以看下面的例子。

<点击查看效果>


反过来说,中文的情况下,不会使用半角空格去拆分单词,所以要换行的话就不得不使用半角空格。


PS1 如果中途要改变style的话会覆盖上面的设定,所以要重新定义fill。


PS2 pixi.js可以使用BitmapText,但是深入研究后发型并不简单,非常抱歉,这里先掠过。

这里姑且先放上pixi.js官方文档。

Class: BitmapText


下回将会有涉及到游戏相关的东西!

敬请期待。


本文翻译自:2D WebGL renderer Pixi.js v4【連載第五回】
翻译者:广树
转载请注明出处!


2D WebGL renderer Pixi.js v4 入门【最终回】

#pixi.js
侧边栏
最新评论
广树
2024-04-24
@Chise Hachiroku:是大佬!膜拜! 百度这样的模式真的不是作茧自缚吗?信息越来越狭小。
Chise Hachiroku
2024-04-24
2021年7月和2023年4月因为合作项目的原因,曾经做过各个平台SEO优化的各类尝试,没有量化结果的大致数据如下: 1. 谷歌主动发掘新站点的速度不快,一旦提交抓取更新稳定。比较侧重内容时效,不更新但其他网站更新了,排名会掉。 2. 必应希望网站主可以提交链接,主动发掘速度也比较快。比较侧重于引擎认为的内容相关性和网站流量,导致营销号类网站猖獗。DuckDuckGo也有类似趋势,但不需要提交。 3. 谷歌、必应、DDG喜欢域名和关键词对上,比如Girl Cafe Gun和 girlcafegun.wiki (个人做过SEO的老项目)。 4. 百度从2022年开始基本只收录国内站点(备案齐全的)和以前他们抓取过的外国站点,且国外中文内容对排名有显著负优化。 5. 百度会尝试将英文内容翻译成中文并加入关键词,但由于百度优先中文结果,这些结果经常会压住英文内容。 6. Yandex和Petal的抓取比较迷幻,不过因为并不做俄语内容,并没有做过优化。 供参考。自从23年8月开始停止更新合作项目以来,SEO也已经好几个月没有特征优化过了。 感觉有空了自己可以写一篇SEO优化入门的文章(逃)
广树
2024-04-23
@test_user:大佬这个名字取的好神秘😅。丢失了很多回忆挺可惜的,所以记录还是很重要的!
test_user
2024-04-23
我的那个号久远到我的密码都忘记了,过了些年我去申诉因为什么都没绑所以申诉失败了。。。,我是公测时候玩的,没赶上内测,但是我是的喜欢这个游戏,现在还能一闭眼还能想起魔法密林的 BGM。。。,不过我当年没有截图的意识,感觉丢失了很多的回忆。。。。
广树
2024-04-22
@嫖嫖乐:看来大佬资历很深啊!
正在攻略

圣兽之王.jpg

传颂之物

PSN奖杯卡

PSN奖杯卡

赞助商广告