flash action 详解(3)

2016-01-29 13:04 0 1 收藏

flash action 详解(3),flash action 详解(3)

【 tulaoshi.com - Flash 】

第 2 章: 变量及数据类型---变量---定义变量
变量是什么? 大概说来就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针, 不过能够理解就行了, 何必去记这么抽象的定义). 只要能够理解它可以存放信息并可以通过各种途径改变其中的信息就可以了, 我又不是大学里面的老师, 整天就知道叫学生死记硬背定义, 实际的东西一点都没有, "一切为了考试".
还有一个概念: 什么叫初始化变量? 就是在定义时给它一个有效值以说明它的内容和数据类型. 就像下面的例子, 定义了一个字符串(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

来源:http://www.tulaoshi.com/n/20160129/1488734.html

延伸阅读
标签: flash教程
众所周知,中要实现3D效果是比较麻烦的,下面我们就用ActionScript来实现一个比较简单的3D效果。先看看最终效果,一个看起来像是3D效果的花在场景中旋转,在旋转的过程中会改变颜色,还会响应鼠标作相应的动作。静态效果如图1所示。 一、实现原理 要在只能显示二维图形的Flash中显示三维图形,...
标签: flash教程
二、嵌入视频剪辑 在Flash MX中,可以用嵌入视频文件的方式导入视频剪辑。嵌入视频剪辑将成为动画的一部分,就像导入的位图或矢量图一样,最后发布为Flash MX动画形式(.swf)或者QuickTime(.mov)电影。采用嵌入视频的形式,可以导入Flash MX支持的任何格式的视频文件。 在导入视频设置对话框中,我们可以控制嵌入视...
标签: flash教程
既然是基础篇,就可以白说一堆大家都知道的废话,来浪费大家的时间,那简直是一定的。但是想想打字挺累得,还是算了吧,那些大家都差不多都知道的话我就不写了,反正在网上也很好找到。故以下作者删去50000字…… 废话少说,咱们现在差不多都是用RGB数值描述一个东西的颜色,RGB,red、green、blue顾名思义,红绿蓝嘛。这三个颜色可以...
标签: PS PS教程
    “Action”在Photoshop的汉化版中被翻译成“动作”。“Action”这个概念,是从Photoshop 4.0版起开始出现的,在Photoshop 4.0版之前称之为“Command”。Action是一个记录了一系列Photoshop操作指令的文件,就好像DOS下的批处理或是Word中的宏。Action文件的扩展名是ATN。 您只要事先准备好待处理的图像,再...
标签: flash教程
    在Flash MX中,我们可以导入QuickTime或Windows播放器支持的标准媒体文件。对于导入的视频对象,可以进行缩放、旋转、扭曲和遮罩处理,也可以通过编写脚本来创建视频对象的动画。Flash MX 6播放器加入了Sorenson Spark解码器,可以直接支持视频播放。此外,Flash MX还支持运行期动态载入JPEG和MP3...

经验教程

626

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部