·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

AS3实用函数、AS3常用算法大合集(8)

时间:2011-08-26 14:42blueidea.com
【查找匹配的字符串】 使用String.indexOf(val:String, startIndex:Number = 0):int 返回指定子字符串的第一个匹配项的索引,没有匹配就返回-1 查找所有匹配的字符串: var index:int = -1; while((index = myString.

【查找匹配的字符串】
使用String.indexOf(val:String, startIndex:Number = 0):int 返回指定子字符串的第一个匹配项的索引,没有匹配就返回-1 查找所有匹配的字符串: var index:int = -1; while((index = myString.indexOf(“val”, index + 1)) != -1) { trace(“结果:” + index); } 使用String.lastIndexOf(val:String, startIndex:Number = 0x7FFFFFFF):int 返回指定子字符串的最后一个匹配项的位置,没有匹配就返回-1 var index:int = myString.length; while((index = myString.lastIndexOf(“val”, index – 1)) != -1) { trace(“结果:” + index); } 注意: indexOf()和lastIndexOf()方法都是区分大小写的.想把大小写都查找出来的话,可以结合String.toLowerCase()和String.toUpperCase()方法先把字符串一起转为小写或大写再进行查找.

【提取子字符串】
String.substr(startIndex:Number = 0, len:Number = 0x7fffffff):String String.substring(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String String.slice(startIndex:Number = 0, endIndex:Number = 0x7fffffff):String substr()第一个参数可以是负值,表示索引值是从字符串尾端算过来,-1是最后一个字符; substring()和slice()差别在于substring()只接受正索引值,而把负值作为0处理.另外,如果endIndex小于startIndex,substring()方法在执行前,会自动将其调换过来,总是使用两个参数中较小的值作为起始索引. slice()方法可接受startIndex和endIndex为负值,而把负值表示为从字符串的尾端算回来,如果endIndex小于startIndex,slice()方法会返回空字符串.

【以指定模式拆分字符串】
String.split(delimiter:*, limit:Number = 0x7fffffff):Array

【替换指定的字符串】
使用String.replace(pattern:*, repl:Object):String 可以这样来替换所有指定的字符串: myString.split(“a”).join(“b”);

【按单词或单个字母逆转字符串】
1. 把字符串切割使用String.split()方法成一个数组:对单词而言,以空格作为分界符,对字母而言,以空字符(“”)作为分界符; 2. 使用Array.reverse()方法对数组进行逆转; 3. 使用Array.join()方法重新组合为字符串:对单词而言,以空格(” “)作为联结符,对字母而言,以空字符(“”)作为联结符;

【使用SharedObject及捕获异常】
var so:SharedObject = SharedObject.getLocal(“so”); so.data.userName = “Youthoy”; try { var flushResult:String = so.flush(500 * 1024); //请求500KB容量 //如果flush()没成功执行,就替netStatus加个事件处理函数以确认用户是同意还是拒绝,否则只检验结果. if(flushResult == SharedObjectFlushStatus.PENDING) { //替netStatus加个事件处理函数,使得我们可以检验用户是否同意以足够磁盘容量储存共享对象.当netStatus事件发生时,执行onStatus函数. so.addEventListener(NetStatusEvent.NET_STATUS, onStatus); }else if(flushResult == SharedObjectFlushStatus.FLUSHED) { //成功储存.把数据成功储存后你想执行的程序放在这里. } }catch(e:Error) { //这里表示用户把本地储存设置为”拒绝”.如果储存数据很重要,你会想在此警告用户. //此外,如果你想让用户可修改其设定值,可以用下面语句打开Player的”设置”对话框的本地储存页面. Security.showSettings(SecurityPanel.LOCAL_STORAGE); } //定义onStatus函数以处理共享对象的状态事件.flush()返回”pending”时,引发提示,而用户做了选择后所引发的事件. function onStatus(event:NetStatusEvent):void { if(event.info.code == “SharedObject.Flush.Success”){ //如果event.info.code内容是”SharedObject.Flush.Success”,表示用户同意.把用户同意后你想执行的程序放在这里. }else if(event.info.code == “SharedObject.Flush.Failed”){ //如果event.info.code内容是”SharedObject.Flush.Failed”,表示用户同意.把用户拒绝后你想执行的程序放在这里. } //现在,移除事件监听器,因为我们只需监听一次. so.removeEventListener(NetStatusEvent.NET_STATUS, onStatus); }

【向LSO储存对象时需要注意】
LSO 使用二进制的AMF(Action Message Format)对一个对象进行编码.当你在LSO储存类对象时,该对象会编码成包含内容属性的普通对象.于是,当你试着从共享对象里读取该对象时,无法被读成某类的对象,因为没有类型数据.要克服这个限制,使用flash.net.registerClassAlias()方法. 任何影片中,只要从共享对象读取出自定义对象数据,自定义类就必须注册别名,而且调用registerClassAlias()方法时必须在SharedObject.getLocal()方法被调用之前.

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器