@@ -5,19 +5,40 @@ Egret框架入门第一步 - 资源管理和屏幕适配
55
66先来看资源加载方面需要注意的一些事情,游戏开发之前您需要设计一下素材的目录结构,如果存在多套不同分辨率的资源,您可以使用assets/480/,assets/640/这样的方式来设计素材目录结构加以区分,如果只有一套资源,也可以不遵守assets/480/这样的规则,将prefix指向您自己的素材目录即可。
77
8- ```
9- egret.ResourceLoader.prefix = "assets/480/";
10- ```
11-
12- 加载的实现,推荐使用LoadingController:
13-
14- ```
15- var loadingController = new egret.LoadingController();
16- ```
17-
18- 加载某个资源,将根据设定的ResourceLoader.prefix来获取,您不用重复传入完整路径,只需传入相对于资源根目录的路径。
19- ```
20- loadingController.addResource("egret_icon.png", egret.ResourceLoader.DATA_TYPE_IMAGE);
8+ 加载的实现,推荐使用RES模块:
9+
10+ ```
11+ //使用RES模块,侦听GROUP_COMPLETE事件和GROUP_PROGRESS事件,可以同步显示加载进度,并继续执行加载完成后的逻辑
12+ RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
13+ RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onResourceProgress,this);
14+ RES.loadConfig("resources/resource.json","resources/");//加载资源配置文件
15+ RES.loadGroup("preload");//加载某个资源group
16+ ```
17+
18+ 然后将您需要加载的资源,都配置在resource.json中即可,注意路径是相对RES.loadConfig中传递的第二个参数而言的。
19+ ```
20+ {
21+ "resources":
22+ [
23+ {"name":"bgImage","type":"img","url":"assets/bg.jpg"},
24+ {"name":"egretIcon","type":"img","url":"assets/egret_icon.png"},
25+ {"name":"description","type":"json","url":"config/description.json"},
26+ {"name":"icons","type":"sheet","url":"assets/icons.json"},
27+ {"name":"monkey_png","type":"img","url":"assets/monkey.png"},
28+ {"name":"monkey_json","type":"json","url":"assets/monkey.json"},
29+ {"name":"bitmapFont","type":"font","url":"assets/font.fnt"}
30+ ],
31+
32+ "groups":
33+ [
34+ {"name":"preload","keys":"bgImage,egretIcon"},
35+ {"name":"demo2","keys":"egretIcon,icons"},
36+ {"name":"demo3","keys":"monkey_png,monkey_json"},
37+ {"name":"demo4","keys":"bitmapFont"},
38+ {"name":"demo7","keys":"egretIcon"},
39+ {"name":"demo8","keys":"egretIcon"}
40+ ]
41+ }
2142```
2243
2344然后来看一下如何设置屏幕适配的策略,首先,先获取所在环境的容器:
@@ -50,6 +71,8 @@ egret.StageDelegate.getInstance().setDesignSize(480, 800, policy);
5071```
5172class Demo9 {
5273
74+ /**加载进度界面*/
75+ private loadingView:LoadingUI;
5376 /**测试用的位图*/
5477 private logo:egret.Bitmap;
5578
@@ -69,22 +92,27 @@ class Demo9 {
6992 egret.StageDelegate.getInstance().setDesignSize(480, 800, policy);
7093
7194 //--------------------资源加载
72- //设置素材的根目录,如果存在多套不同分辨率的资源,您可以使用assets/480/,assets/640/这样的方式来设计素材目录结构加以区分,
73- //如果只有一套资源,也可以不遵守assets/480/这样的规则,将prefix指向您自己的素材目录即可
74- egret.ResourceLoader.prefix = "assets/480/";
75- var loadingController = new egret.LoadingController();
76- //资源加载,将根据设定的ResourceLoader.prefix来获取,您不用重复传入完整路径,只需传入相对于资源根目录的路径
77- loadingController.addResource("egret_icon.png", egret.ResourceLoader.DATA_TYPE_IMAGE);
78- //设置加载显示
79- loadingController.setLoadingView(new LoadingUI());
80- loadingController.addEventListener(egret.ResourceLoader.LOAD_COMPLETE, this.onResourceLoadComplete, this);
81- loadingController.load();
95+ //使用RES模块,侦听GROUP_COMPLETE事件和GROUP_PROGRESS事件,可以同步显示加载进度,并继续执行加载完成后的逻辑
96+ RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResourceLoadComplete,this);
97+ RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onResourceProgress,this);
98+ //如果存在多套不同分辨率的资源,您可以使用assets/480/,assets/640/这样的方式来设计素材目录结构加以区分,
99+ RES.loadConfig("resources/resource.json","resources/");//加载资源配置文件
100+ RES.loadGroup("preload");//加载某个资源group
101+
102+ //-------------------设置加载进度界面
103+ this.loadingView = new LoadingUI();
104+ this.loadingView.addToStage();
105+ }
106+ /**preload资源组加载进度*/
107+ private onResourceProgress(event:RES.ResourceEvent):void {
108+ this.loadingView.onProgress(event.itemsLoaded,event.itemsTotal);
82109 }
83110 /**显示*/
84111 private onResourceLoadComplete():void {
112+ this.loadingView.removeFromStage();
85113 var stage = egret.MainContext.instance.stage;//获取Stage引用
86114 this.logo = new egret.Bitmap();//创建位图
87- this.logo.texture = egret.TextureCache.getInstance().getTexture("egret_icon.png ");//设置纹理
115+ this.logo.texture = RES.getRes("egretIcon ");//设置纹理
88116 stage.addChild(this.logo);//添加到显示列表
89117 }
90118
0 commit comments