下午好

大家在接触白鹭的过程中,一定会遇到资源加载的问题。
首先坦白最近遇到的瓶颈:
之前的项目虽然资源很多,但是资源相对比较固定,两个版本中更改的图库数据较少,所以在使用中可以使用打包图集和资源缓存的方式来提高资源加载的速度,但是现接手的项目,沙河类自定义游戏,用户可自定义的模块非常多,导致用户可上传非常多的图片资源,而我在启动项目的时候,需要向服务器发送http请求来请求单个资源,多个图片导致海量请求,资源加载就变的十分缓慢。
各位大佬如有思路感激不尽。

偏题了

还是继续我们的自定义素材解析器,在想要了解更多的资源方面的问题,查看main的时候,发现很多项目中都存在

        //注入自定义的素材解析器let assetAdapter = new AssetAdapter();egret.registerImplementation("eui.IAssetAdapter", assetAdapter);egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());class AssetAdapter implements eui.IAssetAdapter {/*** @language zh_CN* 解析素材* @param source 待解析的新素材标识符* @param compFunc 解析完成回调函数,示例:callBack(content:any,source:string):void;* @param thisObject callBack的 this 引用*/public getAsset(source: string, compFunc:Function, thisObject: any): void {function onGetRes(data: any): void {compFunc.call(thisObject, data, source);}if (RES.hasRes(source)) {let data = RES.getRes(source);if (data) {onGetRes(data);}else {RES.getResAsync(source, onGetRes, this);}}else {RES.getResByUrl(source, onGetRes, this, RES.ResourceItem.TYPE_IMAGE);}}
}

我们点进源码可以看到,AssetAdapter 重写了eui.IAssetAdapter 的getAsset方法,而这个方法是干嘛的呢?
查阅资料后, eui控件获取资源都会通过getAsset这个方法的
假设你的EUI组件有Button,Panel,CheckBox,HScrollBar,这个时候你如果所有的同类组件都要使用相同的皮肤,那么直接添加,使用主题,就不必在每个组件创建后再用xxx.skinName="…"

主题文件default.thm.json里的 “eui.Button”: “resource/eui_skins/ButtonSkin.exml” …意思为,默认所有创建的button都是用ButtonSkin.exml来充当皮肤。

虽然主题文件里的Button类和某个皮肤绑定在一起,意思所有的button默认使用该皮肤,但是如果我们要给个别button使用不同的皮肤,那么可以在创建完button后加上:button_another.skinName="…/Button_anotherSkin.exml",这个button就会改默认皮肤为another皮肤了,那么就不用在主题文件default.thm.json里删除 “eui.Button”: "resource/eui_skins/ButtonSkin.exml"这句话了,没有另外再修改皮肤的button就会使用默认皮肤。

本文参考博主hanks(某浪博客),万分感谢

白鹭egret的自定义素材解析器相关推荐

  1. springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器

    由于之前用@RequestParam无法接收request payload 正文格式为json格式的字符串,只能使用@RequestBody整个接收,觉得麻烦,但是spring自带的参数解析器不具有这 ...

  2. Spring自定义参数解析器

      虽然Spring提供了比较完善的参数解析器,但是对于一些特殊的数据类型我们还是需要进行特殊处理,这样会提高代码的复杂度,增加冗余的代码,降低代码可读性和可维护性.所以自定义参数解析器是一个很好的解 ...

  3. springmvc自定义参数解析器

    由于开发中一般使用参数提交方式是json格式,对于单个参数的传递使用无法接收只能自定义参数解析器处理 springmvc的自定义参数解析器实现HandlerMethodArgumentResolver ...

  4. springmvc自定义参数解析器/类型转换器

    概述 有些时候我们需要对GET请求的入参做自定义的处理,比较常见的就是字符串反序列化时间类型了,常用的像@DateTimeFormat注解,但是这需要在每个入参的属性上都加上这个注解,比较费手,那么我 ...

  5. springmvc十七:自定义视图和自定义视图解析器

    自定义视图和视图解析器的步骤: 1).编写自定义的视图解析器,和视图实现类. 自定义的视图要实现View对象 public class MyView implements View{@Override ...

  6. ExtJS EditorGridPanel 示例之Array格式(自定义Array解析器)Store前后台增删改查

    本示例入口html页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  7. 视图解析自定义视图和自定义视图解析器——未完待续

    扩展:加深视图解析器和视图对象: 视图解析器根据方法的返回值得到视图对象: 多个视图解析器都会尝试能否得到视图对象: 视图对象不同就可以具有不同功能:

  8. 自定义sql_基于Calcite自定义SQL解析器

    这本应该是<我也能写数据库>系列文章中的一篇,但是最近一直在反思这个系列标题是不是有点不亲民,所以,暂时放弃这个系列标题了. 本文会介绍如何扩展Calcite的SQL解析器使之更符合你的业 ...

  9. android 自定义dns解析器,Android中DNS解析

    当服务端IP变化,大量用户还是访问的以前的IP,连接不上服务器. 我们的客户端软件如何通过域名正确访问服务器?这里面主要涉及到DNS缓存的问题. 什么是DNS? DNS 是域名系统 (Domain N ...

最新文章

  1. LeetCode简单题之三角形的最大周长
  2. 概要设计实例_多核片上系统(SoC)架构的嵌入式DSP软件设计
  3. android 多屏幕适配 : 第一部分
  4. Android:Margin和Padding
  5. #1403 : 后缀数组一·重复旋律 (可重叠最长重复K次子串问题)
  6. 关于Fiori application里取Account image的Odata request是否会阻塞UI的问题讨论
  7. 整数规划matlab实例,整数规划matlab
  8. postman生成python代码_别再用手敲了,这个工具可以自动生成python爬虫代码
  9. 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...
  10. kotlin泛型类、泛型接口
  11. 字母三角形c语言ABBBCCCCC,C语言输出ABBBCCCCCDDDDDDDCCCCCBBBA
  12. Python以字符形式打印双色图片中的文字
  13. mysql 运算符转义_我的MYSQL学习心得(五) 运算符
  14. c# 类的序列化,以及嵌套问题
  15. java商城管理系统_java商场信息管理系统
  16. 【从嵌入式视角学习香山处理器】一、如何开始?(开发环境搭建)
  17. 长沙银行“三重奏”:“生态银行”的新玩法
  18. 159 samba 无法访问。您可能没有权限使用网络资源 net use命令
  19. 小白入门之HTML--第五章 块状元素,行内元素,盒子模型
  20. 编程语言 vs. 二次元美女

热门文章

  1. Elasticsearch实战——地理位置查询
  2. Cesium双屏对比
  3. perror()函数 strerror()函数 详解
  4. 重型音乐金属核后期分轨混音教程教学培训(基础+进阶+重型音色调音指南+剪辑+修音+美感设计+实战+母带处理)|MZD Studios
  5. 零基础怎样自学编程?新手如何学习编程?编程学习入门指南
  6. 在 Linux 下安装 HM,运行 HEVC 参考代码
  7. PHP在线客服系统源码
  8. Hutool如何给Excel按行设置背景颜色
  9. 金融分析:图形可视化plotly绘图思路—多子图教程
  10. 4.Matplotlib多子图,文字和注释以及自定义坐标轴