Flash AS简易教程(1)
写在前面的话——不得不读的话这本电子教案以简单为目标。我希望把它写成世界上最简单的AS教程。你每天只需花15分钟来试验,在不到15天的时间你就可以轻松用AS来写你的动画。到现在为此我只写了12个15分钟。如果有用我会继续写下去,现在只是一个试探阶段。这12个15分钟是:
□ 第1个15分钟 变量
□ 第2个15分钟 函数
□ 第3个15分钟 if条件
□ 第4个15分钟 switch条件
□ 第5个15分钟 循环
□ 第6个15分钟 对象
□ 第7个15分钟 影片剪辑的属性
□ 第8个15分钟 加载影片剪辑
□ 第9个15分钟 拖动影片剪辑
□ 第10个15分钟 遮照影片剪辑
□ 第11个15分钟 复制影片剪辑
□ 第12个15分钟 加载声音
AS可以写在上个地方:时间轴上的关键帧上;影片剪辑上和按钮上。这只是为了方便而已,实际上你可以把AS全部写在时间轴上的关键帧上,只要你搞懂目标路径和事件的概念。如果此话不明白,请跳过就是了。 任何语言都需要一些“黑话”。同样我们的AS也需要。 一般AS中把要执行的语句放在大括号内:{}。例如:
_root.onEnterframe=function() {
//顺便说一句,前面的“//”是解释说明,在执行语句时AS会跳过,如果要换行还需要“//”。
//这一条语句死记就可以。在影片只有一帧时用的最多。表示的意思是不断触发第一帧。
}
另外我们AS用来测试计算结果的方法是使用函数trace (参数)。这里的参数可以是变量,可以是表达式,可以是函数------
好了,现在我们就开始第一个15分钟。
第1个15分钟 变量
要在15分钟内知道变量,可能吗?
先看看再说。不管如何一定要记住:变量是存贮任何类型数据的标识符。既然是存贮,那么变量应是一个容器。不错,它相当于一个茶杯一样,可以装茶,可以装水,当然还可以装酒。然而,在AS中,不会让你画一个茶杯来表示变量。但是,你可以给茶杯起一个名称,叫a也好,叫b也无妨。这个名称就是标识符。不过这个标识符的选择也有一些规定,甭管它什么规定,你就用字母来命名,如果提示你不行的话,换一个就是。完了以后,查一下帮助文件内的命名约定。
现在让我们来试验一下。
打开Flash,用鼠标在时间轴的第一帧右击或按F9,打开动作编辑器。如果是标准模式,请转到专家模式。在编辑窗口中输入以下数据:
a=4
b=5
trace(a+b)
“a=4”表示我是一个变量,我的名字是a,现在我代表4。除非你改变我,否则我一直代表4。用专业的术语说就是:声明变量a,并赋值4。这里的等号表示赋值的意思,不是等于的意思。要表示等于用“==”。两个等于号表示等于的意思,没办法,人家就这么规定的。《林海雪原》中田司令说:不懂土匪的黑话,打不了土匪。人家老扬就会这一招。
按Ctrl+Enter测试一下电影,输出窗口中显示9。是白痴都知道a+b=4+5=9。
这里的a,b是可以计算的。
如果改成下面的:
a=“4“
b=“5“
trace(a+b)
想想输出窗口是什么?“9”吗?错误。应是45。为什么呢?跟我一起回想一下变量是什么?变量是存贮任何类型数据的标识符。注意“类型”两字。人有男女之别,变量当然有类型之分。变量可以有数值型,布尔型,字符型,对象型。
数值型可以用于加减乘除。
布尔型只有真假两个值,常用于条件判断。例如:
a=4
b=5
trace(a>b)
输出的值不是4>5,而是false。
方式被引号引起来的就是字符型。而不管它是单引号,还是双引号。
对象型主要包括影片剪辑,文本块,组,按钮,组件。现在不明白,就不要管它。反正有一句话叫:船到桥头自然直。
第2个15分钟 函数
在未接触AS之前,问你函数是什么?映入头脑中的恐怕就是一些x,y之类的符号吧!AS中的函数追根揭底和数学上的函数是一回事。但是我不想把它搞得太复杂。只想给它下一个明了的定义:能执行某种功能的语句组合。从函数的英语function就知道,它还有一个意思是功能。也就是说AS中的函数没有某种功能我们宁愿不叫函数。
例如:你想在0~9中的10个数值随机产生一个,只需在时间轴的关键帧上右击然后单击动作和按F9,输入下列语句就可以:
trace(random(10))
按Ctrl+Enter测试,输出窗口会随机产生0~9中的数值。
AS中的函数分为内置函数和用户自定义函数。像上面的random(参数)就是内置函数,这样的函数在Flash中有很多,例如获取字符串长度的函数mblength(参数),获取指定字符串中的某一段字符的函数mbsubstring(参数,数值,数值)。根据你的需要,你可以查看AS手册。尽管有很多内置的函数,一般可以分为数学函数,转换函数和其它函数。
下面一个“打字效果”的例子能很好的说明内置函数的应用。首先打开Flash新建一文件,在场景1中创建一个动态文本,在属性检查器中选择“多行”,输入变量名为“a”。
然后在时间轴的第一帧按F9,打开动作编辑窗,在专家模式中输入下面语句:
i=1 //“//”后的不必输入,只起解释说明的作用。i的初始值为1。声明变量i.
tt=”打字效果的实现很简单,就是几句代码。”//动态文本中要依次显示的文字,把它赋给变量tt
_root.onEnterframe=function() { //由于只有一帧,所以需要此语句不断触发帧
if (i<=mblength(tt)) { //条件判断,在i小于字符串长度时,执行下面的语句
i=i+1 //i的值增加1
a=mbsubstring(tt,1,i) //从第一个字符开始获取tt中一段字符,并把它赋给a
} else { //否则,条件为假时
stop() //停下来
} //和else成对的大括号
} //和第3句成对的大括号
按Ctrl+Enter测试 ,效果是不是很棒。
再多的函数也有不够用的时候或不合习惯的时候,例如正弦函数Math.sin(弧度),这里的角是以弧度为单位的,不合我们的习惯。为了适合我们的习惯,你可以定义一个直接输入度数的正弦函数sinD()。在时间轴的第一帧按F9,打开动作编辑窗,在专家模式中输入下面语句:
function sinD(d) { //表示构造一个名为sinD()的函数
return Math.sin(d*Math.PI/180)// Return表示当函数调用时会返回一个值,Math.PI是一个常数π
}
trace(sinD(30))
输出窗口中是不是0.5?当然你也可以试验trace(Math.sin (30)),结果不会是0.5。
第3个15分钟 if条件
以前读书上劳动课时,老师喜欢说男生扫地,女生擦桌子。只要你是本班的学生你就知道是扫地还是擦桌子。这实际上就是一个条件判断,可以做如下的流程演示:
a=本班的学生
a是男生吗?
是,就扫地。
不是,就擦桌子。
上面的流程我们可以这样理解,先声明变量a,并给它赋值本班的学生。然后再进行判断。如果用AS的“黑话”来表示就是下面的形式,不过这些只是为了便于理解,不要直接拿去试验。
a=本班的学生
if (a是男生) {
扫地
} else {
擦桌子
}
从上面的语句我们不难看出if后的括号内是条件,如果满足这个条件,就执行下面的语句。否则就执行else后面的语句。当然这并不是说if后面就一定要有else。如果条件为假时不需要执行语句,就不必跟else。不管如何,一个if一对大括号{},一个else也要一对大括号{},一个else if还是一对大括号{}。这个规定切记。下面给出条件判断的几种形式:
if(条件表达式) {
执行语句
}
if(条件表达式){
执行语句
} else {
执行语句
}
if (条件表达式){
执行语句
} else if (条件表达式) {
执行语句
} else if (条件表达式) {
执行语句
}
条件表达式应该是一个能被判断真假的语句。它返回的值是一个布尔型的变量。例如声明变量a=4,如果用a>5作为条件表达式,那返回的值是false,肯定执行else后面的语句,没有else,就不会执行if内的语句。看了这么多,现在我们就用它来做一个游戏轻松轻松:
打开Flash,并新建一个文件,然后按Ctrl+F8,在出现的对话框中确选“按钮”,确定后,创建一个按钮。按钮上写上“碰碰运气”,回到场景1中,并打开库,把刚才创建的按钮拖入舞台上。只选择按钮,打开动作编辑器,输入下面的代码:
on(release){//如果在标准模式下输入,前面的语句会自动添加;专家模式需手工输入。它只表示单//击按钮,然后执行写在按钮内的AS脚本。
a=random(2) //声明变量a,随机函数random(2)产生0和1两个数值
if (a==0) {
trace(“你今天的运气不错!”)
} else {
trace(“你今天的运气真差,不过没关系,还有明天!”)
}
}
测试影片,单击一下按钮,运气还好吧。如果你还嫌不过瘾,不妨多来点条件判断。
on(release){
a=random(4)
if (a==0) {
trace(“你太棒了!”)
} else if (a==1) {
trace(“你一定会成功的!”)
} else if (a==2) {
trace(“一时失意没关系,只要努力!”)
} else if (a==3) {
trace(“你一定会成功的!”)
}
}
测试影片,单击几次按钮,变化是不是多了?
条件判断非常有用的,例如你可以思考下面的问题:
如何实现登陆用户的验证?
为了简单起见,场景中只用一个输入文本和一个登陆按钮。AS脚本写在按钮内。提示一下:获取输入文本中的内容用:实例名称.text。注意实例名称和text之间要有一个点。
第4个15分钟 switch条件
一般来说解决一个问题会有多种方法。根据条件判断执行语句我们还有一条语句。那就是switch条件。这条语句我曾一度回避,总认为有If何必麻烦switch,况且字母那么多,又难记。直到在写一个计算器的代码时,才发现用switch思路清晰多了。
switch使用方法如下:
switch ( number) {
case number可能取的值:
break
}
number应是一个数值型的变量,在每一个条件执行完后最好加上break跳出来,以防继续执行下去。因为没有break,switch会忽略条件判断。你不妨分别试验下面的语句:
a=random(3)
switch (a) {
case 0:
trace(“你太棒了!”)
case 1:
trace(“你一定会成功的!”)
case 2:
trace(“一时失意没关系,只要努力!”)
}
a=random(3)
switch (a) {
case 0:
trace(“你太棒了!”)
break
case 1:
trace(“你一定会成功的!”)
break
case 2:
trace(“一时失意没关系,只要努力!”)
break
}
另外还需注意“case number可能取的值:”后面的冒号。没有冒号会产生错误。如果会产生case判断的其它情况,请在后面加上“default:”。 怎么没有人发表意见
页:
[1]