加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex及AS3的百多条小知识

发布时间:2020-12-15 01:27:46 所属栏目:百科 来源:网络整理
导读:【提取子字符串】 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

【提取子字符串】 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为负值,而把负值表示为从字符串的尾端算回来,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()方法被调用之前. 【要相同域名内的两个影片可以存取相同LSO】 首先LSO是储存在以下目录下: C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects 例如,如果来自于http://www.riahome.cn/youthoy的影片movie.swf写入名为example的LSO,则数据会储存在以下位置: C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects/[random directory name]/riahome.cn/youthoy/movie.swf/example.sol 如果在这个movie.swf里的代码是这样的: var example:SharedObject = SharedObject.getLocal("example","/"); 也就是使用了选用的本地路径参数,则LSO会储存在以下路径,注意到与以上路径少了"youthoy/movie.swf": C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects/[random directory name]/riahome.cn/example.sol 以此方法建立的LSO,可以由相同域的其它Flash影片用以下程序来读取: var example:SharedObject = SharedObject.getLocal("example","/"); 再看一个例子: 有两个Flash影片movieOne.swf和movieTwo.swf都位于同一域(http://www.riahome.cn)内,但是,movieOne.swf位于http://www.riahome.cn/youthoy/firstGroup,而movieTwo.swf位于 http://www.riahome.cn/youthoy/secondGroup.在这情况里,movieOne.swf可以用下列任何本地路径建 立和读取LSO: / /youthoy /youthoy/firstGroup 而movieTwo.swf可以用下列任何本地路径建立和读取LSO: / /youthoy /youthoy/secondGroup 因此,如果你想要两个影片都可以读取相同LSO,当你调用getLocal()方法时,必须指定影片共享的两个本地路径之一(/或/youthoy). 【URLLoader.dataFormat的三种类型】 URLLoader.dataFormat的可选值是: flash.net.URLLoaderDataFormat.BINARY flash.net.URLLoaderDataFormat.TEXT flash.net.URLLoaderDataFormat.VARIABLES 当dataFormat是BINARY时,URLLoader.data属性就是flash.utils.ByteArray类型; 当dataFormat是TEXT时,URLLoader.data属性就是String类型; 当dataFormat是VARIABLES时,uRLLoader.data属性就是Object类型. 【在XML内使用动态数据】 把变量放在大括号({和})内: var userName:String = "Youthoy"; var myXML:XML = <person><userName>{userName}</userName></person>; 【新增一个节点元素】 //例子一: var example:XML = <person/>; example.father = <father/>; //内容属性和元素名称不一定要相同,也可以: example.abc = <father/>,但会以元素名称为准,即会建立一个<father/>元素 trace(example); /* 输出: <person> <father/> </person> */ //例子二: var example:XML = <person/>; example.father = ""; //建立一个<father/>元素 trace(example.toString()); /* 输出: <person> <father/> </person> */ //例子三: var example:XML = <person/>; var id:int = 10; example["user" + id] = ""; trace(example); /* 输出: <person> <user10/> </person> 注意: 有些情况必须使用第三种情况.例如,元素节点名称内含连字符("-")是完全合法的,但在ActionScript里会得到编译器错误: example.some-element = ""; //产生编译器错误 正确的写法是: example["some-element"] = ""; */

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读