as3

AS3的内存泄漏与垃圾回收

我们两清 提交于 2020-04-02 12:07:45
一、内存泄漏 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费(百度搜的资料)。这段话是什么意思呢?打个比方吧,放牛人与一只牛,放牛人好比程序设计中的引用,牛好比对象。我们通过引用来控制对象,放牛人通过绳子牵着牛,当牛吃完草后应该牵它回家而不是放手让它走失。当我们失去对该对象(某块内存)的控制时就产生了“内存泄露”。 二、垃圾回收 简单点说不用的内存都是垃圾,而垃圾回收就是把没用的内存都回收以释放内存空间。 AS3的垃圾回收主要有两种方法:“引用计数法”和“标识清除法”。 引用计数法:当一个内存对象添加了一个引用的时候,这个计数器就加1,当删除一个内存对象的引用时,该计数器就减1。当FP判断计数器为0的时候表示这个对象已经没有引用了,没有引用就没办法控制他了,符合垃圾回收机制的条件。但有一种情况则会有所不同!当有多个对象互相引用的时候,所有的计数器始终为1,这时就出现了内存泄露的情况。举个例子: var a:Object = {} var b:Object = {foo:a}; a.foo = b; a=null; b=null; 上述代码中,所有对象的引用都被删除了。没有任何办法在程序中再访问这两个对象了,但这两个对象的引用计数器都是1,因为它们相互引用。 即该两个内存块确实是没用了

用AS3实现插入排序算法

こ雲淡風輕ζ 提交于 2020-03-17 18:20:41
插入排序 (Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5.将新元素插入到该位置中 6.重复步骤2~5 如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。 维基百科 代码:稍后整理.... 来源: https://www.cnblogs.com/finger/archive/2012/05/19/2508988.html

AS3操作WebService

一世执手 提交于 2020-02-29 23:17:17
AS3操作WebService Posted in ActionScript on 24. 二, 2010 以在线天气预报为例 地址: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 方法:getWeatherbyCityName 一、直接操作 GET import flash . net . URLLoader ; import flash . net . URLRequest ; var loader : URLLoader = new URLLoader ( new URLRequest ( " http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=上海 " )) ; loader . addEventListener ( Event . COMPLETE , completeHandler ) ; function completeHandler ( ev : Event ) : void { trace ( loader . data ) ; } POST import flash . net . URLLoader ; import flash . net .

AS3访问WebService

北城余情 提交于 2020-02-29 23:16:23
代码 package Charlotte { import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestMethod; public class KitaWebServices{ // private var url:String = new String(); private var ns:String = new String(); private var soap:Namespace = new Namespace( " http://schemas.xmlsoap.org/soap/envelope/ " ); private var soapXML:XML = < soap:Envelope xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd = " http://www.w3.org/2001/XMLSchema " xmlns:soap = " http://schemas

AS3 Signals学习笔记01

╄→гoц情女王★ 提交于 2020-02-29 21:43:33
最近在工作中无意才接触到了as3 signals这个玩意。AS3 Signals是个开源的轻量级框架,这个框架基本可以代替as3中内置的事件这套工作机制。好棒!因为在项目中,使用as3内置事件框架必须通过自定义事件才可以实现值的传递,大量自定义事件、定义常量和整个事件派发的管理、添加侦听器、移除侦听器,或多或少都会带来大量的代码,而signals这个框架思想原来在C#中原本就有,作者整合了C#中的signals思想,实现起来比as3内置的事件更快捷,可以很轻松的实现多个强类型值的传递,的在一定程度上也会简化很多代码。有朋友测试,signals里面用内置的事件竟然是as3内置事件运行速度的4倍。这个我还没测试。 我们知道上图就是as3中的事件流,而在as3中要想派发事件,那派发者必须继承 EventDispatcher或者实现IEventDispatcher接口。在Signals中就派发者就不用这么麻烦了。 Signals: Think Outside the Event Signals:脱离事件思考 signal的中文意思是“信号”,那具体指的是什么呢? 什么是Signal? 一个Signal其本质上是一个微型的针对某个事件的特定的派发者,附带它本身的监听者数组。 一个Signal的基本概念就是,不会使用类似内置事件那种方式、基于字符串的频道,而是化为一个类中具体的event

AS3 基本数据类型 primitive data type

五迷三道 提交于 2020-02-29 18:05:08
int(带符号,32位整型,-2147483648~2147483647), uint(无符号,32位整型,0~2147483647), Number(64位,双精度浮点型,-1.79e+308~-5e-324,0,5e-324~1.79e+308), String(UTF-16,Unicode), Boolean(true/false) 注意: 1. 只有int,uint是首字母小写, Number,String,Boolean均是首字母大写. 2. 在AS 3.0中,对象是最基本的单位, 声明的变量, 定义的函数 和创建的类的实例都是对象. 使用AS 3.0编程,就是使用一组对象处理任务,响应事件和与其他对象通信. 不管是基本数据类型, 还是复杂数据类型, 都是类(这与Java不同,Java的int和Integer是不一样的). 例如,在AS3中, var a:int=3; 与 var a:int=new int(3); 是等价的. 再例如,我们用 is操作符 做试验, var a:int=0; trace(a is int);//true trace(a is Object);//true 3. Number类有三个特殊的static常量, Number.NaN:Number 非数字(Not A Number),例如0/0 Number.NEGATIVE_INFINITY

CitrusEngine系列教程七:修改hero的默认动画(修改按键和增减动作)

你。 提交于 2020-02-29 07:50:00
作者: cls分享站 最近比较忙活,工作和家里都有些烦心的事情要处理,教程已经许久没更新了,感觉有点过不去啊。恰好今天有人问我如何修改hero默认按键和添加动画的问题,于是决定写一篇教程介绍一下~ 先预览一下最后界面吧: 那么,首先我们需要知道citrus 中是如何控制动画: 其实citrus 是通过修改hero类的_animation 来控制播放哪个动画的,而键盘事件是在Keyboard类(citrus.input.controllers)进行设置的,然后在hero类通过_ce.input.isDoing方法监听其输入后将_animation修改成对应的 关键代码如下: ....... ........ =》 查看完整教程 (含源码下载)《= ....... 来源: oschina 链接: https://my.oschina.net/u/1020146/blog/137653

CitrusEngine系列教程二:结合starling和Box2D开发游戏

与世无争的帅哥 提交于 2020-02-29 07:45:26
教程出自 cls分享站 CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和 Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程四:Citrus的2D动画和摄像头 CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体 CitrusEngine系列教程六:使用Tiled Map Editor创建地图 ............................................................................ 首先脑补一下相关知识吧 Starling是一个ActionScript类库,它模仿了传统的Flash显示列表。然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这会带来非常明显的性能提升。=》 Starling中文站 Box2DFlashAS3 是Box2D物理引擎的ActionScript 3.0移植版本。它具有功能强大,效率较高等优点,应用Box2DFlashAS3可以使我们的网站模拟真实世界的物理效果,从而使我们的站点具有非常强的真实感。而我们热心的拉登大叔给我们写过不少 优质教程 。

CitrusEngine系列教程三:使用flash cs 设计关卡

懵懂的女人 提交于 2020-02-29 07:28:15
教程出自 cls分享站 CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和 Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程四:Citrus的2D动画和摄像头 CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体 CitrusEngine系列教程六:使用Tiled Map Editor创建地图 ............................................................................ CitrusEngine支持很多关卡编辑器,可以通过swf或者xml快捷的实现布局,这意味着我们可以使用flash cs 来实现场景设计。现在就让我们来探讨一下如何用flash cs 来设计关卡(本教程源文件使用的是flash cs6 和flex4.7)。 首先CitrusEngine给我们提供了非常方便的 Components.fla (点击可以下载), 这个flash 文件使我们可以快速的创建基于box2d或nape的游戏场景。 打开Components.fla,我们可以看到库面板已经包含所有CitrusEngine基本的关卡组件

CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体

我的梦境 提交于 2020-02-29 07:01:00
作者: cls分享站 目前已有教程: CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和 Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程四:Citrus的2D动画和摄像头 CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体 CitrusEngine系列教程六:使用Tiled Map Editor创建地图 ............................................................................ 之前教程中,创建游戏元素的时候,我们发现默认情况下box2d的刚体都是一个矩形,但很多时候我们需要不规则的刚体。如一棵树,崎岖的路面等。这时候我们需要自定义刚体的形状,但自己写代码似乎又有点麻烦,于是 PhysicsEditor 我们可以帮我很好的偷懒一番。 PhysicsEditor 是个很棒的工具,通过它的可视化编辑界面,点一点,拉一拉就可以轻松创建任意的多边形刚体模型,并将这个模型数据导出成我们所需的格式,例如AS3类。PhysicsEditor支持Box2D、Cocos2d、Nape等多种2D物理引擎。 只不过它也是个收费软件