请教Flash AS3 彻底卸载 loader 的方法,谢谢!大神们帮帮忙_百度知道卡车装载机4,卡车装载机4小游戏,truck loader,2144小游戏&
卡车装载机4关灯猜你喜欢鼠标左键吸住/放下货物;AD移动;W跳跃;R重玩。相关小游戏玩单精选14款by 2144编辑28款by 2144编辑21款by 2144编辑13款by 2144编辑10款by 2144编辑网页游戏卡车装载机4类型:大小:5.71 MB英文名:truck loader如何开始
游戏加载完毕后点击PLAY - 再点击PLAY GAME - 然后点击关卡01即可开始游戏
成功把所有的货物成功装载到卡车上吧!
卡车装载机4游戏介绍装载机4:卡车装载机第四季来啦!这一次又有什么不一样的关卡,这一次有更高的难度,这一次有更有趣的内容,等着大家来体验哦!主角还是那个厉害的,一个优秀的装载工会提高很多效率哦~ 虽然有高科技的机器在,也还是需要开动脑筋想一些小办法。
游戏玩法 收起游戏视频展开更多&&女朋友走了,一切都过去了,不开心也不开心了好一阵子,现在才知道:原来快乐的日子已经过去了.
前阵子突然没什么事干了..
老板不找东西给我做,主程不找东西给我做..慢慢我就会觉得自己是个伟大的艺术家,在活着的时候是不会受到别人重视的.
当然我比那些伟大的艺术家更伟大,为什么?的区别就是,我知道我死后也不会受到别人的重视..所以我们要怎么做?我们要自己找事做..
无聊去反编译了TheMiner的代码去看了下..收获到个不错的事件..那就是allComplete..
想着TheMiner既然可以读取到所有游戏的信息,分析并处理..那我为什么不可以用它来处理个别的游戏呢..例如是我们自己的游戏..
参考资料除了上面提到的TheMiner,还有下面这个网站..
其实我也是跟大部分人一样..懂得26个英文字母而已..然后啃了很多,才勉强看到那句重点:
All you need is &allComplete&
下面是要认识到的两个基本的东西:
1.怎么使用allComplete:
import flash.display.LoaderI
import flash.display.S
import flash.display.S
import flash.events.E
public class PreloadSwf extends Sprite
public function PreloadSwf():void
addEventListener("allComplete", allComplete);
private function allComplete(e:Event):void
removeEventListener("allComplete", allComplete);
var info:LoaderInfo = e.target as LoaderI
trace(info.url, "is being monitored");
// now let the fun begin! try:
// info.content
// info.content.stage
// info.parameters
// info.applicationDomain
// info.bytes
ps:很简单的. 做***..然后接收到事件的时候把***断掉, 避免有更多的事件触发做了重复多余的东西..在这里有个很好用的东西..每个allComplete传过来的data都是完整无加密的..说是这些数据是可以存起来的.如果说我们想破解某个已经加密的swf文件..可以通过这种方法把它取出来...当allComplete触发完成之后,就可以通过LoaderInfo的信息去取我们所要的类了...既然取到我们要的类,那我们还有什么事做不了的呢..
2.配置mm.cfg&& 这个文件里面存了我的破解swf文件路径..不太了解的话可以搜索一下TheMiner的配置..PreloadSwf=swf文件路径
然后把这个配置文件存放在用户目录下,例如我的系统是win7,装个C盘.用户名是yans.那目录应该是C:\Users\Yans..其它的系统可以参考这个
*Macintosh OS X
/Library/Application Support/Macromedia
*Windows 95/98/ME
%HOMEDRIVE%\%HOMEPATH%
*Windows 2000/XP
C:\Documents and Settings\username
*Windows Vista
C:\Users\username
/home/username
大概写了些基本的方法.下次再写一些具体的实例..还有现在用的简单的一个框架..
阅读(...) 评论()Flash游戏优化技巧[整理]
该内容整理自infoQ的Adobe在线课堂,里面有些技巧对非游戏的flash开发也有众多借鉴之处。
Flash游戏优化技巧
黄竣 adobe平台技术经理
Smoothing Game Play=Better Game
游戏优化的标准:帧频、CPU、内存
一、Flash游戏中ActionScript代码优化
1、脚本运行速度的检测
var started:Number
= getTimer();
runTime=getTimer() -
2、充分运用Flash Player新功能
?Vector类与Array类;
?新的绘图API
?处理像素的新方法;
?事件捕获和冒泡;
3、Vector类与Array类
Flash Player
10引入了Vector类,其读写访问速度比Array类更快。
coordinates:Array = new Array();
var started:Number
= getTimer();
for (var i:int =
0; i& 300000; i++)
coordinates[i]
=Math.random()*1024;
trace(getTimer() -
// output:
coordinates:Vector.&Number&= new
Vector.&Number&();
var started:Number
= getTimer();
for (var i:int =
0; i& 300000; i++)
coordinates[i] =Math.random()*1024;
trace(getTimer() -
// output:
注意:尽可能尝试使用Vector对象API,因为它们的运行速度可能更快。
4、新的绘图API
Flash Player
10提供了一个新的绘图API,使用它可获得更好的代码执行性能。
此新绘图API包含下列方法:
?drawPath()
?drawGraphicsData()
?drawTriangles()
注意:此新的API不提供显示性能改进,但可以大大减少必须编写的代码行数。代码行越少,AS执行性能越好。
5、处理像素的新方法
Flash Player
10中引入了快速绘制及读取像素的方式
?setVector()
?getVector()
注意:好果使用setPixel()或setPixel32,请使用lock()和unlock();减少遍历像素的次数;配合Vector类来提高像素处理速度;
6、事件捕获和冒泡
ActionScript3.0中的事件模型引入了事件捕获和事件冒泡的概念。
for ( var i:int =
0; i& MAX_NUM; i++ )
Listen to the MouseEvent.CLICKevent
enemy.addEventListener ( MouseEvent.CLICK, onEnemyClick
container.addEventListener ( MouseEvent.CLICK,
onEnemyClick,true );
for ( var i:int =
0; i& MAX_NUM; i++ ) { …… }
注意:使用事件捕获和冒泡可以最大程度地减少事件处理。
?利用mouseEnabled和mouseChildren属性禁用鼠标交互;
?对于TextField,使用appendText()方法,而不要使用+=运算符;
?将重复使用的变量定义在循环之外;
?尽可能避免使用中括号[]运算符;
?对while循环使用相反的顺序(while(--i&-1{})
?对文本基本搜索和提取时,使用String类方法而非正则表达式;
?使用位移运算符(&&,&&)替换乘除运算符(*,/)
???????????
二、Flash游戏中的图像优化
1、将矢量图形平滑处理
如使用Flash
Professional 或Illustrator减少矢量图形的控制点。
注意:简化矢量图形的复杂路径可以大大提高游戏的平均帧速率
2、采用正确的图片压缩方式
注意Fireworks可以用PNG8格式高效的压缩带Alpha通道的图片(此功能PS暂不支持)
3、采用轻量级的UI组件
注意:大量使用UI组件是隐形的效率杀手;采用传统的button,Sprite等代替某些组件;
4、用位图替代矢量图形
?将滤镜特效在图片处理过程中添加
?创建合适大小的位图
?从Flash8开始,引入了cacheAsBitmap功能
注意:对自身无动画的MC进行位图缓存;更改对象的x和y属性不会导致重新生成缓存位图;旋转、缩放对象或更改其alpha值的行为都将重新生成缓存的位图,从而降底性能;AIR或Packager for
iPhone中提供的DisplayObject.cacheAsBitmapMartix属性没有上述限制。
三、Flash游戏中的内存优化
1、选择适当的显示对象
不同显示对象的内存使用量(字节数)
trace(getSize(new
Shape()));
// output:
trace(getSize(new
Sprite()));
// output:
trace(getSize(new
MovieClip()));
// output:
注意:对于非交互式简单形状,使用Shape对象;对于不需要时间轴的交互式对象,使用Sprite对象;对于使用时间轴的动画,使用MovieClip对象;将新文本引擎用于只读文本,将TextField对象用于输入文本。
2、重复利用游戏元素
注意:尽可能重复使用对象而不是重新创建对象;使用对象池,重复使用对象而非设置为null;
3、释放内存
删除对对象的所有引用以确保触发垃圾回收
Object=null
注意:AS3中delete仅是删除动态对象的动态属性;在将对象的引用设置为null之前,先确保正确地停用对象;如对象用作事件侦听器,先removeEventListener();清除BitmapData对象时,先调用dispose()方法;Flash Player
1.5.2以上版本,disposeXML()新方法;
4、冻结和解冻对象
只有确保对象没有被使用,才能有效的进行内存回收
注意:使用Event.REMOVED_FROM_STAGE和Event.ADDED_TO_STAGE事件正确冻结和解冻对象;Flash Player
10的Loader类新方法unloadAndStop(),通过此方法,可以卸载SWF文件、自动冻结加载的SWF文件中的每个对象并强制运行垃圾回收器。
四、Flash游戏中的渲染优化
1、重绘区域选项
找到“谁偷吃了你的奶酪”,可以使用flash.profiler.showRedrawRegions()方法以编程方式启用此选项。
注意:在游戏开发过程中常用重绘区域,找到隐藏的垃圾元件。
2、选择适合你的游戏渲染引擎
vs BitmapData
vs CopyPixel
注意:位图数据作为游戏元件效率会明显高于Sprite及MovieClip;CopyPixel方法速度远大于Draw
;对于需要旋转的游戏元件,预先旋转位图并缓存,再CopyPixel;
尽可能避免使用alpha属性;
使用位图缓存和opaqueBackground属性;
五、其它优化
优化网络通信及数据交互;
优化音视频;
六、监测游戏性能的工具
?Stats类:/p/mrdoob/wiki/stats
?PerformanceTest类:
/blog/archives/2009/04/as3_performance.html
Builder探查器
?FlexPMD:/wiki/display/flexpmd/FlexPMD
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Promotions
Estimated Shipping
params.wmode = "direct";
_view = new View3D();
_view.backgroundColor = 0x666666;
_view.antiAlias = 4;
this.addChild(_view);
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
public function GettingStartedWithAway3D()
_view = new View3D();
_view.backgroundColor = 0x666666;
_view.antiAlias = 4;
this.addChild(_view);
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
private function onEnterFrame(ev : Event) : void
_view.render();
Parsers.enableAllBundled();
_loader = new Loader3D();
_loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_loader.load( new URLRequest('vase.awd') );
public function GettingStartedWithAway3D()
_view = new View3D();
_view.backgroundColor = 0x666666;
_view.antiAlias = 4;
this.addChild(_view);
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
Parsers.enableAllBundled();
_loader = new Loader3D();
_loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_loader.load( new URLRequest('vase.awd') );
private function onLoadError(ev : LoaderEvent) : void
trace('Could not find', ev.url);
_loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
private function onResourceComplete(ev : LoaderEvent) : void
_loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_view.scene.addChild(_loader);
_loader.rotationY = stage.mouseX - stage.stageWidth/2;
private function onEnterFrame(ev : Event) : void
_loader.rotationY = stage.mouseX - stage.stageWidth/2;
_view.render();
_view.camera.y = 3 * (stage.mouseY - stage.stageHeight/2);
_view.camera.lookAt(_loader.position);
private function onEnterFrame(ev : Event) : void
_loader.rotationY = stage.mouseX - stage.stageWidth/2;
_view.camera.y = 3 * (stage.mouseY - stage.stageHeight/2);
_view.camera.lookAt(_loader.position);
_view.render();