当前位置: 首页 > news >正文

南京网站网站建设学校微博推广平台

南京网站网站建设学校,微博推广平台,wordpress 修改菜单,海南网络电视台大家好,我是前端西瓜哥。 我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属性。 因为 pixijs 的底层维护了图形…

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

我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属性。

因为 pixijs 的底层维护了图形树,所以我们可以直接修改图形的属性,让 pixijs 重新计算并渲染出新的画面。

首先我们先绘制一个矩形:

import * as PIXI from 'pixi.js'const app = new PIXI.Application({ width: 640, height: 360 });
document.body.appendChild(app.view);const rect = new PIXI.Graphics();
rect.beginFill(0xFF0044); // 设置填充色
rect.lineStyle(5, 0xFFFFFF); // 设置描边线宽和颜色
rect.drawRect(100, 100, 200, 100); // 参数分别为 x, y, width, height
// 添加到 stage 下
app.stage.addChild(rect);

可以看到,画布绘制出了一个矩形。

需要注意的是,graphics 对象其实是一个容器,虽然只装了一个矩形,但你可以在它下面绘制更多的内容,比如圆形、线条等等。

所以 graphics 的位置默认是 (0, 0),而不是上面绘制矩形时设置的 (100, 100)

图形位移

rect.x = x;
rect.y = y;

顺带一提,上面的 x 和 y 其实用了 getter 和 setter 代理了 rect.position 对象。该对象属于 PIXI.ObservablePoint 类,有不少好用的方法,比如判断和另一个点是否相等、求和另一个点的点积等。

所以还可以这样写:

rect.position.set(x, y);

我写了个 demo,给 app.view 加了个点击事件,点击后修改 x 和 y,效果如下:

在这里插入图片描述

图形旋转

rect.rotation = radian; // 设置弧度

rotation 使用的值是弧度,学术上和很多 API 都是用弧度的,计算上更方便。

当然也可以用角度 angle,但底层也是做了代理:转换成弧度值,然后赋值给 rotation 属性。

rect.angle = angle; // 设置角度

然后很重要一点的是旋转中心的设置。旋转中心默认是 (0, 0)。可以通过 pivot 属性来设置。

rect.pivot.set(cx, cy);

pivot 这个属性比较抽象,它会影响 position 的效果,从表现上,它会将容器下的图形往 (-cx, -cy) 方向移动,所以你还需要通过 rect.position.set(cx, cy) 将容器移动回原来的位置。

另一种做法是,在绘制矩形的时候,将将其中心点对上 (0, 0),就不用设置 pivot 了。

在这里插入图片描述

图形缩放

用法类似图形旋转。

rect.scale.set(sx, sy);

图形斜切

rect.skew.set(skewX, skewY);

图形内容更新

前面这些都是物理位置和变形相关的,只需要在原来绘制出来的像素上做一些线性运算的到新的位置就可以了。

但如果你要做改变图形的填充色、线宽等操作时,就不能简单地设置一些属性就可以了,而是需要先用 clear 方法清空内容,然后重新定义形状。

rect.clear();
// 然后像第一次绘制一样,绘制一个矩形出来
// 将其中一些变量设置为新的值就可以了
// ...

下面是修改矩形线宽的例子。其他绘制参数比如填充色照旧,但线宽设置了新值。

const rect = new PIXI.Graphics();
rect.beginFill(0xFF0044);
rect.lineStyle(5, 0xFFFFFF); // 设置描边线宽和颜色
rect.drawRect(100, 100, 200, 100);app.view.onclick = () => {// rect.skew.set(1.3, 1)// rect.width = 100;rect.clear();rect.beginFill(0xFF0044);rect.lineStyle({ width: 10, color: 0xFFFFFF });rect.drawRect(100, 100, 200, 100); 
}

效果:

在这里插入图片描述

结尾

只是改变 graphics 的物理信息,或者说是变形(transform),只需要直接修改 position、rotation 属性即可。但如果是内容的改变,就要用 clear 清空内容,然后重新绘制了。

我是前端西瓜哥,欢迎关注我,学习更多前端知识。

http://www.khdw.cn/news/53987.html

相关文章:

  • 东营外贸型网站设计站长工具在线免费
  • 安宁市建设厅网站海外广告联盟平台推广
  • 黑河做网站的百度开户推广
  • 做类似58同城的网站服装市场调研报告
  • 株洲网站建设技术托管淄博seo网站推广
  • css网站建设模板站长之家收录查询
  • 国外网站的建设百度联盟推广
  • 佛山市建设企业网站服务机构实体店怎么推广引流
  • 连云港网站开发网络媒体发稿平台
  • 做网站的公司需要哪些资质搜索引擎广告优化
  • 做网站属于技术开发吗深圳互联网公司50强
  • php做网站用什么开发工具域名查询
  • 偷拍做愛视频网站自媒体怎么赚钱
  • 公司网站建设建议书湖南网站建设推广优化
  • 网站建设完善方案产品推广朋友圈文案
  • 新浪网站是什么程序做的互联网推广招聘
  • 安康市城市建设开发总公司网站登录注册入口
  • 有没有专门做艺术的网站短视频矩阵seo系统源码
  • 高端的响应式网站建设公司网络黄页推广大全
  • 万网的网站建设好吗百度资源共享
  • 深圳网站建设伪静态 报价 jsp 语言品牌策划是做什么的
  • 传奇私服广告网站怎么做深圳做seo有哪些公司
  • 网站如何做谷歌推广百度认证官网申请
  • 工业设计公司取名合肥百度快速排名优化
  • wordpress网站会员太多关键词排名查询网站
  • 网站设计制作靠谱公司灰色关键词排名代做
  • 服务器网站管理软件抖音seo怎么收费
  • 微信怎么做公众号搜索引擎优化与关键词的关系
  • 中淼建设工程有限公司网站东莞网络优化公司
  • 唐山乾正建设工程材料检测公司网站西安网约车平台