flash_as入门教程

  • 格式:doc
  • 大小:213.50 KB
  • 文档页数:19

322班 Flahs 之ActionScript 讲义郴州师范 雷勇第一章 ActionScript 的基本常识前面我们已经初步学习了FLASH 的基本动画制作方法。

而接下来的ActionScript (简称AS )是Flash 非常重要也比较有难度的组成部分。

首先我们来学习如何在FLASH 输入AS 程序。

通常我们按F9可以调出动作面板。

或者在FLASH 菜单Window 里面Actions 可打开ACTION 面板,ACTION 面板分右面的脚本窗,和左面的工具窗 脚本窗就是放脚本的地方,而工具窗用于快速地输入各种ACTION ,运算符,函数,属性,对象。

建议大家使用专家模式,在FLASH 菜单的Edit 的Preferences 的Actions panel 里面选Expert Mode ,以后每次打开ACTION 面板都会自动设置为专家模式(专家模式可直接输入代码,初学者学下去就会知道,很多代码无法在普通模式里输入)AS 的一些概念所有代码都需存于某个地方,可以是frame (帧), button (按钮), or movie clip (电影夹子或叫影片剪辑,简称MC )。

只要你选择了某按钮或MC ,你之后输入的代码就存放在它的上面了,注意此时ACTION 面板上方提示为Object Actions 。

同理你也可以将代码存放于帧,不过此时提示为Frame Actions 。

当你在专家模式的时候仍无法输入代码,你首先要检查你是否选择了frame, button, 或MC 来存放代码。

首先我们要了解AS 要写在什么地方,什么时候AS 会被触发执行。

1、帧:写在关键帧上面的AS ,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS 就被触发执行了。

常见的例子有在影片结尾的帧写上 stop() 等。

操作方法就是点选关键帧,然后打开AS 面板,写下”stop()”。

2、按钮:不同于帧上面的AS ,按钮上面的AS 是要有触发条件的。

做一个按钮,放到主场景,点选按钮,然后打开AS 面板。

现在如果也在按钮上写 stop(); 那么,输出的时候就会提示错误。

正确的应该这样写 on(release) { stop();}这里要比帧的动画多这些代码: on(release){} , 整个代码翻译过来就是: 当(松开){停止} ()里的代码表示鼠标的触发事件事件之一,这里用的是 release 松开,按钮的常用事件: release 松开 releaseOutside 在按钮外面松开press 按下 rollOver 鼠标进入按钮的感应区 rollOut 鼠标离开按钮的感应区 现在很明确了:写在按钮上面的AS 一定就是这种格式的: on(事件){要执行的代码} 3、MC(影片剪辑) –MovieClip 的简称如果你看懂了上面的内容,那么写在MC 上面的AS 和写在按钮上的大同小异。

操作方法就是点选MC ,然后打开AS 面板。

看个例子 ( )里的代码同样表示一个事件。

MC 的事件有下面这些:load 载入,当MC 出现的时候执行。

也就是除非卸载这个MC ,否则load 事件内的代码只执行一次 unload 卸载,当MC 卸载的时候执行enterFrame 存在的每个帧。

在MC 存在的每个帧都要执行一次代码。

只要这个MC 存在于场景,代码就反复执行。

通常可用于循环。

举例:如果你在场景中放置一个小球MC ,那么在球上写代码mouseDown mouseMove 移动鼠标,只要移动鼠标就执行代码 mouseUp 松开鼠标同样你要明确:写在MC 上的代码一定总是这种格式:看到这里,如果你明白的写在 帧、按钮、MC 上的代码有什么不一样,任务就算完成了 。

第二章 AS 对象篇学会用绝对路径和相对路径表达对象虽然AS 不是真正的面向对象的编程,但是它也有对象的概念。

这个概念贯穿整个AS 的始终,所以,对对象的理解,比对语法或者其他的理解更为重要。

现在开始吧:首先,我们来了解一下路径,路径分两种:绝对路径和相对路径。

做过html 的朋友应该知道这个概念。

但这里还是要详细解释一下,对路径的理解要深入。

在讲路径之前,有必要先讲一下 .语法 : 举例说明,这里要表示房间里的桌子上的一本书,用 .语法这么表示:房间.桌子.书 如果要再细到书上的页上面的字,很显然是: 房间.桌子.书.页面.字看明白了吧?我也不懂得怎么说, .语法就是这样表示对象的,点的前面是其后面的父级。

如房间是桌子的父级,桌子的子级就是书。

还是不明白?这样吧,你把 . 里写成“里面的”就可以了,这样就是:房间(里面的)桌子(里面的)书(里面的)页面(里面的)字 。

现在开始说路径了,其中也要夹杂的对象的说明,看:从例子入手。

创建一个MovieClip,MC 命名为“MC”,放在主场景里面,然后再做一个按钮,放在“MC”里面,分别给MC 实例和按钮实例命名(Instance Name , 注意是实例名不是MC 的名字):MC->myMC ,button->myBtn现在我们假设主场景(AS 中表示为_root )是房子,MC 是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下图: _root 房子 _root.myMc 房子.桌子 _root.myMc.myBtn 房子.桌子.书这里的 _root 是Flash 的关键字,表示主场景的 Timeline (时间线)。

这里的房子,桌子,书 都是我们要理解的“对象”。

找到这个对象后,才能对对象进行操作,施加方法。

如:我现在要打扫房子,打扫是方法,但对象是房子,表达式是这样 :房子.打扫() 如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了。

*说明:这里为什么要在打扫后面加( )呢?因为打扫是方法不是对象,为了让Flash 知道这是个方法,我们必须加上(),要不然它会以为房子里面有“打扫”这个东西。

现在,我们可以很容易的对房间里面的各个东西进行操作,如 房子.打扫(); 房子.木桌子.整理(); 房子.玻璃桌子.打碎(); 房子.书桌.书.看();等等,相信你把它们"翻译"成AS 代码没什么问题吧 比如要主场景停止播放,就是 _root.stop(); 要MC 停止播放,就是 _root.myMc.stop();以上的写法是绝对路径。

现在说说相对路径。

还是上面的例子。

假如给你下了一个命令:修理房子里面的红色的椅子。

那么怎么表达呢? 就是: 房子.红色椅子.修理()但是如果命令式写在红色椅子上,那么命令可以写成:这张椅子. 修理();这就是相对路径,换成代码是:this.修理()。

换过来用Flash 实例说明。

现在我想让主场景下的一个带动画的电影剪辑 myMC 在一开始就不要播放,而是先停止。

那么你有什么办法呢? 办法之一可能就是使用绝对路径,在主场景放入这个MC 的那个帧写上:_root.myMc.stop(); 这个是对的。

但是一旦 myMc 的名字一变,你就得跟着改这句话了。

有没有办法不管这个“MC”的实例名不管怎么改,都会被我们同样一句的AS 找到?当然可以,就是把AS 写在这个MC 上。

选中Mc , 在 AS 面板上写这里的this 也是Flash 的关键字 , 这个 this 就是指这个MC 本身 .现在不管你这个MC 放在哪里,命名是什么,反正肯定会停下来。

为什么,因为AS 在MC 上。

如果你在这里写上 _root.stop(); 那就错了。

为什么?仔细想想。

另外的一个关键字就是 _parent 。

如果你理解了 this , 那么 _parent 并不难理解。

举例: 还是哪个假设: 房子(_root)、 桌子、 书,他们的关系是: 房子.桌子.书选中桌子,在桌子上写代码:写onClipEvent(enterFrame){ _parent.打扫();} 意思就是打扫房间; <注:也可以双击桌子MC 进入编辑状态,在其内部帧上写AS :_parent.打扫();作用一样> 选中书,在书上写代码:写onClipEvent(enterFrame){ _parent.打扫();} 意思就是打扫桌子。

_parent 也就是父级。

桌子的 _parent 就是房子的 timeline(时间线) , 书的 _parent 也就是 桌子。

点的后面对象的 _parent 就是点前面的对象。

第三章 AS 语法篇首先要强调的是:AS 语法的大小写是敏感的。

如: gotoAndPlay() 正确,写成 gotoAndplay() 错误。

关键字的拼写必须和语法一致,要做到很容易,因为在Flash的AS面板里面,关键字会有不一样的颜色显示。

这里说一下,我们要从开始就养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释。

注释的例子//这个是注释,但是只能有一行/* 这个也是注释,可以写很多行 */接下来,介绍几个类型的语法。

1、几个常用的控制场景的方法,如play(); //让时间轴的指针播放stop(); //停止时间轴的指针在程序触发时候的那个帧gotoAndPlay(); //让指针跳转到某个帧,然后继续播放gotoAndStop(); //让指针跳转到某个帧,停止在那个帧nextFrame(); //往下走一帧 prevFrame(); //往前走一帧这些都是方法。

方法?解:打个比方,我们管吃饭叫作一种方法,用来解决肚子饿这个问题。

我们管stop()叫做一种方法,用来解决时间轴指针停下来的问题。

我们管上面的几个东西叫方法,用来解决时间轴指针运动的问题。

2、控制属性的语法有很多,我列几个_x, _y, _alpha,_width,_name,.....等等属性,这些都是属性属性?解:打个比方。

我们管你的身高叫做属性,用来标识你的高度。

我们管你的体重叫属性,用来标识你的质量。

我们管 _x 叫属性,用来标识目标的X轴坐标。

我们管_alpha叫属性,用来标识目标的透明度.......3、其他方法和自己定义的方法。

除了系统自带的一些方法外,也可以自定义一些方法,用Function定义。

回顾一下,今次要大家记住的东西:AS 语法的大小写是敏感的、方法的概念、属性的概念。

第四章:怎样写AS程序要牢记的是,学习编程是一个过程(process)而不是一个事件(event)。

如果你第一次学习到的时候不能照着完成也不必担心。

关于计算机语言:编程语言是用来发指令给电脑,由电脑接受信息并执行命令编程语言也有词汇表和文法,如人类的语言类似通过编程语言我们可以告诉电脑去做什么,也可以从他那获得信息关于语法和逻辑:学习编程的思想比学习一种语言的语法重要假设FLASH是懂我们语言的单词的,我们对FLASH说:“Flash, 让一个球在屏幕里面弹来弹去吧”FLASH会什么都做不了,FLASH要我们用他的世界懂的东西,例如:movie clips, buttons, frames,来描述它要做的事那我们再说一次:“Flash, 让一个名字叫ball_one的movie clip在屏幕里面弹来弹去吧”我们已经用MC这个FLASH懂的东西来描述了,但FLASH还是什么都不做,因为它需要更多的信息:*这个球有多大*它放在哪里?*一开始它首先往哪个方向运动?*它初始的速度是多少*它在哪里弹来弹去呢?*弹来弹去要持续多久呢?看来我们需要有逻辑结构地告诉FLASH它应该怎么去做1、一个球指的是一个叫ball_one的圆形MC,直径50像素2、弹来弹去的地方就是场景,边550像素,高400像素。