- 浏览: 1061208 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://bbs.9ria.com/viewthread.php?tid=73161&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400
以下是我在做MMORPG初期的时候,进行的一些算法性能测试,今天在整理东西的时候不小心看到了,所以把他给分享给大家,RPG游戏中经常用的深度排序方法,我将大家常用的方法做了很小的修改进行性能测试,
结果如下:
性能从高到低:doSort4,doSort1,doSort3,doSort2,doSrot5
doSort1:先数组的sortOn排序,再用setChildIndex设置层.
doSort2:先数组的sortOn排序,再用swapChildren设置层,不设置没有变化的层.
doSort3:先数组的sortOn排序,再用swapChildrenAt设置层,不设置没有变化的层.
doSort4:先数组的sortOn排序,再用setChildIndex设置层,不设置没有变化的层.
doSort5:这里我是采用分冶策略和快速排序的思想是一样的,我原以为这种方法会很快,结果不是这样的,这里不是因为分冶策略的方法慢,是因为每次划分的时候都会带来错误的层设置,所以导致最终的速度变慢,大家可以将doSort4结合4叉树进行深度排序
doSort5,是不是对数组进行快速排序,到最后再来一次setChildIndex要快一点呢。
在getPartition中每次都swapChildrenAt,不太好吧。
另外递归的掉用,应该也会影响点效率的吧
还是不如
这样效率高
以下是我在做MMORPG初期的时候,进行的一些算法性能测试,今天在整理东西的时候不小心看到了,所以把他给分享给大家,RPG游戏中经常用的深度排序方法,我将大家常用的方法做了很小的修改进行性能测试,
结果如下:
性能从高到低:doSort4,doSort1,doSort3,doSort2,doSrot5
doSort1:先数组的sortOn排序,再用setChildIndex设置层.
doSort2:先数组的sortOn排序,再用swapChildren设置层,不设置没有变化的层.
doSort3:先数组的sortOn排序,再用swapChildrenAt设置层,不设置没有变化的层.
doSort4:先数组的sortOn排序,再用setChildIndex设置层,不设置没有变化的层.
doSort5:这里我是采用分冶策略和快速排序的思想是一样的,我原以为这种方法会很快,结果不是这样的,这里不是因为分冶策略的方法慢,是因为每次划分的时候都会带来错误的层设置,所以导致最终的速度变慢,大家可以将doSort4结合4叉树进行深度排序
private function doSort1(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { setNum++; setChildIndex(sortedLayers[i], i);// 最耗cpu } } private function doSort2(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { item = sortedLayers[i]; child = getChildAt(i) as Sprite; if (child != item) { setNum++ swapChildren(child, item); } } } private function doSort3(maxNum:int):void { var sortedLayers:Array = arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; for (var i:uint=0; i<maxNum; i++) { item = sortedLayers[i]; child = getChildAt(i) as Sprite; if (child != item) { setNum++ swapChildrenAt(i, getChildIndex(item)); } } } private function doSort4(maxNum:int):void { var sortedLayers:Array=arrayResult; sortedLayers.sortOn("y",Array.NUMERIC) var item:Sprite=null; var child:Sprite=null; while (maxNum--) { item = sortedLayers[maxNum]; child = getChildAt(maxNum) as Sprite; if (child != item) { setNum++ setChildIndex(sortedLayers[maxNum], maxNum); } } } //公冶策略 public function doSort5(array:DisplayObjectContainer):void{ var size:uint=array.numChildren; sort(0,size-1); function sort(left:int,right:int):void{ if(left>=right) return; var mid:int=getPartition(left,right,array.getChildAt(right)); sort(left,mid-1); sort(mid+1,right); } function getPartition(left:int,right:int,mid:DisplayObject):int{ var lp:int=left-1; var rp:int=right; while(true){ while(mid.y>array.getChildAt(++lp).y){} while(rp>0 && array.getChildAt(--rp).y>mid.y){} if(lp>=rp){ break; else{ array.swapChildrenAt(lp,rp) } } array.swapChildrenAt(right,lp) return lp; } }
doSort5,是不是对数组进行快速排序,到最后再来一次setChildIndex要快一点呢。
在getPartition中每次都swapChildrenAt,不太好吧。
另外递归的掉用,应该也会影响点效率的吧
还是不如
var sortedLayers:Array= _list; var maxNum:int = sortedLayers.length; var t:int = getTimer(); sortedLayers.sortOn("y",Array.NUMERIC); var item:Sprite=null; var child:Sprite=null; var numChilds:int = sp.numChildren; while (maxNum--) { item = sortedLayers[maxNum]; sp.addChildAt(item, maxNum); }
这样效率高
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2397实现这效果其实比较简单,主要是思路~! package ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[原创]围绕任意一个中心点旋转
2011-10-23 13:46 0package guwanyuan.qicool.game.c ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
(RepeaterOverTimeLine能将一个for循环执行的工作类似异步地平摊到多个帧上)RepeaterOverTimeLine
2011-09-30 02:26 0(RepeaterOverTimeLine能将一个for循环执 ... -
box2dttest(台球demo,使用了box2d)
2011-09-21 01:49 0box2dttest(台球demo,使用了box2d) -
贪吃蛇游戏
2011-09-16 02:40 0package com { /** ... -
打豆豆
2011-09-08 00:34 0打豆豆打豆豆 -
经典代码-空战.zip (513.2 KB)
2011-09-02 02:24 0经典代码-空战.zip (513.2 KB) -
基于TextField的图文混编的组件
2011-09-01 23:04 0基于TextField的图文混编的组件 -
泡泡龙
2011-08-29 22:36 0泡泡龙泡泡龙泡泡龙 -
井字棋算法
2011-08-18 15:04 0井字棋算法井字棋算法 -
_超级玛丽游戏_flash_game_demo
2011-08-18 00:01 0_超级玛丽游戏_flash_game_demo.zip -
吴万江-TD_demo
2011-08-15 15:35 0吴万江-TD_demo -
S_eVent系列教程
2011-08-13 05:01 0S_eVent系列教程S_eVent系列教程 -
[转][翻译]LoaderMax使用指导(一)
2011-08-10 19:51 1865http://hi.baidu.com/mr_ziqiang/ ...
相关推荐
RPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-战火与荣耀UI.zipRPG游戏-...
用DirectX编写RPG游戏PDF-Programming.Role.Playing.Games.with.DirectX+源 码实例.
RPG游戏设计实现分析毕业论文.doc
RPG游戏设计与实现毕业设计.doc
基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4魔兽RPG风格的RTS游戏模板源码.zip基于C++开发UE4...
RPG游戏系统软件需求说明书.doc
RPG编程同C语言编程的比较.docx
J2ME(RPG)游戏源码-梦幻西游.rar
Unity 3D的Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发
经典RPG爱情游戏附Delphi源代码..rar
unity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络游戏源码.rarunity 3D多人在线RPG网络...
Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发.zip
基于unity3d的回合制RPG游戏源码+项目说明.zip基于unity3d的回合制RPG游戏源码+项目说明.zip基于unity3d的回合制RPG游戏源码+项目说明.zip基于unity3d的回合制RPG游戏源码+项目说明.zip基于unity3d的回合制RPG游戏...
D游戏算法——RPG游戏初步.ppt
制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏制作RPG游戏...
[游戏开发参考书-用DirectX编写RPG游戏]. Programming.Role.Playing.Games.with.DirectX
rpg游戏乱码怎么解决.docx
unity RPG动作游戏框架源码.zip
RPG-Maker-MV-Decrypter:您可以使用此项目解密RPG-Maker-MV资源文件.zip
Building.an.RPG.with.Unity.5.x.2016.10.pdf