Flex及AS3小知识1

【提取子字符串】
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()方法重新组合为字符串:对单词而言,以空格(" ")作为联结符,对字母而言,以空字符("")作为联结符;

 


【向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"] = "";
*/

posted @ 2013-12-15 11:48  无名盗闪  阅读(187)  评论(0)    收藏  举报