材质暂存(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 -基础(二)的更多相关文章

  1. 学JS的心路历程Day26 - PixiJS -入坑

    后来知道也可以透过canvas让网页动起来! 而PixiJS是使用WebGL在canvas上绘制内容与制作动态 且同时有下列特色: 支持多点触控 掩码与混合模式 可外加WebGL滤镜 多装置支持 等等 ...

  2. 学JS的心路历程-函式(二)arguments

    参数(argument)与函式参数(parameter) 在讨论函式时,很多人都会把这两个搞混,我自己也不例外. 虽然讲错别人也听得懂,但是我们还是要搞清楚这两个的定义到底是什么! 参数是当我们呼叫函 ...

  3. 学JS的心路历程 - PixiJS -基础(三)

    今天我们来试着移动图片吧! 首先,一样先把图片放到PIXI的stage中: let app = new PIXI.Application({ width: 800, height: 600, back ...

  4. 学JS的心路历程 - PixiJS -基础(一)

    建立canvas 今天开始我们一步步来看怎么使用PixiJS吧! 在开始之前,要先提醒各位需要先运行webserver,否则将会遇到一些奇怪的问题喔! 最基本的canvas画布是肯定需要的,Pixi提 ...

  5. 学JS的心路历程 -函式(三)this

    this是什么,取决于被呼叫的呼叫地点. 昨天有提到说,呼叫函式时候会传递隐含参数:arguments和this并讲解了arguments,今天我们就来探讨this吧! 什么是this 我们都会呼叫函 ...

  6. 学JS的心路历程 - JS应用

    各家电商网站都推出了各种活动和现今优惠券,当时在逛PTT时看到了有篇文章,提供代码教大家用JS的方式抢票,看了一下后发现好像很多人好奇这是怎么做的,于是就想说想一篇文章来讲解一下. 我们先来看一下折价 ...

  7. 学JS的心路历程 - JS的Class

    没错,你没有看错,虽然前面说JS是原型继承,但在ES6以后新增了class关键字!!! 不过底层实作仍然是以原型继承方式进行,所以基本上算是一个语法糖. 今天我们就来看一下如何使用吧! class 首 ...

  8. 学JS的心路历程-物件与原型(三)

    昨天有说明到函式与建构式的原型,及指定建构式函式原型为另一个建构式函式,但其实这会造成复写constructor的问题. 复写constructor的问题(vmwork) 我们昨天有提到「建构式函式可 ...

  9. 学JS的心路历程 -物件与原型(二)

    昨天有提到说Object.setPrototypeOf可以指定一个物件为另一个物件的原型,但有想过到底这个原型,也就是[[Prototype]]最终会到何处吗? 答案是Object.prototype ...

随机推荐

  1. echarts学习之——电力迁徙图

    今天主要就是在搞echarts,我们都知道他为我们提供了丰富的api方法,使我们能够迅速的搭建图标.同时他里面还有许多的案例, 其中就有这么一个国内航线模拟迁徙的地图,如下所示: 而我们通常因为各种需 ...

  2. .NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  3. python-对象方法、静态方法、类方法

    #-*- coding:utf-8 -*- #本次学习:对象方法.静态方法.类方法 class SeniorTestingEngineer: #属性--只能对象来调用self.salary work_ ...

  4. 【接口测试】【SOAP】简单的接口测试学习

    ==================================================================================================== ...

  5. redis集群尝试

    1. 使用Docker搭建redis主从复制集群 安装参照 Docker 搭建redis 集群 启动服务 docker run --name redis-master -p 6379:6379 -d ...

  6. 42.纯 CSS 创作一个均衡器 loader 动画

    原文地址: https://segmentfault.com/a/1190000015157160 感想: 不难,最简单的动画.拓展地址: https://scrimba.com/c/cWqVv9hd ...

  7. if、else、elif

    if后面+判断条件 elif后面+判断条件 else 否则进行某些操作 举个列子 1 a = raw_input(">>>") 2 if a == "h ...

  8. RestTemplate的异步使用

    参考:https://blog.csdn.net/yezhuanxu/article/details/53643248 支持异步调用AsyncRestTemplate @RequestMapping( ...

  9. 【ASP.NET 问题】Win7中IIS被防火墙阻止导致外网无法访问的解决方法。

    今天装了IIS7.0,把网站发布了上去,但局域网的其他电脑始终无法访问主机上的网站. 于是想到防火墙的原因,把防火墙关掉,可以正常访问,但是打开就不行. 于是去网上找资料,总算搞定了. 原来在防火墙的 ...

  10. window.location.search的用法 和 地址栏的的javsscript编码与解码

    ocation.search是从当前URL的?号开始的字符串 如:http://www.51js.com/viewthread.php?tid=22720 它的search就是?tid=22720 e ...