荣龙's profilecrl-就是这样PhotosBlogListsMore ![]() | Help |
crl-就是这样crl |
September 13 为影片增加侦听器一个朋友的疑问.
为单个增加onPress侦听数组:
/** * @author crl * @version 0.000001 * @serialData File: C:\Users\crlnet\Desktop\BtnDelegate.as Created: 2007/9/13 9:54:09 Modified: 2007/9/13 10:05:36 Size: 672 bytes *@link http://www.nikemode.com * @use new BtnDelegate(button);
*/ import mx.events.EventDispatcher; import mx.utils.Delegate; class BtnDelegate { private var mc:MovieClip; public function BtnDelegate(mc:MovieClip) { if(typeof(mc)!="movieclip")throw new Error("不可当做按钮"); this.mc=mc; EventDispatcher.initialize(this.mc.__proto__); mc.onPress=Delegate.create(this,press); mc.addEventListener("onPress",this); } private function press(){ var o:Object={}; o.type="onPress"; o.target=this.mc; this.mc.dispatchEvent(o); } private function onPress(){ trace(this.mc); } } 为所有的影片,增加常用事情侦听数组.但由于flash里的一个特性-父级影片有鼠标事件,将忽略子级事件.
/** * ... * @author crl * @version 0.000001 * @serialData File: C:\Users\crlnet\Desktop\BtnDelegate.as * Created: 2007/9/13 9:54:09 * Modified: 2007/9/13 10:05:36 * Size: 672 bytes * @link http://www.nikemode.com * @use new BtnDelegate(button);
*/ import mx.events.EventDispatcher; class BtnDelegate{ private var eventList:Array=["Press","Release","RollOver","RollOut"]; public function BtnDelegate() { EventDispatcher.initialize(MovieClip.prototype); for(var i in this.eventList){ MovieClip.prototype.ref=this; MovieClip.prototype["on"+this.eventList[i]]=this[this.eventList[i]]; } } private function Press(){ this["ref"].dispatcher(this,0); } private function Release(){ this["ref"].dispatcher(this,1); } private function RollOver(){ this["ref"].dispatcher(this,2); } private function RollOut(){ this["ref"].dispatcher(this,3); } private function dispatcher(target,index:Number){ var o:Object={}; o.type="on"+this.eventList[index]; o.target=target; o.target.dispatchEvent(o); } } 最下面这个方法,是我看过javaScript中为window.onload增加事件时想到的。
MovieClip.prototype.addEventListener = function(event, fun:Function) {
var oldEvent = this["on"+event]; if (typeof (oldEvent) != "function") { this["on"+event] = fun; } else { this["on"+event] = function () { oldEvent(); fun(); }; } }; //这边还有个小问题,必须用代理来弄。不然添加多个侦听会出错。
//接收函数中this指定失效,不过看完这几个,你自己捎加修改就可以解决
pp.mc.addEventListener("Press",Delegate.create(this,tt)); September 10 聊天记录夜真 13:27:59
聊聊吗? crl 13:28:41 恩 夜真 13:28:50 你好 我是小妍 crl 13:29:18 你好,好像认识的样子 夜真 13:29:41 最近我在网络上看到一件事情, 想跟你分享好吗? crl 13:30:45 好的.不会是法轮功什么的吧 crl 13:30:50 哈哈 夜真 13:31:13 河南省高耀洁医师在海外被颁发-年度女权活动人士奖, 这位中国抗艾滋病勇敢祖母的故事,一下子传遍全世界,这事有听说过吗 crl 13:32:09 没听说过,很感人吧 夜真 13:32:32 高医师的故事, 也是一部中国的近代史, 但却充满了辛酸与无奈 crl 13:32:33 祖母? 夜真 13:32:38 高医师说: 90年代中期,在共铲党「献血光荣」的误导号召下,偏远贫困的农民,纷纷加入了这场「以血致富」的运动中来 夜真 13:32:59 而结果呢?则是艾滋病在贫穷地区蔓延,一发不可收拾…. crl 13:33:08 针头没有消毒??? 夜真 13:33:31 在卖血背后高昂的利润, 政府官员,商人.一连串利益挂钩, 导致中国目前有 500-1000万的艾滋病感染者 夜真 13:33:57 且每年以30%~40%的速度蔓延, 多少无辜的生命就这样没有了 crl 13:34:03 哪有那么多人要血. crl 13:34:16 拿来喝也不用那么多. 夜真 13:34:26 河南有整个村变成艾滋病村,与世隔绝, 共铲党就准备让他们自生自灭,看到这样的事情,感到好心酸难过…… 夜真 13:34:46 而高医师以80 岁高龄, 独自对抗贪官,共铲党, 置自己生死于度外,告诉更多人中国艾滋病的真象,这样勇敢的精神, 我想这应该就是中国未来的希望吧! crl 13:35:10 然后这个应该不会报道吧 夜真 13:35:33 有时网友会跟我讨论, 管好自己就好了,干嘛那么多事! crl 13:36:00 恩.报纸等媒体,都属于国家的 crl 13:36:14 怎么可能会报道不利于自己的东西 夜真 13:36:23 但我觉的中国是我们大家的, 我爱这片国土, 那些既得利益者, 只为钱不管老百姓死活, 若大家也默许它们这样的行为, 你想想中国会变成如何? 夜真 13:36:43 我只是一介小女子, 朋友都说我很直, 常常会说出别人想说又不敢说的话, 但我只希望跟网友聊聊真心话, 更希望中国好. 希望你别介意哦! crl 13:36:53 什么人都有,但是坏人,应该是少部份 夜真 13:37:15 共铲党执政几十年, 经过三反, 五反, 文化大革命, 有计划的杀害了八千多万条无辜的中国人….每次计划完成都会骗人民说现在变好了 crl 13:38:15 其实维持一个国家的稳定利益大一一却 夜真 13:38:37 这像不像强盗杀了人, 然后跟对方家人说我这么做都是为了你好…. crl 13:38:36 有时可以错杀千人 夜真 13:38:44 最近全世界都在声援 2500多万中国人退出共铲党, 他们说:没有共铲党, 才有新中国, 说的很有道理耶 crl 13:39:42 安内,才能更好的抵御外敌.外面多少国家乱的不成体统 夜真 13:40:04 其实人民才是国家真正的老板,哪个党不行就叫他下台嘛!但是中国人被这个党统治的穷怕了,动不动就用稳定啦来骗人民, 其实祸根不就是这恶党吗? crl 13:40:33 况且,我觉得我们的生活质量确实有很大的改善 夜真 13:40:56 苏联, 东德, 摆脱了共铲党, 人民拥有了真正的自由, 经济还突飞猛进 夜真 13:41:16 从此可以自己掌控自己的人生, 不必再被魔掌控制监视 crl 13:41:18 我看各国的国情 夜真 13:41:21 crl 13:41:49 你的想法太过悲观 crl 13:42:35 任何国家,任何区域,都会有不择手段的人. crl 13:43:26 不过这些都不能推到一个国家的执政党 crl 13:43:49 看不到你的图. crl 13:43:57 夜真 13:44:30 不好意思,我没装视屏耶 夜真 13:44:40 我刚说的都是我的想法 发送连接请求给对方时(文件“{955D8C15-78DB-4CD9-B8CC-D310EB931991}0.jpg”)遇到网络错误,发送失败,可能您的QQ已经掉线,您可以尝试重新发送请求,或重新登录QQ
夜真 13:45:00 原来中国还是有这么多不怕共铲党的勇士,他们要从内心跟共铲党决裂, 还给自己一个干净的自我, 不再跟恶党同流合污 crl 13:45:16 恩,我知道.不过也应该处在别人的立场来想问题 夜真 13:45:21 还有很多网友在找真象, 让自己生命绽放出美好的光芒, 送你的图片上面有网址,你也可以上去看看什么是真相哦! 夜真 13:45:32 今天很高兴跟你聊这么多 夜真 13:45:42 我有点事, 要下了 crl 13:46:25 好的,记着一句话,没有绝对的好,也没有绝对的坏,处在别人的立场想问题 夜真 13:46:32 天天开心哦 夜真 13:46:37 886 . crl 13:46:42 88 crl 13:46:52 我想你应该不是机器人吧 crl 13:47:11 自动聊天的那种装置 August 31 猴子理论-道德的起源-
把五只猴子关在一个笼子里,上头有一串香蕉 实验人员装了一个自动装置 一旦侦测到有猴子要去拿香蕉,马上就会有水喷向笼子 而这五只猴子都会一身湿 首先有只猴子想去拿香蕉,当然,结果就是每只猴子都淋湿了 之後每只猴子在几次的尝试後,发现莫不如此 於是猴子们达到一个共识:不要去拿香蕉,以避免被水喷到 後来实验人员把其中的一只猴子释放,换进去一只新猴子A 这只猴子A看到香蕉,马上想要去拿 结果,被其他四只猴子海K了一顿 因为其他四只猴子认为猴子A会害他们被水淋到,所以制止他去拿香蕉 A尝试了几次,虽被打的满头包,依然没有拿到香蕉 当然,这五只猴子就没有被水喷到 後来实验人员再把一只旧猴子释放,换上另外一只新猴子B 这猴子B看到香蕉,也是迫不及待要去拿 当然,一如刚才所发生的情形,其他四只猴子海K了B一顿 特别的是,那只A猴子打的特别用力(这叫老兵欺负新兵,或是媳妇熬成婆 ^O^) B猴子试了几次总是被打的很惨,只好作罢 後来慢慢的一只一只的,所有的旧猴子都换成新猴子了,大家都不敢去动那香蕉 但是他们都不知道为什麽,只知道去动香蕉会被猴扁 这就是道德的起源 -阶级的起源- 实验人员继续他们的实验,不过这一次他们改变了喷水装置 一旦侦测到有猴子要去拿香蕉,马上就会有水喷向拿香蕉的猴子,而不是全体 然后实验人员又把其中的一只猴子释放,换进去一只新猴子C 不同以往的是猴子C特别的孔武有力 当然猴子C看到香蕉,也马上想要去拿 一如以前所发生的情形,其他四只猴子也想海K猴子C一顿 不过他们错误估计了C的实力,所以结果是反被C海K了一顿 于是猴子C拿到了香蕉,当然也被淋了个透湿 C一边打着喷嚏一边吃着香蕉,美味但是也美中不足 A、B、D、E没有香蕉吃却也比较快乐,毕竟没有被淋到嘛 后来C发现只有拿香蕉的那个才会被淋到,他就要最弱小的A替他去拿 A不想被K,只好每天拿香蕉然后被水淋 于是五只猴子有了三个阶级 这下子阶级也随着道德的起源了 -道德的沦丧- 天变热了,笼子里的猴子们想冲凉却找不到地方。终于出现了一位反潮流英雄,猴子HERO。 HERO在无意中碰到了香蕉,理所当然的引来了一顿饱打。但在挨打的过程中,猴子们享受到了冲凉的乐趣。等身上 的水干了之后,猴子A在无意中碰撞了HERO,使HERO又一次接触到了香蕉,于是,猴子们享受了第二次冲凉,HERO遭到了第二次痛殴。 在此之后,只要大家有冲凉的需要,就会有一只猴子X挺身而出,对HERO进行合理冲撞。 大家对HERO的态度也有了明显的不同,在平时大家会对HERO异常温和,以弥补在冲凉时为维护规则而不得不对它进行的暴力举动。 一天,在大家冲凉时,饱受折磨的HERO闻到了香蕉的清香,生物本能使它在别的猴子心有旁鹜时将香蕉吃了。而且此后没有了新的香蕉来填补空缺。猴子们陷入了另一个尴尬境地:没有冲凉的水,也没有香蕉,只有HERO。 于是,另一个规则形成了。猴子在烦躁的时候会痛打HERO出气,HERO不得反抗。 当笼子里的旧猴子被新猴子换掉时,新猴子会在最快的时间内学会殴打HERO。 终于有一天,老天有眼,历尽沧桑的HERO被另一只猴子代替了。猴子们失去了发泄的对象,只能任意选取一个目标进行攻击。从此以后,笼子里的猴子们不吃不喝不冲凉,唯一的举动就是打架。 这就是道德的沦丧。 -道德的重建- 实验人员对猴子们的争斗不休感到不安。为了重建道德秩序,他们决定继续供应香蕉。 一天,正在混战的猴子们发现头顶多了一串香蕉,它们其中的一个A不顾身上的剧痛,把香蕉摘了下来。于是久违的甘露出现了,未曾尝过甜头的猴子们先是茫然失措,继而争先恐后的加入冲凉的行列。香蕉反而被遗忘了。当猴子B、C、D、E发现A在享受淋浴的同时还吃着美味的香蕉,嫉妒心使它们暂时团结起来,共同K了A一顿,将A吃剩的香蕉夺过来,但是,此刻的香蕉成了匹夫怀里的宝玉,得到它的猴子虽然可以享受美味,但付出的代价也是巨大的。 实验人员不断放入香蕉,却发现战斗比以前更激烈了。分析清楚原因后,他们用木头做了一个假香蕉扔进了笼子。此时猴子们已经学聪明了,它们知道触摸香蕉可以享淋浴, 而试图独占香蕉则会遭到痛扁。于是,一个新的现象出现了,当猴子们有冲凉的需要时,会有一只猴子将香蕉拿起来,而当它发现有遭到攻击的可能时,它会马上放下香蕉逃到一边去。这样,猴子们都能冲凉,但是又不至于再象以前那样N败俱伤。 没有猴子发现那个香蕉是假的。 -信仰的起源- 五只猴子A、B、C、D、E三个阶级快乐地生活了很久 他们精确的给出了三个阶级的定义,即吃香阶级、拿香阶级和干看着阶级 可惜猴子A由于长期的水中作业无可避免地引发了它肺部功能的衰竭 一天他在例行的拿香蕉作业中跌倒了就再也没有爬起来 于是实验人员又送进了一只同样孔武有力的猴F 当然他还是对屋顶的香蕉很有兴趣 不幸的是他最终以微弱的劣势被以C为首的群猴再次海K 第二天,又到了拿香蕉的时候 猴子C很无所谓,反正他还要吃香蕉,反正他不会被水淋到 真正恐慌的是B、D、E三猴 F是那么的健壮,他们这些媳妇是熬不成婆了 他们将面临一个艰难的抉择,谁该去步A的后尘? 猴子B、D、E展开了激烈的争论,讨论谁最应该做下一个拿香阶级 猴子F很奇怪也很好奇,什么叫“拿香阶级”呢? 猴子B、D、E解释道:所谓“拿香阶级”就是猴子界勇敢者的阶级 需具备一不怕苦二不怕死的大无畏精神方能得此殊荣 猴子F闻听不禁有些神往,有些跃跃欲试 当然他最终达到了目的,作了唯一的拿香阶级 再后来,B、D、E三猴陆续被换出局,换来的猴子个个健壮如C 他们继续大大出手,不过目标不是香蕉,而是那个唯一的拿香阶级 于是信仰也出现了 -迷信的起源- 后来A终于被好心的实验人员拉出了苦海。 新来了猴子F C觉得有必要维护自己的阶级地位,B、D、E则生怕自己顶了A的缸…… 在各种复杂心情的作用下,B、D、E在C的带领下爆扁了F一顿,然后强令F做拿香蕉阶级。 F开始不乐意,后来慢慢在B等的劝说下等“待多年的媳妇熬成婆”这一宿命。 慢慢的老资格的B、D、E猴子渐渐被淘汰,C发现自己在体力上不再占有 优势,很难再通过武力让这一游戏规则继续下去,觉得十分苦恼。 这时,一只最有希望升级为吃香蕉阶级(暨C的理所当然接班人)也是C谋 臣的H向C进言。于是君臣定计。 H开始依靠自己多懂几种猴语而在其他若干猴面前树立的权威形象向其他猴鼓吹:“每一只新来笼子的猴子都是有罪的,这种罪责来自血统。……只有摘香蕉的猴子才能被(实验人员)送到天堂。” 事实上,因为被水冲很容易得肺炎病倒而被实验人员淘汰掉,猴子们不知道 反而以为被淘汰的猴子真的进了天堂。 渐渐,猴子都相信了这套理论,并且讲给每一只新猴子听。 然后就这么流传下去越传越神奇。以至于后来摘香蕉阶级的猴子都为了能摘香蕉而大打出手。…… 这些都是C没有想到,H没有看到的,那时他们都已经死了。 然而迷信就这么诞生了。 June 30 AVM2Loader用于加载AVM1的影片,但会清除所有的as我代码. 原文:http://snippets.libspark.org/trac/browser/fladdict/as3/src/net/fladdict/display/AVM2Loader.as package { import flash.display.Loader; import flash.events.*; import flash.net.*; import flash.system.LoaderContext; import flash.utils.ByteArray; import flash.utils.Endian; /** * Loads both of AVM1 and AVM2 swf as AVM2. */ public class AVM2Loader extends Loader { private var _urlLoader:URLLoader; private var _context:LoaderContext; /** * loads both of AVM1 and AVM2 movie as AVM2 movie. */ override public function load(request:URLRequest,context:LoaderContext=null):void { _context=context; _urlLoader=new URLLoader ; _urlLoader.dataFormat=URLLoaderDataFormat.BINARY; _urlLoader.addEventListener(Event.COMPLETE,_binaryLoaded,false,0,true); _urlLoader.addEventListener(IOErrorEvent.IO_ERROR,_transferEvent,false,0,true); _urlLoader.addEventListener(ProgressEvent.PROGRESS,_transferEvent,false,0,true); _urlLoader.addEventListener(Event.OPEN,_transferEvent,false,0,true); _urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,_transferEvent,false,0,true); _urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,_transferEvent,false,0,true); _urlLoader.load(request); } private function _binaryLoaded(e:Event):void { loadBytes(ByteArray(_urlLoader.data),_context); _urlLoader=null; } private function _transferEvent(e:Event):void { dispatchEvent(e); } /** * loads both of AVM1 and AVM2 movie as AVM2 movie. */ override public function loadBytes(bytes:ByteArray,context:LoaderContext=null):void { //uncompress if compressed bytes.endian=Endian.LITTLE_ENDIAN; if (bytes[0] == 0x43) { //many thanks for be-interactive.org var compressedBytes:ByteArray=new ByteArray ; compressedBytes.writeBytes(bytes,8); compressedBytes.uncompress(); bytes.length=8; bytes.position=8; bytes.writeBytes(compressedBytes); compressedBytes.length=0; //flag uncompressed bytes[0]=0x46; } hackBytes(bytes); super.loadBytes(bytes,context); } //if bytes are AVM1 movie, hack it! private function hackBytes(bytes:ByteArray):void { if (bytes[4] < 0x09) { bytes[4]=0x09; } //dirty dirty var imax:int=Math.min(bytes.length,100); for (var i:int=23; i < imax; i++) { if (bytes[i - 2] == 0x44 && bytes[i - 1] == 0x11) { bytes[i]=bytes[i] | 0x08; return; } } } } } June 20 使用混合模式(14种)转载:http://4nothing.net/blog BlendMode.ALPHA (”alpha”):通常用于把前景的透明度应用到背景上。 BlendMode.DIFFERENCE (”difference”): 通常用于创建更多跳动的颜色。 BlendMode.ERASE (”erase”):通常用于使用前景alpha擦掉背景中的一部分。 BlendMode.MULTIPLY (”multiply”): 通常用于创建阴影和深度效果。 BlendMode.NORMAL (”normal”): 用于指定混合图像的像素值覆盖基图像的像素值。 BlendMode.OVERLAY (”overlay”): 通常用来创建阴影效果。 BlendMode.SCREEN (”screen”): BlendMode.SUBTRACT (”subtract”):通常用于在两个图像间创建一个变暗相溶的效果。 May 24 as3 中的Arrayps.看看什么是震撼.flash3维渲染引擎(反恐版游戏) CODE:
var oneArray:Array = new Array("a", "b", "c");//初值化 var twoArray:Array = oneArray; // 转递数组. twoArray[0] = "z"; //赋值twoArray[0]. trace(oneArray); // 输出: z,b,c.
CODE:
package { import flash.display.Sprite; public class Array_Array extends Sprite { public function Array_Array() { var myArr:Array = new Array(); trace(myArr.length); // 0 } } }
package { import flash.display.Sprite; public class Array_Array_2 extends Sprite { public function Array_Array_2() { var myArr:Array = new Array(5); trace(myArr.length); // 5 myArr[0] = "one"; myArr.push("six"); trace(myArr); // one,,,,,six trace(myArr.length); // 6 } } }
CODE:
package { import flash.display.Sprite; public class Array_Array_3 extends Sprite { public function Array_Array_3() { var myArr:Array = new Array("one", "two", "three"); trace(myArr.length); // 3 trace(myArr); // one,two,three } } }
CODE:
var numbers:Array = new Array(1, 2, 3); var letters:Array = new Array("a", "b", "c"); var numbersAndLetters:Array = numbers.concat(letters); var lettersAndNumbers:Array = letters.concat(numbers); trace(numbers); // 1,2,3 trace(letters); // a,b,c trace(numbersAndLetters); // 1,2,3,a,b,c trace(lettersAndNumbers); // a,b,c,1,2,3
CODE:
isNumeric函数--检测是否全部为Number import flash.display.Sprite; public class Array_every extends Sprite { public function Array_every() { var arr1:Array = new Array(1, 2, 4); var res1:Boolean = arr1.every(isNumeric); trace("isNumeric:", res1); // true var arr2:Array = new Array(1, 2, "ham"); var res2:Boolean = arr2.every(isNumeric); trace("isNumeric:", res2); // false } private function isNumeric(element:*, index:int, arr:Array):Boolean { return (element is Number); } } } 4.filter 方法[as3.0新增] as3.0语法:filter(callback:Function, thisObject:* = null):Array 根据 callback 方法指定的条件过滤数组,返回由符合条件的元素组成的新数组 参数: callback:Function--检测函数 function callback(item:*, index:int, array:Array):void; thisObject:* = null--判定条件 返回:数组 实例: 创建employees数组,并调用push函数添加元素(二维),使用 创建managers CODE:
package { import flash.display.Sprite; public class Array_filter extends Sprite { public function Array_filter() { var employees:Array = new Array();//创建employees数组 employees.push({name:"Employee 1", manager:false});//调用push函数添加二维元素 employees.push({name:"Employee 2", manager:true}); employees.push({name:"Employee 3", manager:false}); trace("Employees:"); employees.forEach(traceEmployee);//调用执行函数traceEmployee(?forEach是啥?看下面) var managers:Array = employees.filter(isManager);//调用挑选函数isManager trace("Managers:"); managers.forEach(traceEmployee);//调用执行函数traceEmployee } private function isManager(element:*, index:int, arr:Array):Boolean { return (element.manager == true);//返回判断布尔值 } private function traceEmployee(element:*, index:int, arr:Array):void { trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));//判断manager是否为true,如果是输出空格 } } } 5. forEach方法[as3.0新增] as3.0语法: forEach(callback:Function, thisObject:* = null):void 数组的每一个元素执行 callback 方法,不返回任何值 第二个参数 thisObject 是第一个参数 callback 的执行范围,即方法内部的 this ,一般不需指定callback 的参数也都是一样的 参数: callback:Function--执行函数 function callback(item:*, index:int, array:Array):void; thisObject:* = null--执行范围 实例一: 创建employees数组,并调用push函数添加元素[二维] 并执行函数traceEmployee CODE:
package { import flash.display.Sprite; public class Array_forEach extends Sprite { public function Array_forEach() { var employees:Array = new Array();//创建数组 employees.push({name:"Employee 1", manager:false});//调用push添加二维元素 employees.push({name:"Employee 2", manager:true}); employees.push({name:"Employee 3", manager:false}); trace(employees);//输出数组 employees.forEach(traceEmployee);//调用执行函数traceEmployee } private function traceEmployee(element:*, index:int, arr:Array):void { trace(element.name + " (" + element.manager + ")");//输出:name (manager) } } }
CODE:
package { import flash.display.Sprite; public class Array_forEach_2 extends Sprite { public function Array_forEach_2() { var employeeXML:XML = <employees> <employee name="Steven" manager="false" /> <employee name="Bruce" manager="true" /> <employee name="Rob" manager="false" /> </employees>; var employeesList:XMLList = employeeXML.employee;//读取节点 var employeesArray:Array = new Array();//创建employeesArray数组 for each (var tempXML:XML in employeesList) { employeesArray.push(tempXML);//调用push函数添加元素 } employeesArray.sortOn("@name");//?sorton是啥,看下文 employeesArray.forEach(traceEmployee);//调用执行函数traceEmployee } private function traceEmployee(element:*, index:Number, arr:Array):void { trace(element.@name + ((element.@manager == "true") ? " (manager)" : ""));//判断manager是否为true,为真输出name(manager)为否输出name } } }
CODE:
package { import flash.display.Sprite; public class Array_indexOf extends Sprite { public function Array_indexOf() { var arr:Array = new Array(123,45,6789);//创建数组arr arr.push("123-45-6789");//添加数组元素(字符串) arr.push("987-65-4321");//添加数组元素(字符串) var index:int = arr.indexOf("123");//查寻字符串"123" trace(index); // -1 var index2:int = arr.indexOf(123);//查寻123 trace(index2); // 0 var index2:int = arr.indexOf("123-45-6789");//查寻字符串"123-45-6789" trace(index2); // 0 } } }
CODE:
var myArr:Array = new Array("one", "two", "three");//不要告诉我看不懂... var myStr:String = myArr.join(" and "); trace(myArr); // one,two,three trace(myStr); // one and two and three
CODE:
var phoneString:String = "(888) 867-5309"; var specialChars:Array = new Array("(", ")", "-", " "); var myStr:String = phoneString; var ln:uint = specialChars.length;//定义数组specialChars长度 for(var i:uint; i < ln; i++) { myStr = myStr.split(specialChars[i]).join("");//分割字符串phoneString并重建数组,再调用join重组字符口串 } var phoneNumber:Number = new Number(myStr); trace(phoneString); // (888) 867-5309 trace(phoneNumber); // 8888675309
CODE:
package { import flash.display.Sprite; public class Array_lastIndexOf extends Sprite { public function Array_lastIndexOf() { var arr:Array = new Array(123,45,6789,123,984,323,123,32); var index:int = arr.indexOf(123); trace(index); // 0 var index2:int = arr.lastIndexOf(123); trace(index2); // 6 } } } 9.map() 方法 [as3.0新增函数] as3.0语法:map(callback:Function, thisObject:* = null):Array 数组的每一个元素执行 callback 方法,返回新数组 参数: callback:Function--执行函数 function callback(item:*, index:int, array:Array):void; thisObject:* = null--执行范围 返回:数组 实例: CODE:
package { import flash.display.Sprite; public class Array_map extends Sprite { public function Array_map() { var arr:Array = new Array("one", "two", "Three"); trace(arr); // one,two,Three var upperArr:Array = arr.map(toUpper);//创建upperArr数组并调用执行toUpper函数 trace(upperArr); // ONE,TWO,THREE } private function toUpper(element:*, index:int, arr:Array):String { return String(element).toUpperCase();//小写转大字 } } }
CODE:
var letters:Array = new Array(); letters.push("a"); letters.push("b"); letters.push("c"); trace(letters.toString()); // a,b,c
CODE:
var letters:Array = new Array("a"); var count:uint = letters.push("b", "c"); trace(letters); // a,b,c trace(count); // 3
CODE:
var letters:Array = new Array("a", "b", "c"); trace(letters); // a,b,c letters.reverse(); trace(letters); // c,b,a 13.shift 方法 as3.0语法: function shift():Object 删除数组中第一个元素,并返回该元素 返回:对象 实例: CODE:
var letters:Array = new Array("a", "b", "c"); var firstLetter:String = letters.shift(); trace(letters); // b,c trace(firstLetter); // a
CODE:
var letters:Array = new Array("a", "b", "c", "d", "e", "f"); var someLetters:Array = letters.slice(1,3); trace(letters); // a,b,c,d,e,f trace(someLetters); // b,c
CODE:
var letters:Array = new Array("a", "b", "c", "d", "e", "f"); var someLetters:Array = letters.slice(2); trace(letters); // a,b,c,d,e,f trace(someLetters); // c,d,e,f
CODE:
var letters:Array = new Array("a", "b", "c", "d", "e", "f"); var someLetters:Array = letters.slice(-2); trace(letters); // a,b,c,d,e,f trace(someLetters); // e,f 15.sort 方法[as3.0新增函数] as3.0语法:some(callback:Function, thisObject:* = null):Boolean 检测数组中是否有元素满足 callback 方法指定的条件。 参数: callback:Function--执行函数 thisObject:* = null--执行范围 返回:布尔值 实例: CODE:
package { import flash.display.Sprite; public class Array_some extends Sprite { public function Array_some() { var arr:Array = new Array(); arr[0] = "one"; arr[1] = "two"; arr[3] = "four"; var isUndef:Boolean = arr.some(isUndefined);//调用执行函数isUndefined if (isUndef) { trace("array contains undefined values: " + arr); } else { trace("array contains no undefined values."); } } private function isUndefined(element:*, index:int, arr:Array):Boolean { return (element == undefined); } } }
CODE:
var vegetables:Array = new Array("spinach", "green pepper", "cilantro", "onion", "avocado"); trace(vegetables); // spinach,green pepper,cilantro,onion,avocado vegetables.sort(); trace(vegetables); // avocado,cilantro,green pepper,onion,spinach
CODE:
var vegetables:Array = new Array("spinach", "green pepper", "Cilantro", "Onion", "Avocado"); vegetables.sort(); trace(vegetables); // Avocado,Cilantro,Onion,green pepper,spinach vegetables.sort(Array.CASEINSENSITIVE); trace(vegetables); // Avocado,Cilantro,green pepper,Onion,spinach
CODE:
var vegetables:Array = new Array(); vegetables.push(new Vegetable("lettuce", 1.49)); vegetables.push(new Vegetable("spinach", 1.89)); vegetables.push(new Vegetable("asparagus", 3.99)); vegetables.push(new Vegetable("celery", 1.29)); vegetables.push(new Vegetable("squash", 1.44)); trace(vegetables); // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44 vegetables.sort(); trace(vegetables); // asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44 //The following code defines the Vegetable class class Vegetable { private var name:String; private var price:Number; public function Vegetable(name:String, price:Number) { this.name = name; this.price = price; } public function toString():String { return " " + name + ":" + price; } }
CODE:
var vegetables:Array = new Array(); vegetables.push(new Vegetable("lettuce", 1.49)); vegetables.push(new Vegetable("spinach", 1.89)); vegetables.push(new Vegetable("asparagus", 3.99)); vegetables.push(new Vegetable("celery", 1.29)); vegetables.push(new Vegetable("squash", 1.44)); trace(vegetables); // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44 vegetables.sort(sortOnPrice); trace(vegetables); // celery:1.29, squash:1.44, lettuce:1.49, spinach:1.89, asparagus:3.99 function sortOnPrice(a:Vegetable, b:Vegetable):Number { var aPrice:Number = a.getPrice(); var bPrice:Number = b.getPrice(); if(aPrice > bPrice) { return 1; } else if(aPrice < bPrice) { return -1; } else { //aPrice == bPrice return 0; } } // The following code defines the Vegetable class and should be in a separate package. class Vegetable { private var name:String; private var price:Number; public function Vegetable(name:String, price:Number) { this.name = name; this.price = price; } public function getPrice():Number { return price; } public function toString():String { return " " + name + ":" + price; } }
CODE:
var vegetables:Array = new Array(); vegetables.push(new Vegetable("lettuce", 1.49)); vegetables.push(new Vegetable("spinach", 1.89)); vegetables.push(new Vegetable("asparagus", 3.99)); vegetables.push(new Vegetable("celery", 1.29)); vegetables.push(new Vegetable("squash", 1.44)); trace(vegetables); // lettuce:1.49, spinach:1.89, asparagus:3.99, celery:1.29, squash:1.44 vegetables.sortOn("name"); trace(vegetables); // asparagus:3.99, celery:1.29, lettuce:1.49, spinach:1.89, squash:1.44 vegetables.sortOn("price", Array.NUMERIC | Array.DESCENDING); trace(vegetables); // asparagus:3.99, spinach:1.89, lettuce:1.49, squash:1.44, celery:1.29 class Vegetable { public var name:String; public var price:Number; public function Vegetable(name:String, price:Number) { this.name = name; this.price = price; } public function toString():String { return " " + name + ":" + price; } } 实例二: CODE:
var records:Array = new Array(); records.push({name:"john", city:"omaha", zip:68144}); records.push({name:"john", city:"kansas city", zip:72345}); records.push({name:"bob", city:"omaha", zip:94010}); for(var i:uint = 0; i < records.length; i++) { trace(records[i].name + ", " + records[i].city); } // Results: // john, omaha // john, kansas city // bob, omaha trace("records.sortOn('name', 'city');"); records.sortOn(["name", "city"]); for(var i:uint = 0; i < records.length; i++) { trace(records[i].name + ", " + records[i].city); } // Results: // bob, omaha // john, kansas city // john, omaha trace("records.sortOn('city', 'name');"); records.sortOn(["city", "name"]); for(var i:uint = 0; i < records.length; i++) { trace(records[i].name + ", " + records[i].city); } // Results: // john, kansas city // bob, omaha // john, omaha
CODE:
class User { public var name:String; public var age:Number; public function User(name:String, age:uint) { this.name = name; this.age = age; } public function toString():String { return this.name + ":" + this.age; } } var users:Array = new Array(); users.push(new User("Bob", 3)); users.push(new User("barb", 35)); users.push(new User("abcd", 3)); users.push(new User("catchy", 4)); trace(users); // Bob:3,barb:35,abcd:3,catchy:4 users.sortOn("name"); trace(users); // Bob:3,abcd:3,barb:35,catchy:4 users.sortOn("name", Array.CASEINSENSITIVE); trace(users); // abcd:3,barb:35,Bob:3,catchy:4 users.sortOn("name", Array.CASEINSENSITIVE | Array.DESCENDING); trace(users); // catchy:4,Bob:3,barb:35,abcd:3 users.sortOn("age"); trace(users); // abcd:3,Bob:3,barb:35,catchy:4 users.sortOn("age", Array.NUMERIC); trace(users); // Bob:3,abcd:3,catchy:4,barb:35 users.sortOn("age", Array.DESCENDING | Array.NUMERIC); trace(users); // barb:35,catchy:4,Bob:3,abcd:3 var indices:Array = users.sortOn("age", Array.NUMERIC | Array.RETURNINDEXEDARRAY); var index:uint; for(var i:uint = 0; i < indices.length; i++) { index = indices[i]; trace(users[index].name, ": " + users[index].age); } // Results: // Bob : 3 // abcd : 3 // catchy : 4 // barb : 35
CODE:
var vegetables:Array = new Array("spinach", "green pepper", "cilantro", "onion", "avocado"); var spliced:Array = vegetables.splice(2, 2); trace(vegetables); // spinach,green pepper,avocado trace(spliced); // cilantro,onion vegetables.splice(1, 0, spliced); trace(vegetables); // spinach,cilantro,onion,green pepper,avocado
CODE:
var vegetables:Array = new Array(); vegetables.push(1); vegetables.push(2); vegetables.push(3); vegetables.push(4); vegetables.push(5); var vegnums:String = vegetables.toString(); trace(vegnums+",6"); // 1,2,3,4,5,6 20.unshift 方法 as3.0语法:function unshift(... args):uint 将一个或多个元素添加到数组的开头,并返回该数组的新长度. 参数: ... args--一个或多个要插入到数组开头的数字、元素或变量。 返回 返回:数值 实例: CODE:
var names:Array = new Array(); names.push("Bill"); names.push("Jeff"); trace(names); // Bill,Jeff names.unshift("Alfred"); names.unshift("Kyle"); trace(names); // Kyle,Alfred,Bill,Jeff 实例: CODE:
var letters:Array = new Array("a", "b", "c"); trace(letters); // a,b,c var letter:String = letters.pop(); trace(letters); // a,b trace(letter); // c April 28 简易涂鸦
|
|
|||
|
|