
AS3编程技巧
jomoonrain2
这个作者很懒,什么都没留下…
展开
-
按钮的enabled属性
即使将按钮的enabled属性设置为FALSE 它依然可以监听事件所以如果要想按钮对鼠标没有反应则可以通过删除监听器 也可以用mouseenabled属性原创 2010-07-05 09:52:00 · 9236 阅读 · 0 评论 -
as3的BitArray
在as3中,针对字节的低级操作可以通过ByteArray对象进行。ByteArray的最小存储对象是单个字节,8个位,最大正整数位256。ByteArray没有提精确到位的操作,位的状态只有两种0或者1,但是占用空间小,因此在很多情况下可以利用这种优势。下面这个类就实现了精确到位的操作:package components.utils{ import flash.utils.ByteArray原创 2013-07-01 18:10:22 · 946 阅读 · 0 评论 -
as3中的移位运算
在as3中,很少时候能看到代码中含有移位操作,可能大多数人最常见的移位操作,也就是用来提取颜色通道的那几行代码:var color:uint = 0x0FF0F0F0;var a:uint = (color & 0xFF000000) >> 24;var red:uint = (color & 0x00FF0000) >> 16;var green:uint =(color & 0x00原创 2013-06-25 17:33:57 · 2489 阅读 · 0 评论 -
for each ,for的快慢
在flash技术圈内,经常会讨论一些API的效率问题。之前也曾一度陷入一些问题的讨论,但到头来发现很多问题比较莫名其妙。因为as本身的封闭性,和flash社区的整体水平问题,很多问题很难从理论上深入的分析,从而都没有一致的定论。本来技术这种问题,即使没有绝对一致的定论,至少应该有相对一致的定论,但时常有时候有些人讲这些相对的结论推广到普遍的情况之下。比如具体的一个问题:for和for each原创 2013-05-20 12:33:46 · 1266 阅读 · 0 评论 -
单例模式
<br />单例模式所要做的其实就是禁止通过构造函数实例化类,因为如果类可以通过构造函数实例化,那么就意味着可以有多个实例化对象。<br /> <br />在java或者c++中构造函数可以声明为非公有的:private或者protected,所以可以真正达到禁止通过构造函数实例化的目的。比如<br />在java中我们可以这样来实现单例模式:<br /> <br />public class ClassicSingleton { private static ClassicSingleto原创 2011-01-26 15:35:00 · 821 阅读 · 0 评论 -
函数作为参数
<br />将函数作为参数的例子没见过多少,也不知道这样有什么好处,不过这样的用法的确令人耳目一新。<br /> <br />形式:function F(f:Function):void<br />{<br /> //do something<br />}<br /> <br />细想一下,如果函数作为参数,那么着意味着f是可以替换的,很显然这是算法的一种高度抽象。<br /> <br />值得注意的是这里的f是没有指定参数的,事实上它的参数可以是任意的,而在F中取得f的参数则是依赖于f的argume原创 2011-01-16 20:56:00 · 1195 阅读 · 0 评论 -
剔除数组中的重复项
for (var j:int=0;j原创 2010-10-29 22:23:00 · 1103 阅读 · 0 评论 -
在指定时间内令按钮失效
经常能想到的方法是用Timer类,在按钮单击的侦听函数和timer事件的侦听函数中交替控制timer的开始与停止以及按钮的mouseEnabled属性:timer.addEventListener(TimerEvent.TIMER,onTimer);btn.addEventListener(MouseEvent.CLICK,onClick);function onTimer(e:TimerEvent):void{ btn.mouseEnabled=true; timer.stop();}func原创 2010-10-20 22:26:00 · 978 阅读 · 0 评论 -
一个“开关”技巧
我们通常需要停止一个事件的侦听(通常是enterframe),但可能并不想直接移除侦听器,比如我们可能很快还要开始这个侦听或者频繁“开关”这个侦听。对于这种情况有一个技巧,就是设置一个全局布尔变量,在这里我们将其命名为switch,将它放在侦听函数的最开始来判断,如果他是“开着的”,那么我们就退出侦听器。否则继续执行即可。代码:private var switch:Boolean=false;public function onEnterFrame(e:Event):void{ if(switch)原创 2010-10-18 10:18:00 · 480 阅读 · 0 评论 -
杂
关于 侦听器中事件参数的target属性:如果侦听函数与注册侦听的对象地位等同,那么target属性就没有多大意义只有当这两者不平级时,target属性才显得有意义比如注册侦听的对象为函数内部的局部变量或者 侦听函数为另一个类的方法关于舞台的引用:可以在文档类中定义一个静态变量stageref并将文档类的stage属性赋给它那么在其他类中就可以通过这个静态变量来引用舞台原创 2010-09-05 23:13:00 · 416 阅读 · 0 评论 -
loader问题
如果一个loader要多次使用 那么需要在再一次load之前进行清空: if (loader.content) { try { (loader.content as Object).destroy();//令人费解 loader.close(); loader = null; loader = new Loader(); } catch (e:Error) { }原创 2010-09-06 21:37:00 · 644 阅读 · 0 评论 -
什么时候用表达式方法声明函数
在注册侦听器时,如果注册侦听器的对象是包级变量那么侦听器应该用语句方法声明private function func(e:Event){}而如果注册侦听器的对象是函数内部的局部变量,那么侦听器就应该用表达式方法声明var func:Function=function(e:Event){};总的来说就是注册侦听器的对象和侦听器应该是平级的原创 2010-09-06 17:03:00 · 644 阅读 · 0 评论 -
如何让获得父级mc中的其他对象(例如mc对象)
一种方法是可以把子mc作为父mc的变量这样可以先通过获得对父对象的引用然后再用父对象的引用获得其他mc对象的引用如:var _parent:Object=parent;//或者var _parent:MovieClip=parent as MovieClip;var _mc:MovieClip=_parent.mc as MovieClip;也可以通过getChildByName()方法来获得var _mc:MovieClip=_parent.getChildByName("mc") as MovieCli原创 2010-07-08 12:52:00 · 686 阅读 · 0 评论