学JS的心路历程Day28 - PixiJS -基础(二)
材质暂存(texture cache)
昨天有说到,图片要放入stage前,需要先把图片转成Sprite的特殊图片物件。
但是我们也可以先将图片放进材质暂存(texture cache)。
什么是「材质」(texture)?
PIXI用WebGL的GPU渲染图片,所以图片需转成GPU可用版本,可被WebGL处理图片称为「材质」(texture)。
而在放进sprite片前,将原始图片转成WebGL texture形式,可以提高效率。
PIXI使用材质暂存(texture cache)来储存和参考所有sprite需要的材质。
let texture = PIXI.utils.TextureCache[“images/anySpriteImage.png”];
let sprite = new PIXI.Sprite(texture);
在官网教学连接中有贴出这段代码,利用PIXI.utils.TextureCache将图片加入暂存中,但我在实际使用后发现没有任何效果,搜寻了一下之后发现官方文件并没有公开提供这个方法。
且在github issue找到了官方开发者的说明(vmwork)
也许是被弃用,官方开发者建议使用PIXI.loader
原文连接
那我们就来看一下PIXI.loader的示例吧!
let imageURL =“./image/bunny.png”;
PIXI.loader
.add('bunny',imageURL)
.load(init);
function init(loader,resources){
var bunny = new PIXI.Sprite(
resources['bunny'].texture // get Texture Cache
);
app.stage.addChild(bunny);
}
把图片放入loader中转成材质暂存后在放入Sprite中。
add('bunny',imageURL)的'bunny'可以选择不写,resources的key值就会是url。
let imageURL =“./image/bunny.png”;
PIXI.loader
.add(imageURL)
.load(init);
function init(loader,resources){
var bunny = new PIXI.Sprite(
resources[imageURL].texture // get Texture Cache
);
app.stage.addChild(bunny);
}
但是千万别这样写:
let imageURL =“./image/bunny.png”;
PIXI.loader
.add('bunny',imageURL)
.load(init);
function init(loader,resources){
var bunny = PIXI.Sprite.fromImage(imageURL);
app.stage.addChild(bunny);
}
PIXI.Sprite.fromImage与PIXI.loader是两种不同的API,同时使用会造成破坏或重复存入內存暂存区。
PIXI.Sprite.fromImage是比较方便的作法,直接传入图片的url,会判断是否已经在材质暂存中,如果没有就自动加载。
PIXI.loader我觉得好用的地方在于,可以用数组传入参数(leafor):
PIXI.loader
.add([
“images/imageOne.png”,
“images/imageTwo.png”,
“images/imageThree.png”
])
.load(setup);
那要如何查看暂存区的信息呢?我们可以透过PIXI.TextureCache查看暂存区的信息,不过官方文件上找不到这个属性,不确定之后会不会被弃用。
那么今天就先到这边,一样如果有错误及来源未附上欢迎留言指正,我们明天见!
学JS的心路历程Day28 - PixiJS -基础(二)的更多相关文章
- 学JS的心路历程Day26 - PixiJS -入坑
后来知道也可以透过canvas让网页动起来! 而PixiJS是使用WebGL在canvas上绘制内容与制作动态 且同时有下列特色: 支持多点触控 掩码与混合模式 可外加WebGL滤镜 多装置支持 等等 ...
- 学JS的心路历程-函式(二)arguments
参数(argument)与函式参数(parameter) 在讨论函式时,很多人都会把这两个搞混,我自己也不例外. 虽然讲错别人也听得懂,但是我们还是要搞清楚这两个的定义到底是什么! 参数是当我们呼叫函 ...
- 学JS的心路历程 - PixiJS -基础(三)
今天我们来试着移动图片吧! 首先,一样先把图片放到PIXI的stage中: let app = new PIXI.Application({ width: 800, height: 600, back ...
- 学JS的心路历程 - PixiJS -基础(一)
建立canvas 今天开始我们一步步来看怎么使用PixiJS吧! 在开始之前,要先提醒各位需要先运行webserver,否则将会遇到一些奇怪的问题喔! 最基本的canvas画布是肯定需要的,Pixi提 ...
- 学JS的心路历程 -函式(三)this
this是什么,取决于被呼叫的呼叫地点. 昨天有提到说,呼叫函式时候会传递隐含参数:arguments和this并讲解了arguments,今天我们就来探讨this吧! 什么是this 我们都会呼叫函 ...
- 学JS的心路历程 - JS应用
各家电商网站都推出了各种活动和现今优惠券,当时在逛PTT时看到了有篇文章,提供代码教大家用JS的方式抢票,看了一下后发现好像很多人好奇这是怎么做的,于是就想说想一篇文章来讲解一下. 我们先来看一下折价 ...
- 学JS的心路历程 - JS的Class
没错,你没有看错,虽然前面说JS是原型继承,但在ES6以后新增了class关键字!!! 不过底层实作仍然是以原型继承方式进行,所以基本上算是一个语法糖. 今天我们就来看一下如何使用吧! class 首 ...
- 学JS的心路历程-物件与原型(三)
昨天有说明到函式与建构式的原型,及指定建构式函式原型为另一个建构式函式,但其实这会造成复写constructor的问题. 复写constructor的问题(vmwork) 我们昨天有提到「建构式函式可 ...
- 学JS的心路历程 -物件与原型(二)
昨天有提到说Object.setPrototypeOf可以指定一个物件为另一个物件的原型,但有想过到底这个原型,也就是[[Prototype]]最终会到何处吗? 答案是Object.prototype ...
随机推荐
- Django -- settings 详解
Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...
- 给博客添加fork me on github图标
首先挑选想要的图标样式 https://blog.github.com/2008-12-19-github-ribbons/ 效果和代码如图 打开博客后台设置,页首html设置 讲网页右边的代码粘贴过 ...
- WPF GridLinesVisibility属性
GridLinesVisibility:网格线可见性样式,其值有四种:All,Horizontal,None,Vertical.对应:全部,水平,没有,垂直 <!--#region 表格--&g ...
- SPOJ3276 D-query
题意:n个数 a1...an,q组询问,每组询问给定 l,r,输出 [ l, r ] 有多少不同的数 ( n ≤30000, q ≤200000, ai ≤ 106 ) 离线 + 树状数组维护 #in ...
- 微信小程序自定义微信客服按钮
微信小程序官方api中提到的微信客服,是一个固定的组件,图标样式固定,大小最多27px 很明显这个是不能满足我们各种奇葩需求的.下面提供一个野蛮的自定义方法. 比如做一个这样的按钮: 图标用自定义的, ...
- [UGUI]图文混排(三):资源管理
1.图文混排中的资源,主要是图片. 2.所谓的资源管理,可以分为资源对象池和资源加载这两部分.这里是为图文混排单独做一套资源管理,当然也可以改为调用项目中的资源管理. RichTextResource ...
- js 截取指定字符长度 为数组
str要截取的字符 n截取个数 function jiequ(str,n) { var strArr = []; for (var i = 0, l = s ...
- 16.纯 CSS 创作一个渐变色动画边框
原文地址:https://segmentfault.com/a/1190000014785816 感想:边框是伪元素::after来的: HTML代码: <div class="box ...
- 《汇编语言 基于x86处理器》第十一章 MS-DOS 编程部分的代码 part 2
▶ 书中第十一章的程序,主要讲了 Windows 接口,在小黑框中进行程序交互 ● 在屏幕指定位置输出带自定义属性的文字 INCLUDE Irvine32.inc .data outHandle HA ...
- IBeacon协议分析
IBeacon协议分析 跳转至: 导航. 搜索 对于一个UUID是E2C56DB5-DFFB-48D2-B060-D0F5A71096E0, major是0, minjor是0的iBeacon,此时的 ...