您的位置: 首页 > 技术文档 > 多媒体制作 > ActionScript权威指南——部分
Flash Com Actionscript 介绍 回到列表 Flash MX UI 组件的初级应用
 ActionScript权威指南——部分

作者:alvinlee 时间: 2003-07-04 文档类型:翻译 来自:蓝色理想

第 1 页 变量(1)- 概述
第 2 页 变量(2)- 创建变量
第 3 页 变量(3)- 变量赋值
第 4 页 变量(4)- 变量值的改变和取回
第 5 页 变量(5)- 变量值的类型
第 6 页 变量(6)- 变量的作用域
第 7 页 变量(7)- 在不同的时间轴上访问变量
第 8 页 变量(8)- 电影剪辑变量的生存期
第 9 页 变量(9)- 局部变量
第 10 页 有关变量的一些实例
第 11 页 数据和数据类型(1) - 数据对信息
第 12 页 数据和数据类型(2) - 用数据类型来保留意义
第 13 页 数据和数据类型(3) - 创建并分类数据
第 14 页 数据和数据类型(4) - 数据类型转换

5. 变量值的类型

我们在ActionScript编程过程中所使用的数据有多种类型。迄今为止,我们已经看到过数字型和文本型,而诸如布尔、数组、函数,和对象等类型我们也将很快接触到。在我们触及每种数据类型的细节之前,先讨论一些与变量的使用密切相关的数据类型问题。
1.自动定义类型
在ActionScript中,任何变量都可以包含任何类型的数据。这看起来不值得注意,但是,某个变量中可以包含任何类型的数据的能力实际上是很不寻常的。象C++和Java这样严谨的编程语言使用既定义类型的变量;也就是说每个变量只能接受一种既定类型的数据,而此种类型必须在变量声明时明确指定。ActionScript变量是自动定义类型的变量 —— 当我们为某个变量赋值时,解释器为我们设置该变量的数据类型。

ActionScript变量不仅能包含任何数据类型,而且它们可以动态地改变数据类型。如果我们为某个变量赋一个新值,而该值与该变量原有值的类型不同,则该变量自动地被重新定义类型。综上所述,下面的代码在ActionScript中是合法的:
x = 1; // x is a number
x = "Micheal"; // x is now a string
x = [4, 6, "hello"]; // x is now an array
x = 2; // x is a number again

在C++和Java这样的编程语言中,自动地重新定义类型是不被支持的,类型不匹配的数据将被转换为变量现有的数据类型(或者会导致错误的发生 —— 如果该转换无法完成),而转换后的数据我们认为是不确定的(无法控制的)。在接下来的部分中我们将考虑自动定义类型和动态转换类型的一些重要概念。

2.自动的值转换
在某些环境中,ActionScript期待某种特定类型的数据。如果我们使用某个变量而该变量的数据值与期待的类型并不匹配,那么解释器会尝试转换该数据。例如,我们在需要数字的地方使用文本变量,为了适应当前的作业,解释器将试图转换该变量的文本值为某个数字值。在下面的例子中,z被设置为2。为什么?因为减号运算符(或称操作符,这两种说法并无明显区别,我将根据上下文关系来决定使用恰当的称呼)期待的是一个数字,所以变量y的值从字符串“4”转变为数字4,然后被6(x的值)减,产生结果2。
x = 6; // x is a number, 6
y = "4"; // y is a string, "4"
z = x - y; // this sets z to the number 2

相反地,如果在某个期待字符串的地方我们使用数字变量,解释器则尝试将该数字转换为一个串。在下例中,z被设置为串“64”,而非数字10。这又是为什么呢?因为表达式x + y中的第二个操作数是个串,因此,加号运算符完成的是串连接而不是算术运算中的加法。x的值(数字6)被转变为串“6”,然后与串“4”(y的值)相连接,产生结果“64”。
x = 6; // x is a number, 6
y = "4"; // y is a string, "4"
z = x + y; // this sets z to the string "64"

自动的类型转换发生在对作为表达式的组成部分的某个变量求值的时侯,转换的对象是该变量中所含数据的一个副本 —— 并不影响原始的变量类型。某个变量的类型只有在该变量被赋予某个与其现有值的类型不匹配的数据值时才发生根本转变。不好,不好,这太繁琐太复杂了,我写起来困难,你看着更是一头雾水,我们把这几句话打散,力求简洁明了。从上述两个例子开始:x + y和x - y是两个表达式,而变量x和y分别是表达式的组成部分,在语句z = x + y;和z = x - y;中,为了得到变量z的值,我们必须先对x和y求值,但是,在这两个语句中,变量x和变量y的类型分别是数字型和字符串型,也就是说两个操作数的数据类型不一致(不匹配),因此,就发生了自动的类型转换(解释器根据上下文环境决定变量所包含数据的类型),重要的是,你必须记住:此时被转换了类型的数据并不是变量所包含的原始数据,而是该原始数据的一个副本;换句话说,变量的类型并未改变,改变的只是变量中所包含的数据的一个副本的类型。既然如此,我们应该更进一步,了解变量的类型何时发生转变;举例说明,在赋值语句:x = 6;中,变量x此时的类型是数字型(一目了然),如果我们随后再次为变量x赋值:x = "abc";,现在,x的类型不再是数字型,而是字符串型(我们有时也称其为文本串型)。总结一下,变量x的原类型为数字型,再次赋值后变为字符串型,这是因为变量x最后被赋予的值("abc")的类型与此前变量所包含的值(6)的类型不一致,因此,出现了动态转换变量类型的情况,变量的类型发生了根本地转变。再回到上面两个例子中,因为并未对变量x和y重新赋值(赋不同类型的值),所以y最终仍保持为字符串型,而x也保持为数字型。

我想你一定注意到在上述两个例子中操作符的不同表现,z = x + y;和z = x - y;中的两个操作符(加号“+”和减号“-”)对这两个赋值语句有着意义深远的影响。在z = x - y;中,y的串值“4”转换成为数字值4;而在z = x + y;中,发生了相反的情况,x的数字值6变成串值“6”。这是因为对于操作符“+”和操作符“-”来说,存在着迥然而异的数据类型转换规则。我们将在以后的章节中详细讨论数据类型转换规则以及操作符。

3.手工确定类型
自动的数据类型定义和转换会带来便利,但是,正如上述例子中所描述的那样,可能会产生意外的结果。对不同类型的数据或变量进行操作的命令在开始执行之前,你或许想要首先确定某个变量的数据类型;此时可以使用typeof操作符:
productName = "Macromedia Flash"; // string value
trace (typeof productName); // displays: "string" on the Output window when you run the script

一旦我们知道了某个变量的类型,我们可以有选择地进行下一步处理。例如,在运行某段代码之前我们先检查该代码段中的某个变量是否是数字型:
if (typeof age == "number") {
// okay to carry on
} else {
trace ("age isn't a number"); // display an error message
}

关于typeof操作符的所有细节我们将在以后专门讨论。

出处:蓝色理想
责任编辑:无意

上一页 变量(4)- 变量值的改变和取回 下一页 变量(6)- 变量的作用域

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash Paper 2
FLASH缓冲滚动升级版本
ActionScript 最新加密方法
AS2.0精彩特效之位图的飘动
ActionScript 2.0字典CHM版
作者文章
ActionScript权威指南——部分
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:5/141个记录/页 转到 页 共14个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2