再谈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

相关文章

再谈网络安全的自动化

“工欲善其事,必先利其器。”自动化技术代表了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

OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解

转自:http://blog.csdn.net/yang_xian521/article/details/7107786#quote 我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看core这部分也算是走马观花吧,随着使用的增多,对Mat这个结构越来越喜爱,也觉得有必要温故而知新,于是这次再看看Mat。 Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需

再谈 NIO

之前的文章已经提到了 IO 模型之一的 NIO, 今天打算从 “阻塞”字面 以及java 代码层面再深一步聊一聊 NIO.《到底什么是 IO》  https://mp.weixin.qq.com/s/OkIajg8aDlkLtsE81NP5jQ All is blocking 从严格意义上说,所有的请求都是阻塞的,原因是所有的请求发出去之后都会等待,只是等待时长多少而已,这点希望大家明白。

从程序被SQL注入来MyBatis 再谈 #{} 与 ${} 的区别

缘由 最近在的一个项目上面,发现有人在给我搞 SQL 注入,我真的想说我那么点资源测试用的阿里云服务器,个人估计哈,估计能抗住他的请求。狗头.png 系统上面的截图 数据库截图 说句实在的,看到这个之后我立马就是在想啊,现在我们都是用的成熟的ORM 框架,一般调用 ORM 框架的方法操作数据库是不会有问题的。 后面又让我想起来了,#{} 与 ${} 的区别,这里总结下,说一句通俗易懂

Flink 原理与实现:再谈反压

扫码关注公众号免费阅读全文:冰山烈焰的黑板报 Flink 原理与实现:如何处理反压问题 这一篇文章中我们讲了 Flink 的反压机制。本文我将更加详细的介绍先后采用的两种反压机制: 基于 TCP 的反压(< 1.5)基于信用的反压(≥ 1.5) 1. 逻辑视图 Flink 网络栈是 flink-runtime 的核心组件,所有来自 TaskManager 的工作单元(子任务)都通过它来互

再谈构建知识网

关于构建知识网的重要性,我想每个人都应该知道。虽然每次老师都说了在学习过程中构建知识网是轻松的,高效的。但是,至今我也没有完完整整地按照老师的要求去做。至于原因嘛,我也不太清楚,我感觉就是个人的习惯问题,或者说是自从高上学以来,十多年养成的陋习!今天有空,我觉得自己应该好好反思一下了。 就我个人而言,我觉得知识网的建立时正确而且必要的。在进入大学以前,我在学习方面总有一个习惯,就是喜欢把书本上的