加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash中,getChildByName的效率测试及原理推测

发布时间:2020-12-15 06:54:30 所属栏目:百科 来源:网络整理
导读:用actionscript 3开发的同学都知道,根据名称获取显示对象可以通过getChildByName函数,那么,这个系统函数效率怎么样呢?我们做一个测试 package ?{? ???? import ?flash.display.DisplayObject;? ???? import ?flash.display.Sprite;? ???? import ?flash.

用actionscript 3开发的同学都知道,根据名称获取显示对象可以通过getChildByName函数,那么,这个系统函数效率怎么样呢?我们做一个测试

 
 
  1. package?{?
  2. ????import?flash.display.DisplayObject;?
  3. ????import?flash.display.Sprite;?
  4. ????import?flash.events.MouseEvent;?
  5. ????import?flash.utils.getTimer;?
  6. ?
  7. ????/**?
  8. ?????*?@author?hangler@163.com?
  9. ?????*/?
  10. ????public?class?Main?extends?Sprite?{?
  11. ?
  12. ????????public?function?Main():void?{?
  13. ????????????var?sp:Sprite?=?new?Sprite();?
  14. ????????????sp.graphics.beginFill(0xff00ff);?
  15. ????????????sp.graphics.drawRect(0,?0,?400,?400);?
  16. ????????????sp.graphics.endFill();?
  17. ????????????addChild(sp);?
  18. ????????????addEventListener(MouseEvent.CLICK,?onClick);?
  19. ????????????createSps(100000);?
  20. ????????}?
  21. ?
  22. ????????private?function?createSps(num:int):void?{?
  23. ????????????for?(var?i:int?=?0;?i?<?num;?i++){?
  24. ????????????????var?sp:Sprite?=?new?Sprite();?
  25. ????????????????sp.name?=?"name"?+?i;?
  26. ????????????????addChild(sp);?
  27. ????????????}?
  28. ????????}?
  29. ?
  30. ????????private?function?onClick(e:MouseEvent):void?{?
  31. ????????????var?time:int?=?getTimer();?
  32. ????????????var?test:DisplayObject?=?getChildByName("name10000");?
  33. ????????????trace(getTimer()?-?time);?
  34. ????????}?
  35. ????}?
  36. }?

就是在场景中创建10万个对象,然后获取第1万个,在我的机器上执行时间为1毫秒

如果换成

 
 
  1. var?test:DisplayObject?=?getChildByName("name50000");?

执行时间为3毫秒

如果换成

 
 
  1. var?test:DisplayObject?=?getChildByName("name90000");?

执行时间为6毫秒

以上充分说明,getChildByName函数为遍历查找,效率本身并没有做什么优化

同样的代码换成

 
 
  1. var?test:DisplayObject?=?getChildAt(90000);?

执行时间为0,说明显示对象在系统内是以显示层数为序存在数组里面

经过这样的测试,我想大家应该知道怎么去合理使用以及自己实现优化的方式来获取对象了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读