1.Array.sort()和Arrat.sortOn()
现在这两个方法允许你增加参数来制定额外的排序规则,比如升序排列,降序排列,是否考虑大小写等等。
而Flash MX中只能够按照升序排列,并且是按照先大写后小写的顺序的。
例:

my_array=new Array();
my_array.push({Name:"jinni",Age:20});
my_array.push({Name:"Sucy",Age:22});
my_array.push({Name:"alien",Age:20});
my_array.push({Name:"jinni_Alien",Age:9});

for(i=0;i<4;i++)
for (temp in my_array[i])
trace(my_array[i][temp]);
trace("\n");
//以下四种任选其一进行测试

//普通,只提供一个字段,按升序,先大写后小写排序
my_array.sortOn("Age");

for(i=0;i<4;i++)
for (temp in my_array[i])
trace(my_array[i][temp]);
trace("\n");
//提供字段列表,先按前一个字段排序,如果第一个字段值相同的项存在
//按照第二个字段进行子排序,以此类推,规则同前
my_array.sortOn(["Age","Name"]);

for(i=0;i<4;i++)
for (temp in my_array[i])
trace(my_array[i][temp]);
trace("\n");
//提供字段和排序规则,排序规则的内容如下:
//1 或者 Array.CASEINSENSITIVE 忽略大小写
//2 或者 Array.DESCENDING 降序排列
//4 或者 Array.UNIQUE 如果数组中含有排序字段值相同的项,
// 则该方法返回0,且不改变原数组
//8 或者 Array.RETURNINDEXEDARRAY 不改变原数组,而返回更改后的数组
//16 或者 Array.NUMERIC 按照数字大小,换句话说,2不会排在1X的后面
//可以同时使用多种规则,可以用|连接多个规则,例如sortOn("name",1|2)
//也可以写他们的和,比如想同时使用规则2,16,可以写sortOn("age",18)
my_array.sortOn("Name",3);

for(i=0;i<4;i++)
for (temp in my_array[i])
trace(my_array[i][temp]);
trace("\n");
//提供字段列表和排序规则,就是第二类和第三类的综合
myArray.sortOn(["Age","Name"],16);

for(i=0;i<4;i++)
for (temp in my_array[i])
trace(my_array[i][temp]);
trace("\n");


2.onMouseWheel
对Mouse()对象增加了onMouseWheel事件,用来监测鼠标滑轮事件
需要放到侦听器中使用。
这个事件的处理函数可以有两个可选参数:
a) delta:
表征鼠标滑轮滚动的方向及速度,正数为向上滚动,负数为向下
取值范围-3,-2,-1,1,2,3,delta的绝对值越大,说明滚动的幅度越大。
b) scrollTarget:
如果使用scrollTarget,则设delta为null。
这个参数我还没有搞清楚,从帮助来看似乎是当鼠标滑轮滚动时,
在鼠标所在位置处于最上方的电影剪辑实例。
例:

myListener = new Object();
myListener.onMouseWheel = function(delta)
{
trace("Mouse Wheel Test!\nScroll:"+delta);
}
Mouse.addListener(myListener);

注意,在测试前先用鼠标点击一下动画,确保动画可以接收键盘和鼠标的事件

3.MoiveClip.getSWFVersion()
返回发布MoiveClip的SWF动画的浏览器的版本号,一个整数。
如果MovieClip是一个JPG文件,或发生错误,无法获得版本号,则返回-1。
例:

trace(_root.getSWFVersion());

返回值7。

4.MovieClip.getNextHighestDepth()
这个方法可以让你获得MovieClip内部的一个可用depth值,
这个值比所有已被其他元件占据的depth的值高。
这样可以确保你在这个mc内部进行绑定,复制,创建mc时
新出现的mc一定在已存在的mc上方。
这个方法只返回0或正值。
下面的例子可以很好的帮你理解它:
例:
建立一个新的mc,命名为my_mc,
在my_mc内部,手工的添加两个新的mc:my2_mc,my3_mc,
添加如下代码:

trace(my_mc.getNextHighestDepth());

输出结果为0,表明0比现在任何一个my_mc中任何一个子mc的深度高。
(因为手工创建的mc的默认深度均为负值)
将代码改为:

my_mc.my2_mc.swapDepths(5);
my_mc.my3_mc.swapDepths(10);
trace(my_mc.getNextHighestDepth());

输出结果为11,怎么样?明白了吧?
一般来说,通过该方法返回的值为比当前所有子mc的深度最高值+1
当然,如果所有子mc的深度都小于0,则该方法返回0。

5.MovieClip.getInstanceAtDepth(depth)
这个方法也是于depth有关的,它用来确定指定深度是否已被mc占据
例:
新建一个mc,命名my_mc,
添加如下代码:

trace(_root.getInstanceAtDepth(10));

输出:undefined,说明没有mc占据depth 10,
原因如上,所有手工建立的mc的depth都是负值,
改代码为:

my_mc.swapDepths(10);
trace(_root.getInstanceAtDepth(10));

输出结果:
_level0.my_mc

6.throw & try....catch....finally....
这几样东东全是针对异常处理的,学过java的朋友一定不陌生
不过鉴于还有许多人可能没有接触过java,我还是简单介绍一下

a) 什么叫异常(Exception)?
是指特殊的运行错误现象,通常是人为因素造成的。
例如输入输出错误,除数为0,未找到相应的文件等等,都是属于异常。
b) 异常抛出(throw)
如果在程序过程中发生了一个可识别的错误,就产生一个对应的异常类的实例。
这个过程叫做异常的抛出。
例:

function checkDivide(x:Number,y:Number) {
if (y==0) {
throw new Error("Divide Error"); //当发生分母为0的错误时,抛出一个Error类对象
//Error类是Flash的内建类,用来声明一个错误
//你可以在bulit-in class-Core中找到它
}
}

c) 异常的捕捉和处理
当一个异常被抛出的时候,不应该“抛后不理”,而应该设定专门的语句来捕捉它,
当捕捉到异常的时候,程序可以进行对应的处理,例如跳转,或是终止程序运行等等。
当执行一个可能会产生异常的方法时,为了捕捉它,应将他放到try{}语句块中,
可以理解为“尝试运行....”
捕捉异常用catch(e){},其中e为异常类Error的实例的名称。
例:

try {
checkDivide(10,0);
} catch (e) {
error_txt.text = e.toString(); //toString()是Error类的方法,
//将用户在创建实例时给出的错误信息(本例是"Divide Error")输出
}

另外,可以自定义异常类,但要求所有用户自定义异常类必须是Error类的子类
例:

class DivideError extends Error { //通过extends继承Error类
var message =" "; //message是Error类的类属性,表示错误信息
DivideError() //构造函数
{
this.message="Divide Error";
}
}

抛出自定义异常:

function checkDivide(x:Number,y:Number) {
if (y==0) {
throw new DivideError(); //抛出自定义异常
}
}

d)finally
finally与catch一样,要与try语句联合使用,关系如下:
一个try语句后面必须跟有catch语句,或finally语句,或者两者都有,
程序会先运行catch语句,然后在运行finally语句,前提是它们存在。
finally语句与catch语句不同的是,它不论try语句中是否抛出了异常,
它都会执行,因为这种特性,所以finally经常会做一些“清理”工作。
例:(这是Flash帮助中的例子)

var account = new Account()
try {
var returnVal = account.getAccountInfo();
if(returnVal != 0) {
throw new Error("Error getting account information.");
}
}
finally {
// Delete the 'account' object no matter what.
// 删除account对象(无论是否有异常)
if(account != null) {
delete account;
}
}


7.CSS Support:
对文本使用css的步骤:
a) 创建定义css的文本。
b) 创建TextField.StyleSheet()对象。
c) 通过TextField.StyleSheet()对象的parseCSS()应用css文本。
d) 将文本的styleSheet属性设为刚才创建的styleSheet对象的实例名。
e)
posted on 2004-11-11 21:31  flanker27  阅读(335)  评论(0)    收藏  举报