Graphics 版 (精华区)

发信人: Doitforyou (我天天都来), 信区: Graphics
标  题: Flash5ActionScript教程 十三
发信站: 哈工大紫丁香 (2001年04月29日08:58:34 星期天), 站内信件


    对象数据类型包含大量而又复杂的信息。因此,该类型的变量不能存储实际值
,而只能存储对值的引用。这种引用就象一个指向变量内容的别名。当这个变量需要知
道它的值时,该引用就请求变量的内容,返回答案,但并不把值传递给变量。这种通过
引用获取变量实际内容的方式称为传址。
下面是一个传址的例子:
var myArray = ["tom", "dick"];
var newArray = myArray;
myArray[1] = "jack";
trace(newArray);
  上面的代码创建一个数组对象,称为 myArray,它有两个元素。var newArray = m
yArray语句建立了变量newArray和对myArray的引用。当语句myArray[1] = "jack"改变
了myArray数组的第二个元素的值时,引用该元素的所有变量的值都会跟着改变。trace
动作将把["tom", "jack"]而不是["tom", "dick"]传送到输出窗口。
  在下面的例子中,myArray包含一个数组对象。因此,它是以传址方式被传递给函数
zeroArray的。 zeroArray函数改变了myArray中数组的内容。
function zeroArray (array){
var i;
for (i=0; i < array.length; i++) {
array[i] = 0;
}
}
var myArray = new Array();
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
var out = zeroArray(myArray)
  函数zeroArray可以接受任何数组对象作为参数,并把所有数组元素的值设为0。它
可以修改该数组,因为该数组的传递是以传址方式进行的。
  对除了电影剪辑以外的所有对象的引用称为硬引用(Hard References),因为如果
一个对象被引用就不能被删除。对电影剪辑的引用是一种特殊的引用,称为软引用(Sof
t References)。软引用并不强制被引用对象存在。如果某个电影剪辑被一种动作(如r
emoveMovieClip)删除,对它的任何引用将失效。
使用操作符处理表达式中的值
  表达式是指Flash可以计算并能返回一个值的任何语句。你可以通过把操作符和值结
合在一起或通过函数调用来建立表达式。当你在正常模式的动作面板中书写一个表达式
时,请确保参数面板中的表达式(Expression)复选框被选中。否则,在该域输入的数
据将按字符串常数而不是表达式处理。
  选中创建表达式的输入域旁边的Expression复选框
  操作符是指定怎样组合、比较或改变表达式的值的字符。操作符操作的元素称为操
作数。例如,在下面的语句中,+操作符把数值常量和变量foo的值加起来,foo 和 3 是
操作数。
foo + 3
  本讲说明常用操作符的一般规则。要了解这里提到的每个操作符的详细信息,以及
没有列入这些类型的操作符的信息,请参阅Flash 5的ActionScript词典。
一、操作符优先级
  当在同一语句中使用了两个或多个操作符时,一些操作符比其它一些操作符优先。
ActionScript按照准确的等级来决定哪一个操作符优先执行。例如,乘法总是在加法前
先执行,但括号内的项却比乘法优先。因此,在没有括号时,ActionScript首先执行乘
法,如下例所示:
total = 2 + 4 * 3;
结果是14。
  但是,当有括号括住加法时,ActionScript先执行加法:
total = (2 + 4) * 3;
结果是18。
二、操作符结合规则
  当两个或多个操作符优先级相同时,它们的结合规则决定它们被执行的顺序。结合
规则可以是从左到右或从右到左。 例如,乘法操作符的结合规则是从左到右。因此,下
面的两个语句是等价的:
total = 2 * 3 * 4;
total = (2 * 3) * 4;
三、数值操作符
  数值操作符执行加、减、乘、除和其它算术运算。括号和负号(-)也属于算术操作
符。下表列出了ActionScript的数值操作符:
操作符 执行的运算
+ 加法
* 乘法
/ 除法
% 取模
- 减法
++ 递增
-- 递减
四、比较操作符
  比较操作符比较表达式的值,返回逻辑值真或假(true 或 false) 。这些操作符
常常用在循环和条件语句之中。在下面的例子中,如果变量 score 的值是100,winner
.swf动画被载入;否则,另一个动画被载入:
if (score == 100){
loadMovie("winner.swf", 5);
} else {
loadMovie("loser.swf", 5);
}
  下表列出了ActionScript的比较操作符:
操作符 执行的操作
< 小于
> 大于
<= 小于等于
>= 大于等于
五、字符串操作符
  +操作符对字符串操作时,其作用是连接两个字符串操作数。例如,下面的语句把两
个字符串相加:
"Congratulations," to "Donna!":
"Congratulations, " + "Donna!"
  结果是"Congratulations, Donna!"。如果+操作符的操作数仅有一个是字符串,Fl
ash把另一个操作数转换为字符串。
  比较操作符>、>=、<和<=用于操作字符串时也有特殊的作用。这些操作符比较两个
字符串,确定哪一个字符串按字母顺序排列时排在前面。如果两个操作数都是字符串时
,这些比较操作符比较这两个字符串。如果仅有一个操作数是字符串,ActionScript把
两个操作数转换为数值,然后执行数值比较。
  注:Flash 5的ActionScript的数据类型允许同一操作符用于不同的数据类型。因此
,再也不需要使用Flash 4的字符串操作符(例如eq、 ge和lt等), 除非需要导出Fla
sh 4动画。
六、逻辑操作符
  逻辑操作符比较两个逻辑值(true 和 false),返回结果也是逻辑值。例如,如果
两个操作数的计算结果是 true,则逻辑与运算符(&&)返回true。 如果一个或两个操
作数的运算结果是true,逻辑或操作符(||)返回false。 逻辑操作符常常与比较操作
符一起使用,以确定一个 if 动作的条件。 例如,在下面的脚本中,如果两个表达式为
true,if 动作将被执行。
if ((i > 10) && (_framesloaded > 50)){
play();
}
下表列出了ActionScript的逻辑操作符:
操作符 执行的操作
&& 逻辑与
|| 逻辑或
! 逻辑非

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.218]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.487毫秒