新人补钙系列教程之:拒绝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. ...
随机推荐
- P2029 跳舞
题目描述 小明今天得到一个跳舞毯游戏程序Dance.游戏每次连续出N个移动的“箭头”,箭头依次标号为1到N,并且的相应的分数S[1..N].如果你能“踏中”第i号箭头,你将获得相应的分数S[i]:否则 ...
- [POI2015][bzoj4383] Pustynia [线段树优化建图+拓扑排序]
题面 bzoj权限题传送门 luogu传送门 思路 首先,这个题目显然可以从所有小的点往大的连边,然后如果没环就一定可行,从起点(入读为0)开始构造就好了 但是问题来了,如果每个都连的话,本题中边数是 ...
- [codeforces] 25E Test || hash
原题 给你三个字符串,找一个字符串(它的子串含有以上三个字符串),输出此字符串的长度. 先暴力判断是否有包含,消减需要匹配的串的数量.因为只有三个字符串,所以暴力枚举三个串的位置关系,对三个串跑好哈希 ...
- 《R语言实战》读书笔记--第五章 高级数据管理
本章内容: 数学和统计函数 字符处理函数 循环和条件执行 自编函数 数据整合与重塑 5.1一个数据处理难题 5.2数值和字符处理函数 分为数值函数和字符串函数,下面是数学函数截图: ceiling.f ...
- Android应用开发EditText文本内容变化监听方法
import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android. ...
- 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest(solved 8/11)
这套题似乎是省选前做的,一直没来写题解---补上补上>_< 链接:http://codeforces.com/gym/101147 一样先放上惨不忍睹的成绩好了--- Problem A ...
- Sql Server 事务/回滚
,'test1','test1') commit tran t1 ---提交事务 功能:实现begin tran 和commit tran之间的语句,任一如果出现错误,所有都不执 事务不是有错就回滚 ...
- 解方程(NOIP2014)Warning!(前方高能!!)
原题传送门 一看这不是水题嘛. 枚举+乱搞..特别容易.... 然后a[i]取值范围出现了 当当当当~:|a[i]|<=10^10000!!!!! 我去,这是什么鬼.. 高精度? 然后默默算了算 ...
- python 实现经典算法
import time start_time = time.clock() list_ = [9, 2, 7, 4, 5, 6, 3, 8, 1] """ # 堆排序(通 ...
- JS基础用法-向数组指定位置插入对象
在做省市区三级联动的时候,需要在省市区默认位置放上请选择字样. 由于后台的API接口返回的没有请选择字样,那么就需要给返回的数组手动增加请选择 代码如下 // 原来的数组 var array = [& ...