Flash词法结构完全掌握
词法结构的所有知识,在接下来的内容中我们将接触点、空白、语句终结符、注释、保留字、标识符等知识点。最后我们会全面了解Flash词法结构的所有内容。
本教程不是为WEB开发者或者大网络公司创作部门的成员所准备的,它属于ActionScript程序员所必需掌握的基础知识,如果你是初级学者那么这本教程能够很好的指导你看懂Flash ActionScript的基本语法结构。本教程中并没有包含诸如对象、类、服务器通信以及XML、组建等高级主题,如果你需要更高等的信息可以阅读更多关于我的教程。
本教程设计的目的是本教程所介绍的知识实实在在,能够被你立即应用,而不是纯粹的理论而束之高阁,你再学习完本教程后尝试阅读ActionScript代码,看看你前进了多远。
你在阅读本教程的时候并不需要专业的编成知识,即便是你对ActionScipt一无所知。你需要的是学习的热情,只要你认真地通读你会学到知识的,相信我!如果愿意接受来自我更多的激情,请关注我(lewi)的更多教程。
正确、充实、丰富、直观,但错误、疏忽和个人水平的不足是难说避免的,如果你发现有什么错误或者对此教程有什么看法和建议请通过下面的方式告诉我:我的成长需要你的关注!
我请你先记住一个抽象的定义:空白是指代码行中用不同方式插入的空白集合。不要晕,我说过它很抽象,我会把它讲的很通俗,空格包括空格键插入的空格、Tab键插入的缩进、以及回车(也就是分行)。它在ActionScript中的作用就像英语中的空白一样,如:Come on这样一个错误的单词了,也许我们可以猜出要表达的是Come on的词汇量是很有限的,而且不擅长于设想,也就是说空白对于程序员来说是很重要的,它直接关系着程序的可执行性。
varx // 在关键字var和变量x之间没有空白所以是错误的。
var x // 在关键var和变量x之间有了空格,这下就好了,解释程序能够读懂代码了。在什么地方中断,又从什么地方开始Flash影片中时,代码中的空白区域通常不会产生任何错误。
我们看下面的代码: 下面的操作符=x=2-1*y; // 看起来超级拥挤,但还是可以的到解释程序的编译
x = 2 - 1 * y // 这样既好看又好读懂,但同样是正确的不关是在上述操作符中,空白在诸如:方括号、花括号、逗号、大于、小于等其他符号中同样是可有可无的,我们在看看下面的代码:
if(x==1){y=[a,b,c,d,e];} // 看起来真的不舒服,挤死啦!
on (release) { getURL("lewi.html");} // 有点不好看,可是正确的
// 又标准,又好看,又正确!
on (release) {
getURL("lewi.html");
}
// 这么难看,但又是正确的代码真是少见,下次可不要在这么写!
on ( release) {getURL("lewi.html");}
// 这是什么啊?哦,原来是上面要表达的x = 2 - 1 * y,还真是不好看懂。。。
x=
2
-
1
*y
// 我们再来看一个分行符的例子,分行符多数没有意义,主要是让代码更易懂。
myMenuArray = [[News,Down,BBS],
[新闻,资源,论坛],
["News.asp","Soft.asp","Bbs.asp"];
// 比下面的要整洁的多
myMenuArray = [[News,Down,BBS],[新闻,资源,论坛],["News.asp","Soft.asp","Bbs.asp"];
// 也比这样要整洁
myMenuArray = [[News,Down,BBS],
[新闻,资源,论坛],
["News.asp","Soft.asp","Bbs.asp"];看了这么多的例子,我们知道了空白的诸多好处,但在使用空白的时还候必须要注意:
1.如果空白将一个动作中的关键术语分开时会产生错误,看下面的例子
// 在t和U之间存在空格,破坏了关键术语,解释程序就没法编译,所以是错的。
on (release) {
get URL("lewi.html");
}用来划分串界限的引号内的空白和引号外被忽略的空白是不同的,看下面的的例子
并没有白手起家的设计一门新的语言,而是在最大程度上模仿JavaScript规范,JavaScript上客户端脚本的标准,因此Flash ActionScript使用圆点语法,这意味着圆点语法的所有动作都使用通常面向对象编程(OOP)语言,使用的标准格式编写:我这样说你也许会感到昏,我会把他讲的更加易懂些,你继续读)被用来指明某个对象或电影剪辑的相关属性方法,点是我们指向对象和嵌套影片剪辑的主要工具,他可以让我们设置和获取对象属性。我举几个例子给你,
ballMC._alpha // 是指影片剪辑的透明度值
ballMC._visible // 指示影片剪辑ballMC是否可见
ballMC._x; // 是指影片剪辑实例ballMC在X轴(_X)属性
ballMC.play(); // 在影片剪辑的时间轴中移动播放头
ballMC.stop(); // 停止当前正在播放的影片剪辑从上面五个表达式中,我们很轻易的就能发现点语法表达式由对象或是影片剪辑开始,紧接着就是个小点。点出了上述的被用来指明于某个影片剪辑相关的属性和方法,它还用于标识指向影片剪辑或变量目标路径,我同样通过几个例子来说明:中设置的一个变量,而form中,图一能够明确的表示这种包含关系。
通信,表达式就应该这么写:metagalaxy.earth.human.lewi
我们可以看图二中影片剪辑的包含关系。
点语法还有两个特殊的别名_root。_root是指主时间线,可以使用_root别名创建一个绝对路径,_parent创建一个目标路径。我通过例子来说明:
表达式_root.ballMC分开,点在这里表示一种父子关系,即在实例中_root为父子关系。我们再看下面的表达式
:// 这个例子被嵌套在ballMC影片剪辑中的circleMC影片剪辑实例具有绝对路径。
_root.balllMC.circleMC来引用嵌套当前电影剪辑的电影剪辑。也可以用_parent你应该注意到,大多数动作代码的行尾都有一个分号(;)用来终止一个ActionScript语句,但在ActionScript中没有分号,解释程序仍会在没有使用分号的时候判断语句的结尾,进行编译,但这并不意味着我鼓励你省略分号!我们看
// 虽然没有分号,但是我是合法的,解释程序能够读懂的
var x = 1
var y = 2我们省略了分号解释程序同样能读懂,但是总会有导致解释程序误解的情况,就如我们在抒写文章的过程中忘记了写句号一样。我们看下面的例子:
我们选择程序写入面板上的格式化按钮,系统会把我们的代码格式为
说明什么?说明函数就不会返回value+1,,关键字return单独存在也是一个合法的语句。要避免这种含混的情况,我们就要合理的使用分号,此外在return语句的特定情况下,不要将关键字return和其他的表达式用分行符分开(前面你学过分行符的)。上面的语句应该这么写:
注意:分号用来终结单独的语句时,在语句块结束的时候却不需要:
动作时,不要再#include语句的最后加上分号。#include的特殊标记,他提示Flash语句替换为提到的文件中的全部内容。我们看下面的代码
:// 由于用了分号结尾,所以会出现一个malformed错误
#include "contact.as";大小括号大括号,大括号的用法比较简单,常用于以on小括号,使用小括号的地方特别的多,但并不是全部动作在动作名之后都需要小括号,诸如:on()等。当我们定义一个函数时,需要把参数放在小括号中:
// 要记住啊,参数放在小括号中!
}调用一个函数时,也要把传递参数放在原括号中:
如果一个动作需要参数,那么就会需要括号(很多诸如stop();所有开括号(()都需要闭括号())。小括号还可以改变运算优先级如:
中注释会被解释程序忽略,程序员在抒写代码时为了增加代码的易读性而故意输入的文本成为注释,注释是概念上的代码描述,他反映了不了代码本身的语法。注释经常用来解释代码所要完成的工作,提供版全、版本信息或者其他描述信息等。
我们在看下面的注释,下面的注释比上面的注释更清晰,可以帮助我们跟随代码的流程
// 初始化计数,用来搜索从5开始的数字注释支持单行注释和多行注释。单行注释你已经接触过了,是以两个斜杠(//嗯,我写我写……我写的详详细细的,反正解释程序不会读到我…^_^…
单行注释在被分行符分开后,注释就结束了,我们要创建多行注释必须使用更多的//嗯,我还想写点什么,继续,继续……
这里我再补充一些,嗯,我还聪明,每次换行要在前面加上//符号,这才是认可的注释
注释还可以写在代码的后面前面你看到过的
trace (6 + 8 / 2 ); // 输出10(这个注释在代码的后面,是认可的!)哇,你可能要想我要写个几十行注释岂不是打//符号都要打半天,不用担心我会告诉你一个多行注释的方法,这种多行注释用来适应大块代码说明,如版本信息等,他不会被换行符打断,多行注释以/*结束,看下面的
/*^^^^^^^^^^^^^^当然把注释写在前面也可以,就是不好看,但他合法
/* 输出10(这个注释代码写在前面,是认可的!)*/ trace (6 + 8 / 2 );注释,很好玩吧?*/
注释的用法还有一个秘密,这里我告诉你,我们可以通过注释让代码临时失效,或者永远的失效。只要删除注释符号就可以让代码恢复效果?:/
* 啊哈代码失效了!
if (depth<200) {
gotoAndPlay("generate");
}
直到我改变主意,删除注释符号*/
中的变量名不区分大小写,但不能以数字开头AS2.0要区分大小写。当一门语言全部都要区分大小写的时候,语言中的所有符号都不需以正确的大小写形式书写,否则就会出现错误。如:
兼容标准,变量名不区分大小写,但关键字(我一会儿会给你讲)都是区分大小写的,。我还好举个例子来说明
中标识符不区分大小写,我们看下面的语句
所有的情况关键字必须一致,就算是语言中不严格要求一致性的时候,也要养成一致性的好习惯,还有就是保持不变的变量、函数、实例等其他项目的大小写风格会让你的代码变得很容易理解,很好读。
----------------------------------------------------------------------------------------------------------------------
的解释程序保留了一些特殊的字符,用这些字符内置语言功能如:var的保留字如图中所示。中所有的变量、函数和对象属性都用标识符来命名,下面给出了构成规则
1.符号。不可以有空格、句点、反斜杠等
2.符号开头。
3.标识符不能和保留字相同。恭喜你!现在你已经掌握了ActionScript语言基础,你已经具备了阅