再谈cacheAsBitmap

2024-06-01 13:58
文章标签 再谈 cacheasbitmap

本文主要是介绍再谈cacheAsBitmap,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cacheAsBitmap这个属性很多人都知道,但少有人明白它到底是如何生效的。虽然看名字是转换为位图处理,但用起来的时候感觉却也不过如此。所以,不少人最终选择自己转换Bitmap。
当然,自己转Bitmap也是可以的,也只是多浪费点内存和处理速度,然后麻烦点罢了。但事实上,很多时候cacheAsBitmap已经足够使用了。

先得说说FLASH的屏幕更新机制。在Debug播放器内,可以勾选显示重复区域来以红框显示更新区域。也就是说,FLASH并不会每帧都渲染所有的区域。这点上的确如此。但是在红框内呢?比如我有一张很复杂的静态矢量图在背景上,然后上面显示了一个很简单的动画(甚至是一个透明的不断重刷的矩形),以通常的想法,FLASH应该缓存背景的图像,仅仅是重新更新上面的图形,但事实上并不会这样。FLASH才不管你哪些动哪些不动,只要是红框内的图形,它一定都会重新刷新一次,如果不解决这个问题,根本没法做“全屏”的东西,因为哪怕你空刷一个占满屏幕的Bitmap都会导致所有的矢量图全部更新。

事实上,cacheAsBitmap就是用来解决这个问题的。你可以理解成它能够影响FLASH的渲染机制。只要一个显示对象被设为cacheAsBitmap,除了他自己之外,外部将无法令其重新刷新,而是像我们想象的那样简单的叠加。当然,副作用是,被设置为cacheAsBitmap的图形,内部只要变了一点,哪怕是很小的区域,也会导致整个对象更新,但是,也只有这种情况才会更新。

除此之外,还有以下的影响:
它相当于被设置为layer混合,混合关系会出现问题(诸如Alpha混合)。
由于实现方式是缓存位图,会遇到整数坐标问题。所以,平移和缩放都会一顿一顿的,此外影响到的还有设备文本。好在设备文本也可以设置为cacheAsBitmap,这样就和外部容器一起“顿”,就看不出来了游戏:http://www.shengshiyouxi.com。
此外,我发现这种做法还会影响到Draw的区域。这点我还没认真测试过。

cacheAsBitmap是有效的。我们觉得它没有效果,可能是因为把这个设置放在了动画上(动画是一直动的),或者设置在了运动的物品外部(内部物品运动外部不动的话,可能还比原来更慢)。其实我们大可以自己尝试,一般来说,只要别出现显示上的问题,在非容器对象设置cacheAsBitmap都会有一定的性能提升。而且它并不像自己实现的Bitmap,缓存位图并没有消耗多余的性能,而且也不可能出现内存泄漏。

最好不要把它当作缓存位图,而是当成一种改变FLASH渲染机制的手段。cacheAsBitmap具有两面性,错误的设置也可能会更慢。当然,它是个运行期间属性,有心的话,也可以动态修改。

这篇关于再谈cacheAsBitmap的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021209

相关文章

再谈协议--定制协议

目录 1 协议 2 自定义协议 3 常用的序列化和反序列化方法 1 协议 协议是一种约定,这是我们前面的理解。 在我们之前使用 socket 进行 udp或者tcp通信时,我们默认都是按照字符串或者说字节流的方式来发送和读取的,可是如果我们要传输一些结构化的数据,该怎么办呢? 就比如我们使用qq进行聊天,可能我们发送一条消息,实际上发送到网络中的不止这条消息本身,还有

再谈舒适区

前两天表弟给我发消息,想跟我了解毕业设计的事,就顺便聊了聊毕业后想去哪的事情。 我:你毕业想去哪个城市啊? 表弟:想回老家(一个三四线小城市)工作。 我:为啥啊,老家也没有你这专业的工作。 表弟:父母女朋友都在老家,老家也有房子,回老家可能更好。去大城市看过,节奏太快了。 我:… 就没再说了,毕竟每个人都有选择自己生活的权利,但是年纪轻轻就选择回老家安逸的生活,总感觉对不起这年纪。

再谈Fisher Vector

原文链接:http://bucktoothsir.github.io/blog/2014/11/24/9-th/ Fisher Vector(1) 在高斯混合模型中,我提到了特征处理的一般流程: 事实上高斯混合模型完成的是k-means的任务,那么通过高斯混合模型聚类后,也用一般的基于距离的方法进行feature encoding么?不是的,高斯混合模型通常和F

再谈U-Boot的设备管理框架

再谈U-Boot的设备管理框架 转载自 http://blog.csdn.net/ce123_zhouwei/article/details/7357045 一、U-Boot的设备管理框架 在《U-Boot的设备管理》一文中通过源码分析讲解了U-Boot的设备管理。本文将从宏观的角度继续讲解U-Boot的设备管理框架。设备管理框架实现了设备的高度抽象,保持框架

再谈工厂三姐妹

今天的会议让我收获颇多,虽然之前学习设计模式的时候已经总结过工厂三姐妹,机房重构,机房合作的时候也用到过简单工厂+抽象工厂+反射,但是谁敢说自己对工厂已经十分了解了呢?        我终于知道为什么老师提倡知识的反复学习,还有为什么不让我们在一个问题上死扣,不会的就挂起来接着往下学。一个新知识,当时不管你学的多精,多透彻,过去了也会忘记,只有不断重复,才能记得更加牢固;遇到难题

再谈网络安全的自动化

“工欲善其事,必先利其器。”自动化技术代表了INTERNET软件的一种发展趋势,一种能够改变因特网整体安全水平的趋势。未来的安全软件将走向在线销售、更新、甚至租赁,尤其是桌面级安全产品,因为面对的大部分用户属于对网络安全技术知之甚少的网络服务使用者,这样,只有简单易用的软硬件和服务才有可能真正地提高因特网的整体安全水平。   当然,这种在线技术向计算机安全提出了新的挑战,也同时引入了新的

再谈数组指针以及二维数组的问题

刚才自己在VS上实验了几次总结了一些粗浅的规律: 首先一个基本的概念,二维数组存在二级指针的类似调用关系,或者说就是二级指针的模型。 例如:a[2][3],a指向a[0], a[0]指向a[0][0],虽然从地址上来说,他们指向的是同一个地址,都是首地址,在数量上一直,但进行指针调用的值不一样。*a==a[0],*a[0]==a[0][0],所以**a==a[0][0]; 同样,*(a+1)

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景: kettle中http post步骤如何发送http请求且传递body参数?  解决方案: http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口,索性用python搭建一个简单的接口,关键代码如下(安装python环境略): from flask import Flask, request, jsonifyap

《三国演义》与“项目管理”——从诸葛亮的锦囊妙计再谈团队管理

 深夜无眠,翻看第一篇《三国演义》与“项目管理”,题目是《桃园结义与原始团队的建立》,写于2008年10月。当时是做团队的第五个年头,有些想法,有些感触,也有些小的收获。细细翻看,还能感受到二十多岁时的意气风发,甚是感慨。 时间一晃,如白驹过隙,转眼8年已过,已然从出生年犊不怕虎的愣头青长成了中年大叔。2015年之初,突下决心,决定返校回炉重造。当时打算给自己,也给团队两

flash中cacheAsBitmap的使用

缓存显示对象    如果 Flash 中的设计尺寸增大,无论创建的是应用 程序 还是复杂的脚本动画,都需要考虑性能和优化。如果内容保持为静态(如矩形 Shape 实例),Flash 不会优化内容。因此,更改矩形的位置时,Flash 将重绘整个 Shape 实例。可以通过缓存指定的显示对象来提高 SWF 文件的性能。显示对象是一个“表面”,实际上是位图版本的实例矢量数据,矢量数据是 SWF