FLASH变量和数据类型
2008-04-02 10:57:08来源:互联网 阅读 ()
变量是什么? 大概说来就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针, 但是能够理解就行了, 何必去记这么抽象的定义). 只要能够理解他能够存放信息并能够通过各种途径改变其中的信息就能够了, 我又不是大学里面的老师, 整天就知道叫学生死记硬背定义, 实际的东西一点都没有, "一切为了考试".
更有一个概念: 什么叫初始化变量? 就是在定义时给他一个有效值以说明他的内容和数据类型. 就像下面的例子, 定义了一个字符串(String)变量:
MyString = "我不懂什么是初始化变量";
就这么简单, 但是也有要注意的问题:
变量名必须为有效的标识符(例如不能以数字和不允许使用的字符开头).
变量名不能和 Actions cript 关键字和常量相似或相同.
变量名在他的作用域(Scope)中必须是唯一的(在下面我们会提到什么是作用域).
变量作用域
也就是变量在什么范围内是能够访问的. 就似乎在 C&C: Renegade 中的任务相同, 没有 Security Level 3 的 ID Card 就进不了安全级别为 3 的区域的.
作用域一般说来有三种: 时间线(Timeline), 局部(Local), 全局(Global).
--------------------------------------------------------------------------------
对于时间线范围的变量, 就像上面的例子相同用 = 赋值并声明, 当然您也能够用 set 动作(Flash 4, 不推荐使用的方法, 除非您觉得代码不够长):
set( MyString, "我不懂什么是初始化变量" );
时间线范围变量声明后, 在声明他的整个层级(Level)的时间线内他是可访问的.
--------------------------------------------------------------------------------
什么是局部变量? 我也常常问自己. 局部变量就是在声明他的语句块内(例如一个函数体)是可访问的变量, 通常是为避免冲突和节省内存占用而使用.
声明他能够使用 var 关键字:
function LocalVar(){
var MyLocalString = "这是个局部字符串变量";
trace( "Inside: " MyLocalString );
}
LocalVar();
trace( "Outside: " MyLocalString );
上面的 MyLocalString 字符串变量在函数尾就会被自动清除出内存. 所以在外面的 trace 语句返回结果为空("Outside:"), 而函数体内的 trace 返回:"Inside: 这是个局部字符串变量".
假如您删除了 var 关键字, 那么 MyLocalString 就成时间线范围的变量了. 运行后显示 Inside 和 Outside 都为 "这是个局部字符串变量". 在后面的函数一章我们还会提到局部变量的内容.
也许您注意到了函数中有一个 trace 动作. 他能够在测试模式(Testing Movie, CTRL ENTER 组合键)下把指定变量的值发送到输出窗口(Output Window), 以便在运行时检查处理变量的代码是否正常. 这是个很方便的检查方法, 在测试代码时经常使用.
在代码中假如碰到有不清楚的函数和关键字, 能够通过 Action 面板的参考按钮(Reference)打开参考面板显示光标所在位置关键字或内建函数连同对象的周详信息, 也能够通过组合键 SHIFT F1 打开他. 下面是参考面板:
全局变量, 顾名思义就是在整个 Movie 中都能够访问的变量. 他的声明比较特别:
_global.MyGlobalString = "这是个全局字符串变量";
声明使用了一个 _global 标识符和点语法(Dot Syntax, 将在后面的章节讨论). _global 标识符是在 Flash 6 中新增加的, 用于创建全局变量, 函数, 对象和类(Class, 不清楚类是什么的话能够看看 C 的书).
总的来说 _global 是个和最底层 _level0 并列的对象. 任何的全局变量, 函数, 对象其实就相当于是他的属性, 方法, 子对象. 关于他的具体内容能够查阅帮助文档, 一般我们只要懂得用就行了.
全局变量会被同名的时间线变量和局部变量屏蔽(Obscured), 这时我们就要通过别的方式来访问他了. 看看下面的例子:
//定义全局变量
_global.x = "Global";
//一个简单的函数
function show() {
trace("没有局部变量时函数内: " x);
var x = "Local";
trace("有局部变量时函数内: " x);
trace("有局部变量时调用时间线变量: " this.x);
}
//测试
trace("------没有时间线范围变量时------");
show();
trace("直接调用: " x);
//配置时间线变量
x = "Timeline";
//测试
trace("-------有时间线范围变量时-------");
show();
trace("直接调用: " x);
trace("有时间线范围变量时调用全局变量: " _global.x);
由上例的结果能够看出, 在当前时间线范围内有和全局变量同名的变量时, 直接通过变量名只能访问时间线范围内的同名变量, 这时应该用 _global.变量名 来调用全局变量. 同样局部变量也会屏蔽时间线变量(这时能够用 this.变量名 来调用时间线变量)和全局变量(这时能够用 _global.变量名 来调用全局变量).
在代码中使用变量
使用变量很简单, 有点编程基础的读者都能够办到. 下面用一个例子来说明在 Actions cript 中变量的使用:
function vars(x){
if(x<5){ //假如 x 小于 1
x = x 1; //x 加 1
} else {
x = 10; //否则赋值 10
}
trace("x=" x);
return x;
}
vars(2);
vars(6);
trace("x=" x); //测试 x 是否为局部变量
函数声明中的参数无需加 var 声明也自动作为局部变量(例如上面例子中的 x). 通过上面例子的最后一句就能够看出来(返回值为空).
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash