新人补钙系列教程之:拒绝CPU高占用
1.关于MovieClip和Sprite的鼠标事件,当不需要鼠标事件的时候将mouseEnabled和mouseChildren设为false. 不断的检测鼠标交互事件会消耗CPU,尤其是大量交互对象重叠的情况。
2.对于执行时间太长的非动画内容,优先选择计时器,而不是 Event.ENTER_FRAME 事件。
3.在 enterFrame 事件或 Timer 处理函数中,尽量减少对可导致重绘屏幕的显示对象外观的更改。
4.尽量减少补间动画,以节省更多的CPU处理。把MC给stop
5.场景里放入好多的子可视对象时,鼠标的滑动会导致cpu的狂飙;
原因主要在于fp内部在不停的遍历可视对象.你可能会用过或者知道可视对象都有这个方法getObjectsUnderPoint ()
它能够返回鼠标点下的可视对象列表 .这也是鼠标滑过时消耗高的原因所在.当然它更大的用途是用于辅助重绘的实现以及其他.
有什么方法可以降低这块的消耗呢?答案是有的;
每个可视对象都有两个属性
mouseChildren 跟mouseEnabled
mouseChildren的作用是确定对象的子项是否支持鼠标 而
mouseEnabled 的作用就在于 指定此对象是否接收鼠标消息。
恩很显然 mouseEnabled跟 mouseChildren就是决定对象是否可以侦听鼠标事件的关键所在;
事实也证明只要设置了这两个属性鼠标滑过的高消耗就减少了,那是因为但这两个属性都设置为false后 就不在归到遍历树的对象中去了,
当然你也发现折辱这两个属性的功能呢个一样虽然我们可以把这两个属性都设置为false,但这不就意味着我们要放弃鼠标侦听?要知道游戏里对鼠标点击,鼠标松开,鼠标滑等鼠标事件都是十分依赖的.
恩,这是事实,但我们却可以用别的方法来取代他们;取代现有提供的鼠标事件方法;
而我这里说的方法就是动态4叉树.相信了解的人都知道4叉树主要用于搜索,跟剔除.而且效率相当高
当然一个4叉树还不够,我们还需要一个碰撞检测的方法来辅助下,下边会说说原理.
(没有了解的可以去看看我这帖子http://wxsr.blogbus.com/logs/60788934.html)
我之所以采用动态4叉树除了它效率高之外还在于它可以忽略遮挡物,对,fp的鼠标事件必须要点击到可视对象中去,而且如果某可视对象注册了鼠标事件但如果他上边有另外一个可视对象遮挡住的话,那么它依然无法触发到事件,但动态4叉树却可以给我们解决掉这个游戏里紧要需求的问题.
综合wxsr 游戏效率优化
新人补钙系列教程之:拒绝CPU高占用的更多相关文章
- 新人补钙系列教程之:Molehill底层API中最重要的Context3D
Context3D,是一个三维空间的处理环境,负责创建并处理三维对象的各个要素如顶点.片段.透视等等,并将处理的结果使用AGAL(Adobe图形汇编语言)上传给显卡进行运算,运算结果最终被回传给CPU ...
- 新人补钙系列教程之:3D理论 - 二进制空间分割(BSP)树
1. 什么是BSP树 BSP算法的初始数据是一个多边形集,BSP在预处理的时候先在多边形集中选取一个多边形作为支持平面,然后根据这个平面将集合划分成两个部分,每个部分是一个新的子节点,递归进行该过程, ...
- 新人补钙系列教程之:体验ApplicationDomain 应用程序域
要说应用程序域,就不得不说安全沙箱 安全沙箱在帮助文档的解释是: 客户端计算机可以从很多来源(如外部 Web 站点或本地文件系统)中获取单个 SWF 文件.当 SWF 文件及其它资源(例如共享对象.位 ...
- 新人补钙系列教程之:AS3 与 PHP 简单通信基础
package { import flash.display.Loader; import flash.events.Event; import flash.net.URLLoader; import ...
- 新人补钙系列教程之:AS 与 JS 相互通信
比较常用的,AS 调用 JS private function callJS():void{ ExternalInterface.addCallback("callbackQQPay&quo ...
- 新人补钙系列教程之:AS3 位运算符
ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript 中,所有整数字面量默认都是有符号整数,这意味着什么呢? 有符号整数使用 3 ...
- 新人补钙系列教程之:XML处理方法
初始化XML对象XML对象可以代表一个XML元素.属性.注释.处理指令或文本元素.在ActionScript 3.0中我们可以直接将XML数据赋值给变量: var myXML:XML = <or ...
- 新人补钙系列教程之:AS3事件处理--事件流
一个flash应用程序可能会非常复杂,比如,有很多可视实例嵌套在一起,这样的话会形成一个树形结构,这个结构的根是stage,然后一级级到不同的实例,一般来说,要把这个树形结构倒过来看,即stage在顶 ...
- kali Linux系列教程之BeFF安装与集成Metasploit
kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...
随机推荐
- P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 2017 多校4 Matching In Multiplication(二分图)
Matching In Multiplication 题解: 首先如果一个点的度数为1,那么它的匹配方案是固定的,继而我们可以去掉这一对点.通过拓扑我们可以不断去掉所有度数为1的点. 那么剩下的图中左 ...
- A Dangerous Maze (II) LightOJ - 1395(概率dp)
A Dangerous Maze (II) LightOJ - 1395(概率dp) 这题是Light Oj 1027的加强版,1027那道是无记忆的. 题意: 有n扇门,每次你可以选择其中一扇.xi ...
- sql或oracle插入数据时进行md5加密
1.sql简单直接调用: SELECT hashbytes(') ; 2.oracle要复杂些 首写需要建函数: CREATE OR REPLACE FUNCTION MD5( passwd IN V ...
- 图表绘制工具--Matplotlib 2
''' [课程3.] 基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主 同时可延展出多种其他图表样式 plt.plot(kind='line', ax=No ...
- 实现自己的系统调用针对linux-2.6.34【转】
转自:http://biancheng.dnbcw.net/linux/303362.html 在linux下实现自己的系统调用.主要功能是:遍历系统的进程,并将相关的进程信息存放在自己定义的结构体中 ...
- 【转载】Photoshop-制作图片圆角2种方法
学习网址:http://www.23ps.com/photoshop/cjjc/300002034.htm 方案一: 使用选区和蒙版相结合,用图章制作圆角选区,删除多余部分 效果: 实现步骤: 一.如 ...
- Laravel 项目使用 Carbon 人性化显示文章发表时间
比如说有这样一个需求:一篇文章的发表时间: **距离现在时间** **显示格式** < 1小时 xx分钟前 1小时-24小时 xx小时前 1天-10天 xx天前 >10天 直接显示日期 针 ...
- J.U.C并发框架源码阅读(十七)ReentrantReadWriteLock
基于版本jdk1.7.0_80 java.util.concurrent.locks.ReentrantReadWriteLock 代码如下 /* * ORACLE PROPRIETARY/CONFI ...
- Python与数据结构[1] -> 栈/Stack[1] -> 中缀表达式与后缀表达式的转换和计算
中缀表达式与后缀表达式的转换和计算 目录 中缀表达式转换为后缀表达式 后缀表达式的计算 1 中缀表达式转换为后缀表达式 中缀表达式转换为后缀表达式的实现方式为: 依次获取中缀表达式的元素, 若元素为操 ...