flash action 详解
- 格式:doc
- 大小:81.00 KB
- 文档页数:23
Flash action script这里我只简单的介绍一下AS的基本常识。
首先我们要了解AS要写在什么地方,什么时候AS会被触发执行。
1、帧:写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,写在这个帧上面的AS就被触发执行了。
常见的例子有在影片结尾的帧写上stop() 等。
操作方法就是点选关键帧,然后打开AS面板。
2、按钮:不同于帧上面的AS,按钮上面的AS是要有触发条件的。
要把AS写在按钮上,操作方法是点选目标按钮,然后打开AS面板。
举个例子能说的更明白。
假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写ASstop();再假设有个按钮,效果是按下按钮后停止播放,那么步骤如下。
做一个按钮,放到主场景,点选按钮,然后打开AS面板。
现在如果也在按钮上写stop();那么,输出的时候就会提示错误。
正确的应该这样写on(release){stop();}这里要比帧的动画多这些代码: on(release){} , 整个代码翻译过来就是:当(松开){停止}这里用的是release 松开,鼠标的触发事件之一,按钮的常用事件:release 松开releaseOutside 在按钮外面松开press 按下rollOver 鼠标进入按钮的感应区rollOut 鼠标离开按钮的感应区现在很明确了:写在按钮上面的AS一定就是这种格式的:on(事件){要执行的代码}3、MC(电影剪辑)如果你看懂了上面的内容,那么写在MC上面的AS和写在按钮上的大同小异。
操作方法就是点选MC,然后打开AS面板。
看个例子onClipEvent(load){stop();}同样,MC需要一个事件来触发AS的执行。
翻译这段代码就是当剪辑(载入){停止}load表示一个事件。
MC的事件有下面这些:load 载入,当MC出现的时候执行。
也就是除非卸载这个MC,否则load事件内的代码只执行一次unload 卸载,当MC卸载的时候执行enterFrame 存在的每个帧。
很多朋友经常询问关于Flash的ActionScript脚本语句的用法,有些很简单的命令就能实现某种功能,现在我就把一些Flash的常用Action语句的基本用法讲解一下。
1、Goto:跳到一个指定的帧(Frame)Scene: 指定SceneFrame:Number,Label,EXPression,Next Frame,Previous Frame可以选择Frame 的编号,标号,通过表达式,下一帧,前一帧Expression: 定义表达式Control:Go to and Play,Go to and Stop通过选择这个项目来确定到达指定的帧以后是继续播放还是停止例子:Go to and Play (1)跳到第一帧播放Go to Next Frame跳到下一帧播放Go to and Stop ("intro")跳到标号为intro 的帧播2、Play:播放Stop:停止Toggle High Quality:切换画面的细节程度Stop All Sounds:停止所有声音Get URL:打开指定的网址URL: 网址Windows:_self,_blank,_parent,_top打开网址时使用的目标Variables on’t Send,Send use GET,Send use POST变量的传递方式例子:Get URL ("next.asp", window="_blank", vars=POST)在新窗口中打开next.asp,并且传递参数3、FScommand:调用命令Command: 命令Arguments: 参数For standalone player:fullscreen,allowscale,showmenu,exec,quit播放器使用的固定命令和参数例子:FS Command ("fullscreen", "true")设置全屏幕播放4、Load/Unload Movie:调入/释放外部的影片Action:Load movie into location,Unload movie from location,Load variables into locati on: 可以选择是否调入新影片,释放已经调入的影片,调入变量URL:影片的网址Location:Level,Target: 调入的层,或者是某一目标对象的位置Variables on’t Send,Send use GET,Send use POST: 变量的传递方式例子:Load Movie ("test.swf", 1): 把test.swf 调入到第一层Load Movie ("test.swf", "loadit", vars=GET): 把test.swf 调入到loadit 目标对象的位置Unload Movie ("loadit"): 把loadit 目标对象处的影片释放Load Variables ("makeit.asp", 2, vars=GET): 调用makeit.asp 并接收返回的变量5、Tell Target:指定目标对象Target: 目标对象例子:Begin Tell Target ("obj")指定目标对象objEnd Tell Target6、If Frame is Loaded:判断某帧是否调入Scene: 指定场景Frame:Number,Label,Expression: 指定帧,标号或者表达式Expression: 表达式例子:If Frame Is Loaded (Scene 1, "end")End Frame Loaded:判断场景一的标号为end 的帧是否调入7、On MouseEvent鼠标时间响应Event ress,Release, Release Outside,Roll Over,Roll Out,Drag Over,Drag Out,Key Pres s各种事件:按下,放开,在外面放开,焦点移入,移出,拖过,拖出,按键按下例子:On (Press) 鼠标按下的时候End OnOn (Key: s)键盘上s 按下的时候End On8、If判断条件是否成立Condition: 条件Add Else/Else If clause: 加入Else 再次判断例子:If (a=10)如果a=10 那么……End IfIf (a=10)如果a=10 那么……不然……ElseEnd If9、Loop循环Condition:条件例子:Loop While (a=10)如果a=10 那么循环End Loop10、Call调用函数帧或对象Frame:函数帧例子:Call ("make")调用make 帧程序11、Set Property设置属性Set:Y Positon,X Position,Y Scale,X Scale,Alpha,Visibility,Rotation,Name,High quality,S how focus rectangle,Sound buffer time设置y 坐标,x坐标,y 放大倍数,x 放大倍数,透明度,可视否,旋转角度,名称,精细度,焦点矩形框是否显示,声音缓冲时间(默认5秒)Target:目标对象value:值例子:Set Property ("aoe", X Position) = "12"设置目标对象aoe 的x 坐标为12Set Property (Show focus rectangle) = "0"取消焦点框12、Set Variable设置变量Variable:变量value:值例子:Set Variable: "test" = 10设置test=1013、Duplicate/Remove Movie Clip复制对象Action uplicate movie clip,Remove duplicate movie clip可选择是复制还是删除Target:目标对象New name:新目标对象的名字Depth:深度例子:Duplicate Movie Clip ("aoe", "aoe2", 1)复制aoe 一个新的动画,名字叫aoe2Remove Movie Clip ("aoe2")删除目标对象aoe214、Drag Movie Clip 拖动影片片段Start drag operation:开始拖动Target:目标对象Constrain to rectangle:Left,Top,Right,Bottom鼠标的位置,左上右下Lock mouse to center:鼠标放置在中心Stop drag operation停止拖动例子:Start Drag ("aoe", L=2, T=3, R=4, B=5)拖动目标对象aoe,位置在L=2, T=3, R =4, B=5Start Drag ("aoe", lockcenter)拖动目标对象aoe,位置在中心Stop Drag停止拖动15、Trace 跟踪Message:信息例子:Trace ("aoe")显示aoeTrace (aoe)显示aoe 的值16、Comment注释Comment:注释例子:Comment ("计算")注释:计算。
FLASH实用代码大全|flash动作代码|flash常用代码|flash教程外部调用swfon (release) {loadMovieNum("service.swf", 1);}外部调用数据loadVariablesNum("about.txt", 0);eCodepage = true;//中文音乐加入mySound = new Sound();mySound.attachSound("1");mySound.start();关闭指定音乐mySound.stop("1");外部调用音乐mySound=new Sound();mySound.loadSound("music.mp3",true);mySound.start(0,100)关闭音乐mySound.stop();链接场景:on (release) {gotoAndStop("猫的历史",1);}清空文本框_root.text=""On(Release)Set Variable:"input" = ""Set Variable:"output" = ""End On轻松实现Flash的全屏播放许多人都看过这样的效果:把光盘放入光驱后,光盘自动运行,接着便是一段Flash制作的开场动画,动画是全屏播放的,且右键点击无效,动画播放结束后,出现“关闭”按钮,单击该按钮后,全屏动画关闭。
其实上面提到的全屏播放以及取消右键菜单等效果都是靠Fscommand指令在发挥作用。
Fscommand指令主要是用来控制Flash影片播放器的,但也可以用来打开其它的应用程序。
Fscommand指令只有在Flash影片播放器执行时才有效(.swf和.exe),在Flash 制作过程中,按“Ctrl+Enter”预览动画,以及把动画发布成网页文件时,此指令无法发挥它的功能。
flash action 详解作者:风儿飞类型:转载来源:中国闪客网第1 章: 代码格式及规范Actions cript 的每行语句都以分号";" 结束. 不同于BASIC 语言, Actions cript 语句同C++, Java, Pascal 一样允许分多行书写, 即允许将一条很的长语句分割成两个或更多代码行, 只要在结尾有个分号就行了. 允许语句分行书写的唯一缺点是(至少对许多熟悉BASIC 的人而言): 语句末尾不能忘记加分号. 语句分行唯一的限制是字符串不能跨行, 即两个分号必须在同一行.分行书写长语句也是一个很好的排版办法, 例如下面的语句段(目前你不需理解下面的语句是什么意思, 在双斜杠后面是注释):但是在Flash MX 中似乎自动格式化功能不是很完善. 上面的代码可以运行通过, 但在使用自动格式化时会出错. 问题就在于插入其间的注释语句. 毕竟上面我写的例子并不是很好地符合Flash MX 的语法规范(但按照C 语言的语法来看是绝对没问题的), 所以请记住: 只有在语句很长或是很复杂的情况下才使用多行书写.一个好的程序员会懂得在程序代码中加入注释. 但也许你会说: 没关系, 我知道我写的是什么. 但是假如你是在1 个月后再读这段代码呢? 很明显, 你记不住. 所以多打几个字又有什么麻烦的? 给Actions cript 代码加注释使用下面格式:statements; //这是单行注释, 由双斜杠开头,这行的后面部份都是注释内容statements; /* 这也是注释只不过可以换行*/就这么简单(却又十分有用). 注意/* 和*/ 已经不建议使用了(因为必须配对, 所以经常会导致错误).除了注释, 增加代码可读性的另一途径是使用代码排版格式. 下面是一段具有高可读性的代码:Flash MX 之前版本必须由程序员自行编排代码格式, 而Flash MX 的Action 面板多了一个Auto Format (自动格式化)按钮, 可以用它来自动格式化代码(同时也会进行语法检查, 相当方便). 格式化的选项可以在Action 面板弹出菜单的Auto Format Options 项对应的对话框中设置. 下面是对Actions 面板的一点介绍:语法着色和代码提示语法着色(Syntax Hightlighting)是许多编程语言的IDE (集成开发环境)所具备的功能. Flash 也具有这项功能. 语法着色的颜色可以在Action 面板弹出菜单的Preferences... 项对应的对话框中设置.对此, 没什么好详细解说的. 只是希望大家能利用语法着色来发现错误和阅读代码.Flash MX 新增加的代码提示功能(Code Hints)对于熟悉Visual Studio 6.0+ 版本的读者而言并不陌生. 例如在输入了一个对象名后再输入".", 就会显示相关的属性和方法列表; 在输入了函数名后输入"(", 就会显示相关的函数格式. 具体的可在输入代码时自己体会.语法规范关键字关键字是任何一种语言程序的基本构造单位. 它是程序语言的保留字(Reserved Words), 不能被作为其它用途(不能作为自定义的变量, 函数, 对象名).Flash 的Actions cript 中关键字不是很多, 下面的它们的列表:Flash MX Actions cript 的关键字break 跳出循环体instanceof 返回对象所属的类(Class)case 定义一个switch 语句的条件选择语句块new 使用构造函数(Constructor)创建一个新的对象continue 跳到循环体的下一项目return 在函数中返回值default 定义switch 语句的默认语句块switch 定义一个多条件选择语句块delete 清除指定对象占用的内存资源this 引用当前代码所在的对象else 定义if 语句返回为假时的语句块typeof 返回对象的类型for 定义一个循环var 声明一个本地变量(Local Variable)function 定义一个函数语句块void 声明返回值类型不确定if 定义一个条件语句块while 定义一个条件循环语句块in 在一个对象或元素数组中创建循环with 定义一个对指定对象进行操作的语句块列出这些并不是要求你像背单词一样把它们背下来(这也是为什么中国的教育质量这么差的原因), 只是希望大家记住: 在Flash 中有一些作为关键字的单词是不能随意使用的. 这在分析错误的时候是很有用的(特别对于初学者).语法规范---大小写敏感同C++ 和Java 一样, Actions cript 是区分大小写的.这就意味着: If 并不等于if. 假如在代码中使用了If, 在运行和检查时都会产生错误. 避免这种情况发生其实很简单: 多注意一下输入的代码是否自动地被语法着色了(Syntax Hightlighting).但是对于变量(Variable), 实例名(Instance Name)和帧标签(Frame Label), Actions cript 是不区分大小写的. 尽管如此, 我还是建议大家在书写代码时保持大小写一致. 这是个很好的习惯.语法规范---运算符除了关键字, 程序语言中最重要的组成部分就是运算符. 先不要说我死板, 因为不了解这些东西, 你什么也做不成.下面是运算符的列表, 运算符的优先级(即几个运算符出现在同一表达式中时先运算哪一个)从上到下递减:运算符描述+ 一元(Unary)加- 一元(Unary)减~ 按位(Bitwise)逻辑非! 逻辑非(NOT)not 逻辑非(Flash 4 格式)++ 后期(Post)递加-- 后期(Post)递减( ) 函数调用[ ] 数组(Array)元素. 结构(Structure)成员++ 先期(Pre)递加-- 先期(Pre)递减new 创建对象delete 删除对象typeof 获得对象类型void 返回未定义值* 乘/ 除% 求模(除法的余数)+ 加add 字符串(String)连接(过去的&)- 减<< 按位左移>> 按位右移>>> 按位右移(无符号unsigned, 以0 填充) < 小于<= 小于或等于> 大于>= 大于或等于lt 小于(字符串使用)le 小于或等于(字符串使用)gt 大于(字符串使用)ge 大于或等于(字符串使用)== 等于!= 不等于eq 等于(字符串使用)ne 不等于(字符串使用)& 按位(Bitwise)逻辑和(AND)^ 按位逻辑异或(XOR)| 按位逻辑或(OR)&& 逻辑和(AND)and 逻辑和AND (Flash 4)|| 逻辑或ORor 逻辑或OR (Flash 4)?: 条件= 赋值*= /= %=+= -= &=|= ^= <<=>>= >>>=复合赋值运算, 多重运算写了这么一大版(也可以说是抄了), 有什么用? 你会发现这些运算符与C++ 和Java 的运算符没什么很大的区别, 无论是形式上还是功能上. 作为初学者你必须记住其中比较常用的部分(不常用部分的说明文字背景较暗). 这对你今后写表达式有很大帮助.对于运算符的使用, 也有一些要注意的地方.例如and 和or, 虽然对于效率而言与&& 和|| 没什么至关重要的区别, 但如果你过去使用过BASIC, 你肯定会选择前者的表示方式; 假如你过去是使用C++ 或是Java 的, 那么你就会倾向于使用后一种方法. 就我个人的观点, 为了使代码具有高可读性, 初学者还是应该使用意思明了的and 和or.特别是像?: 这类极其简化的运算符, 初学者更难以阅读. 例如下面代码:从上例开始, 本教程中的所有范例代码都可以复制粘贴到新建的Flash 动画的第一帧的Action 里. 然后通过Control 菜单的Test Movie 项或是按下组合键CTRL+ENTER 运行它. 这样你就可以看看这些代码有什么实际效果了. 当然你也可以试着改动这些代码, 通过改动的效果来理解教程的内容.就不如下面的代码易于理解(尽管很冗繁):语法规范---常量常量是在程序运行中不会改变的量.例如数值1,2,3..., 逻辑值true, false 等等. 另外还有一些系统内建的常量, 具体的可以看帮助文件的内容.语法规范---表达式在Actions cript 中最常见的语句就是表达式, 它通常由变量名, 运算符及常量组成. 下面是一个简单的表达式:左边是变量名(x), 中间是运算符(赋值运算符"="), 右边是常量(数值0). 这就是一个非常简单的赋值表达式. 由这个表达式我们可以声明(Declare)一个变量, 为下一步操作做准备.表达式又分为赋值表达式, 算术表达式和逻辑表达式.赋值表达式上面已经说明了, 就是给变量一个值. 算术表达式顾名思义就是做数学运算的表达式, 例如: 1+3 (返回值为数值4). 逻辑表达式就是做逻辑运算的表达式, 例如: 1>3. 只不过逻辑表达式返回的是逻辑值而已. 前面的1>3 返回值为false, 即1 大于 3 为假.将多个表达式组合在一起就可以组成复合表达式, 一般我们用到的也是这种表达式. 例如:上面的第二行是一个逻辑-赋值复合表达式. 首先Flash 计算逻辑表达式1>3 的值(false), 然后将该值赋给x (即x = false. 对于复合表达式的运算顺序可以参考上面的运算符表. 要改变运算顺序可以使用圆括号(例子的第一行), 这是同其它语言一致的.这一章就到此为止. 在下一章中, 我们将详细讨论Flash 中的数据类型及变量的使用变量是什么? 大概说来就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针, 不过能够理解就行了, 何必去记这么抽象的定义). 只要能够理解它可以存放信息并可以通过各种途径改变其中的信息就可以了, 我又不是大学里面的老师, 整天就知道叫学生死记硬背定义, 实际的东西一点都没有, "一切为了考试".还有一个概念: 什么叫初始化变量? 就是在定义时给它一个有效值以说明它的内容和数据类型.就像下面的例子, 定义了一个字符串(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 小于1x = x + 1; //x 加1} else {x = 10; //否则赋值10}trace("x="+x);return x;}vars(2);vars(6);trace("x="+x); //测试x 是否为局部变量函数声明中的参数无需加var 声明也自动作为局部变量(例如上面例子中的x). 通过上面例子的最后一句就可以看出来(返回值为空).我们可以看到, 上面定义的函数中对局部变量x (在函数参数中声明)进行了4 种操作:赋值: 就是改变变量所存贮的内容.运算: 使用运算符运算并返回结果. 上例中的x = x + 1 可视为一个运算操作(x + 1)和一个赋值操作(x = ...)的复合语句. 对于逻辑运算(上面if 语句的条件), 返回的为逻辑值true 或false(就像x<5 在x 为4 时会返回true).函数及命令调用: 就如上面trace("x="+x); 中的一样, x 是被作为参数传递给函数的, 它代表的是它所存贮的实际内容(在return x; 中也一样).在Actions cript 中变量的使用具有很大的灵活性, 下面我们将会针对不同的数据类型进行讲解. 常见数据类型---字符串| String一个字符串就是一系列的字符, 例如"This" 就是一个字符串.定义一个字符串变量很简单, 只要在初始化时将一个字符串数据赋给它就行了:chapter = "第2 章";section = "第2 节";section_name = "常见数据类型";full_name = section + " " add section_name + 999; //连接字符串if(typeof(full_name) ne "string"){full_name = "类型错误!";}trace("full_name=" + full_name);上面的第 4 行的full_name 的值是前面两个变量(section 和section_name)和一个常量(999)的运算结果(使用了+ 和add 运算符, 它们的功能是相同的). 请注意, 这行代码最后面的数值常量999 不是同一类型的数据, 如果在Pascal 这种数据类型检查极其严格的语言中这行代码是错误的. 但是Actions cript 可以自动将它转换为字符串格式, 而不需要专门的函数(当然, 最安全的方法是使用Number 对象的toString() 函数或是String() 函数). 由此可见, Actions cript 是一种弱类型检查的语言(即不严格限制各种数据类型间的运算和传递), 这和VB 倒是有点相似, 只不过更过分一点.在后面我用了一个if 语句来测试后面加上999 的代码是否运行正常(即检查表达式返回的值是否为字符串, 尽管在实际中并没有这个必要). 注意我用的是字符串类型专用的逻辑运算符ne, 当然这只是为了表现字符串数据类型的特殊性, 实际应用中用!= 也就可以了. 对于typeof 操作符, 我们会在这一章的末尾详细讲解.在实际应用中, 有一些特殊的字符不能直接输入在字符串中, 例如不能在字符串中直接输入引号(会破坏字符串的完整性). 这时我们就需要用到转义字符了(Escaping). 要使用转义字符, 首先要输入一个反斜杠(\), 然后输入相应的代码. 详细的代码列表如下:转义字符代表字符\b 退格字符(ASCII 8)\f 换页符(ASCII 12)\n 换行符(ASCII 10)\r 回车符(ASCII 13)\t 制表符(ASCII 9)\" 双引号字符\'' 单引号字符\\ 反斜杠字符\000 - \377 八进制表示的字符\x00 - \xFF 十六进制表示的字符\u0000 - \uFFFF 十六进制表示的16 位Unicode 字符例如:trace("He said:\"I don\''t care about you.\"\nAnd she smiled:\"Really?\"");你可以根据上面的对照列表读出上面代码的字符串内的实际内容. 运行后的输出为:He said:"I don''t care about you."And she smiled:"Really?"可以看到, 转义字符都被转换为相应的实际字符了. 这就是转义字符的作用, 学过C++ 的读者应该很熟悉了.数值| NumberActions cript 中的数值型数据为双精度浮点数(不懂是什么意思也没关系, 反正知道是数值就行了, 那只不过是个范围限制).对数值型数据可以进行任何相应操作. 如下例:a = 1;b = 2;sum = a + b; //求a, b 之和if(sum>0){ //假如结果大于0square_root = Math.sqrt(sum); //使用Math 对象的平方根函数求sum 的平方根}trace("sum=" + sum);trace("square_root=" + square_root);完.逻辑变量| Boolean逻辑变量又被称为布尔变量(由其英文名称而来). 它只有两个值: true 和false. 在必要的情况下, Actions cript 会自动将它的值转换为1 和0, 你也可以用1 和0 给它赋值(这是可能是为了和Windows API 函数调用兼容而产生的).a = 10;b1 = 1;b2 = false;if(b1 == true){a = a + b1;} else {b2 = !b2;}trace("a=" + a);trace("b1=" + b1);trace("b2=" + b2);上面代码混合了数值型和逻辑型变量的运算. a = a + b1 将逻辑值b1(true 即1)加到a 上, b2 = !b2 则是对b2 取反(即由false 变为true 或是由true 变为false, 因为逻辑值只有两种情况: 真或假). 你可以试着修改一下b1 的值来看看不同的效果.对象| Object对象是Actions cript 中的一个重要数据类型. 说得更清楚一些, 它就是现在大多数编程语言中的类(Class). 其实在Flash 中使用的MovieClip 其实也属于一种预定义的类, 只不过它有些特殊而已.关于对象我们会在后面章节详细介绍影片| Movieclip影片是Flash 中唯一用来引用图像元素的数据类型. 你可以通过MovieClip 对象的各种属性(Property)和方法(Method)来操作它的实例(Instance).关于影片我们也会在后面详细讲解空| Null空? 我是说"空", 也就是什么都没有. 这种数据类型就是这个意思, 而且它只有一个值: null. 那么它有什么用呢?用来表示一个变量尚未赋值用来表示一个函数没有返回值用来表示一个函数的某个参数被省略了不要认为它毫无意义, 在涉及到具体的程序问题时它是非常有用的.定义| Undefined未定义类型同Null 差不多, 也只有一个值: undefined.它被用来表示一个变量尚未赋值.typeof 操作符在实际应用中我们经常遇到需要判断具体变量和对象的数据类型的情况. Flash 提供了一个很好用的typeof 来解决这个问题. 特别是对于自定义函数的设计, 确定参数的类型是非常重要的步骤. 参数类型返回值(字符串)String stringMovieClip movieclipButton objectTextField objectNumber numberBoolean booleanObject objectFunction functionUndefined undefinedNull nulltypeof 操作符的优先级很高, 可以在逻辑运算或是算术运算符之前被运算. 下面是它具体应用的例子://常数的类型trace("数值常数36 的类型: "+typeof 26);trace("字符串常数what 的类型: "+typeof "what");//一般typeof 操作符可以像+, -, add 等操作符一样使用//但为了避免出错还是建议你使用括号, 如下例trace("逻辑常数true 的类型: "+typeof(true));//对象的类型trace("new String() 的类型: "+typeof new String()); //注意new 操作符优先级比typeof 高//函数的方法的类型取决于其返回值trace("Math.sqrt() 方法的类型: "+typeof Math.sqrt());trace("Math.toString() 方法的类型: "+typeof Math.toString());//null 空类型trace("null 的类型: "+typeof null);//在这里我用了多级typeof 来看看typeof 返回的值的类型trace("typeof 返回值的类型: "+typeof (typeof null));你还可以自己试着改动一下代码, 看看其它东西的typeof 是什么.这一章就到此为止了, 下一章会比较现实一点(因为有人说前面这些东西根本没必要讲, 不切实际). 对于数据类型的对象性方面的内容将在对象部分中介绍Actions cript 的条件和循环语句有if, else, else if, for, while, do...while, for...in 和switch. 在Flash 中它们被叫做流程控制动作(Action), 但实际上, 其实质与其它程序语言没什么不一样的.因为条件和循环语句是程序语言中最基础的, 也是最具有实用价值的语句, 所以要在这里仔细讲解一下. 对于有C++ 和Java 等编程经验的读者随意浏览一下就可以了.条件语if句--if可以说是程序语言中最基本的条件判断语句. 无论在任何语言中都有它的身影.由下面的例子可以了解它的格式:name = "SiC";//下面是if 语句if(name == "SiC"){trace("作者");}if 语句通过判断其后圆括号内的逻辑表达式是否为true 来确定是否执行大括号内的语句. 假如逻辑表达式name == "SiC" 返回值为真, 就在输出窗口(Output Window)内显示"作者", 否则就不执行.然后让我们设想一下下面例子的效果:if(1){trace("总是执行");}如果你还记得前面数据类型的内容, 那么应该可以看出, 这时的if 语句基本上是多余的, 因为对于常量1, 逻辑表达式的值恒为true(其实 1 就是逻辑值true 的数值表示形式). 但对于常量0, 则永远为false. 你可以试试把上例中的 1 改成一个字符串常量(例如"hi!")看看会有什么效果.再看一个例子:name = "SiC";//下面是if 语句if(name = "SiC"){trace("作者");}比较一下看这个例子与第一个例子有什么不同? 不同之处就在于第一个用了==, 而这个用了=. 对于这个例子, if 的判断永远为true. 想想为什么? 问题就在于使用了赋值运算符= 而不是逻辑运算符==. 对于赋值运算, 其返回的逻辑值总是true. 这也是初学者常犯的错误.一定要注意区分赋值运算符= 和逻辑运算符==. 否则你会遇到一些莫名其妙的错误和问题, 而且语法检查也找不出错误(因为赋值运算表达式也是有效的条件表达式). 所以请记住, Actions cript 的相等逻辑运算符是== 而不是=.if...else假如想要在判断条件不成立时执行另一项操作时怎么办? 很简单, 在if 语句后面加上个else 语句块就可以了:name = "未知";//下面是if...else 语句if(name == "SiC"){trace("作者");} else {trace("未知");}很简单吧? 只要把在判断结果为假时要执行的语句放在else 后的大括号里就行了.if...else if如果要进行很多个条件判断怎么办? 也好办, 用else if 解决:name = "Sam";//下面是if...else if 语句trace("作者");} else if(name == "Flash MX") {trace("Flash MX 是软件名称.");} else if(name != "未知") {trace("谁是" + name + "?");} else {trace("未知");}你可以接任意多个的else if 来进行多个条件的判断, 最后的else 语句块可有可无(根据实际需要选用). 唯一不足的就是else if 太多时执行速度较慢(在其它程序语言中也是一大问题). 这时就轮到switch 出场了switchswitchswitch 在Visual Basic 里面是个很好用的命令. 它可以通过判断不同的条件表达式来执行不同操作. 但是在Actions cript 中就没有那么大的弹性了. 因为Actions cript 中switch 的条件被固定为===, 即绝对等于(包括数据类型也要相同), 不像在VB 中可以额外使用>, >= 之类的条件运算符. 所以, else if 在需要判断大于小于之类的情况下还是大有用处的. 现在来看看下面的例子: mynumber = 3; //赋值给mynumber//下面是switch 语句switch (mynumber) {case 1:trace ("这是我希望得到的数字.");break;case 2:trace ("这个数字比我的小一点.");break;case 3:trace ("这是我的数字.");break;default:trace ("这不是我要的数字.")上面的例子是一个完整的switch 语句块. 在case 关键字后面的就是需要满足的条件, 如果都不满足, ActionScipt 会查找是否存在default 语句块, 如果存在, 则执行其中的语句. 另外, 你可能已经发现在每个语句块后都有一个break 关键字, 为什么呢? 因为如果没有用break 来跳出switch 条件选择语句, 程序会继续向下搜索满足条件的case 项目(包括defualt 块)并执行其中的语句. 下面是一个修改后的例子:mynumber = 3; //赋值给mynumber//下面是没有加break 的switch 语句switch (mynumber) {case 1:trace ("这是我希望得到的数字.");case 2:trace ("这个数字比我的小一点.");case 3:trace ("这是我的数字.");default:trace ("这不是我要的数字.")}运行一下这个例子, 你会发现会同时输出了"这是我的数字" 和"这不是我要的数字". 为什么? 因为没有了break, 在运行了满足条件的case 3: 语句块后, 条件选择语句仍会继续执行, 而default 块作为默认条件, 它总是会被执行, 从而产生了这样的结果. 一些常见的程序错误也就由此而来.在Actions cript 中还有一个用于循环的continue 命令, 它可以直接跳到所在循环的条件检测部分(即立即进行下一次循环的条件判断). 这个命令不常用到, 所以在这里没有讲解. .循环语句--for循环语句for对于for 循环, 我想大多数读者都不会陌生. 下面是一个求1 到100 的自然数之和的程序段. var sum = 0;//下面是for 循环for (var i=1; i<=100; i++) {sum = sum + i;。