Flash 与性能实验笔记:对象池
今天一个下午在和civet_Dr.M.进行讨论,讨论很多关于flash 性能方面的问题,这些讨论暂时看不到什么结果,也不能总结出一套很完整的方案。不过flash和内存之间的使用是一个很重要议题。其中我们讨论了一个对象池的问题。在java当中有线程池的概念,其中原理跟对象池是差不多的。我们知道当我们创建对象时候,就需要向内存申请空间,这部分是必须的开销,当我们不需要对象的时候,就需要把他相关的引用和监听都清除掉,确保对象完全被安全释放掉。但是在这两个过程当中,创建和销毁会给虚拟机带来很多工作。当你不断创建,同时在某一条件下进行销毁。这两个过程,带来额外的开销。对效率带了一些的影响。为了减少这些操作。civet_Dr.M. 我的一个网友,他的指导思想如下
ivet_Dr.M. 19:39:56
1. 要实例的时候从池里拿
2. 不用的实现丢回池里
3. 池里的不够用就new一些
我觉得最基本就这些原则而已
civet_Dr.M. 19:40:14
2. 不使用的实例丢回池里
根据他的方法,创建对象是需要的,但是当我们删除对象的时候,有时候可以对对象进行一些特别的处理,重用这些对象,对效率会带来一定的提升。
关于对象池的使用,可以到这里观看ivet_Dr.M. 演示的一部分使用。
http://wonderfl.net/c/9ESp
参考他的写法:也尝试制作一个。对象池使用在创作粒子特效的时候尤为重要,因为粒子效果会产生很多粒子数目,这些数目也不是一个小数目,如果创建太多对象必然导致开销很大,对已经产生的对象进行回收处理,这未尝不是一个好事。当中对象池使用还有很多提出的观点会值得去探讨。
下面的代码为:创建一系列的对象进行匀速运动。其中
var ball:Ball=getClass(); 在这里用法是很有趣的。不过这个粒子数目并不是很多。故此如果更多达到一定的情况的时候,需要使用位图进行优化。这个也是一个猜想。至于可行性如何?值得思考
package
{
import flash.display.Sprite;
import flash.events.*;
public class Main extends Sprite
{
private var pool:Array=new Array();//对象池
private var contain:Sprite=new Sprite();//容器
private var speed:int=5;
public function Main()
{
init();
}
private function init():void
{
addChild(contain);
//addChild(new Stats());//监控内存使用情况
stage.addEventListener(MouseEvent.CLICK,onClickHandler);
}
pri
相关文档:
我喜欢看flash动画,打开了firefox,百度一下flash动画,进入网站之后观看不了,但firefox提示“您需要其他插件以显示此页面的所有媒体”于是点击“安装缺失插件”,这时firefox自动查找插件,提示:
Adobe Flash Player(installer)
单击选择这个插件,并单击“下一步”,根据提示,输入密 ......
演示地址:
forked from: SimpleFish - wonderfl build flash online
今天我们要创建一个小鱼的绘制。这次我们会使用SimpleFish.as 创建绘制小鱼类 。同时我们会使用绘图APi 当中的curveTo 的一个方法。这个方法用法如下,
this.graphics.moveTo(开始起点X,开始起点Y);
&nb ......
<script language="javascript">
//-------定义图片路径等参数-------------//
//定义大图的路径
var bigPic0 =" ";
var big ......
这是一篇讲解如何使用XML实现Flash与通信的入门级实例教程。通过本例的学习,我们将了解使用XML开发Flash RIAs的基本流程。
从Flash Player 5开始,就可以使用XML对象来实现Flash与后台通信。Flash浏览器与XML数据之间的直接进行数据交换,并且同LoadVars函数一样,都是以字符串形式传递的。后台语言作为XML数据和数据库 ......