用 Pixi.js 仿一个 Brotato (三 加载资源)

简介: 用 Pixi.js 仿一个 Brotato

d52bc303b4b9c0e6a1a4f32218e8bd6.png

系列文章:

水果兄弟 BroFruit(仿 Brotato) - 码上掘金 (juejin.cn)

前言

上一节我们已经基本了解了 PixiJS 的一些常用 api,本节就带大家开始正式开发游戏相关的一些模块,废话不多,马上开始

资源管理

作为一个游戏应用,图片资源的加载必然是少不了的,而且由于图片加载速度,和渲染性能方面的原因,一般都会在游戏初始化的时候把这些图片资源加载好或者部分加载好后台继续加载,放在缓存中,方便随时调用

PixiJS 也提供了相应的 Assets 模块,里面有各种方法来 (backgroundLoadBundle,loadBundle等) 对我们应用中所用到的资源进行管理,接下来我就带着大家一起了解这些方法

资源清单 manifest

manifest 这个单词大家应该都不陌生,它描述了应用程序相关的信息,这里我们定义一个 manifest 对象来记录相关资源的信息

const manifest = {
    bundles: [{
        name: 'game-screen',
        assets: [
            {
                name: 'monster',
                srcs: 'https://pixijs.io/examples/examples/assets/flowerTop.png',
            }
        ]
    }]
}
复制代码

初始化信息 init

await PIXI.Assets.init({ manifest: manifest })
复制代码

注意这里使用了 await ,资源管理的大部分方法都是异步执行的,包括后面的 backgroundLoadBundle与loadBundle

后台加载 backgroundLoadBundle

PIXI.Assets.backgroundLoadBundle(['game-screen'])
复制代码

backgroundLoadBundle 方法可以通过指定 manifest.bundles 中的对象名称进行资源加载,加载成功后,就可以在我们的应用中以纹理的形式传进精灵 Sprite 中进行使用

资源包的加载与使用 loadBundle

const gameScreen = await PIXI.Assets.loadBundle('game-screen')
const monster = new PIXI.Sprite(gameScreen.monster)
app.stage.addChild(monster)
复制代码

通过使用 loadBundle 加包名获取资源对象,让后通过访问属性名称加载对应的图片纹理,在添加给精灵 Sprite,最后显示到舞台上即可

84729bacc5786f882d43e2fa871c948.png

普通加载 addBundle

一般小应用我们也可以使用普通加载的方式,我们修改下 manifest 的结构,并且在添加一张图片,使用 addBundle 来试下加载效果

const manifest = {
    monster: 'https://pixijs.io/examples/examples/assets/flowerTop.png',
    monster2: 'https://pixijs.io/examples/examples/assets/flowerTop.png',
}
PIXI.Assets.addBundle('game-screen', manifest)
const gameScreen = await PIXI.Assets.loadBundle('game-screen', (res) => {
    console.log(res);
})
const monster = new PIXI.Sprite(gameScreen.monster)
app.stage.addChild(monster)
复制代码

c0a3ba1b0c4ea354537b98104265757.png

我们可以看到, addBundle 提供了一个回调方法让我们可以实时的打印出加载情况,后续我们的加载进度条,就可以利用这一特性进行开发

好了,关于加载资源这方面的 api 用法到这就基本完成了,下一节我们来一起实现一个资源加载的类,完成后可以直接用于各个项目,敬请关注~谢谢

相关文章
|
2月前
|
缓存 JavaScript 前端开发
高效打造跨平台桌面应用:Electron加载服务器端JS
【9月更文挑战第17天】Electron 是一个基于 Chromium 和 Node.js 的开源框架,允许使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用。加载服务器端 JS 可增强应用灵活性,实现代码复用、动态更新及实时通信。通过 HTTP 请求、WebSocket 或文件系统可实现加载,但需注意安全性、性能和兼容性问题。开发者应根据需求选择合适方法并谨慎实施。
130 3
|
8天前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
3月前
|
编解码 缓存 算法
Three.js如何降低3D模型的大小以便更快加载
为加快600MB的3D模型在Three.js中的加载速度,可采用多种压缩方法:1) 减少顶点数,使用简化工具或LOD技术;2) 压缩纹理,降低分辨率或转为KTX2等格式;3) 采用高效文件格式如glTF 2.0及draco压缩;4) 合并材质减少数量;5) 利用Three.js内置优化如BufferGeometry;6) 按需分批加载模型;7) Web Workers后台处理;8) 多模型合并减少绘制;9) 使用Texture Atlas及专业优化工具。示例代码展示了使用GLTFLoader加载优化后的模型。
417 12
|
3月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
3月前
|
JavaScript 前端开发
JavaScript引入全攻略:提升网页加载速度的秘诀!
JavaScript引入全攻略:提升网页加载速度的秘诀!
|
3月前
|
资源调度 JavaScript 前端开发
如何大幅减少 Vue.js 中的包大小和加载时间,提升用户体验!
如何大幅减少 Vue.js 中的包大小和加载时间,提升用户体验!
|
4月前
|
监控 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的学习资源推送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的学习资源推送系统附带文章源码部署视频讲解等
40 0
|
4月前
命令行加载特效 【cli-spinner.js】 实用教程
命令行加载特效 【cli-spinner.js】 实用教程
46 0
|
5月前
|
缓存 JavaScript 前端开发
老程序员分享:js刷新页面得重新加载和页面的刷新
老程序员分享:js刷新页面得重新加载和页面的刷新
41 0
下一篇
无影云桌面