五颜六色论坛 -> 网站建设 -> [转贴]一步一步学ActionScript 2.0 登录 -> 注册 -> 回复主题 -> 发表主题

心碎一地 2005-01-19 14:17

作者:redspider         转自:http://jinjunshi.blogchina.com/

1、ActionScript 2.0能做什么?

[学习目标]:知道ActionScript 2.0是做什么用的就可以了:)
随着FLASHMX2004的发布,Macromedia公司推出了一种新的脚本类型语言ActionScript 2.0, Macromedia Flash MX 2004 和 Flash MX Professional 2004 是具有专业水准的动画创作工具,结合ActionScript 2.0您可以开发出与用户的交互的web产品。


一、ActionScript 2.0是什么?
ActionScript 2.0我们简称为as2。翻译成中文呢就是"动作脚本"的意思。通俗的讲就是通过编程手段利用一系列的代码来控制FLASH的动画效果。
 二、不学as2可以吗?
 如果你只是做一些简单的动画是不需要用一种新的脚本语言的,其实有许多项目是不需要脚本语言的。或者是知道几个简单的动作如:play(),stop(),gotoAndStop(),也可以做出很漂亮的动画。但如果你是一名开发人员,在开发一些比较复杂的项目,AS1就显得有些力不从心。
 三、用类比的方法去学习
 学任何新东西,最好的方法去跟自己过去掌握的知识去类比,这样理解的容易了。那ActionScript 2.0象什么呢?如果你学过c语言,在语法结构是类似c;学过c++,那它跟c++更神似,新引入了class、interface、extends 和 implements 等关键字,使它更接近您熟悉的面向对象的编程。如果你对web编程比较熟悉,在as2中您将发现许多熟知的语法,AS2象JAVA、JSCRIPT.NET和javascript 2.0,因为AS2的语言基础来自于ECMASCRIPT EDITION 4。有了过去的编程基础,学习也就是个过渡的问题了:)
 四、看看ActionScript的发展吧
 Flash 3开始,ActionScript 就开始出现,当时的ActionScript还非常简陋,功能也仅仅局限于控制动画的播放等动作。等到Flash 4的推出,ActionScript的功能被进一步完善。基本实现了相应各种事件、控制动画行为、和后台交换数据的功能。但是其编程风格仍停留在面向过程的阶段,尽管也有对象的概念,但是非常模糊。在Flash 5中,ActionScript 出现了翻天覆地的变化,基本语法都经过了改写,有点和JavaScript类似,风格也从面向过程转变到了面向对象,提供了自定义的函数以及新增了强大的数学函数、颜色、声音以及XML等对象的支持。使得编程更加得心应手,能够做出更多酷炫的效果,和用户的交互也得到了进一步的提高。 Flash MX推出之后,它的ActionScript以Flash 5的ActionScript为基础,整个语法体系以及编程风格、界面都没有做很大的改动,只是在某些函数、对象的实现上做了扩充,新增了一些方法,提供了更为强大的对象支持。lash MX 2004对ActionScript再次进行了全面改进,2.0版横空出世,ActionScript终于发展成为真正意义上的专业级的编程语言。
知道了ActionScript 2.0的底细,就明白自己在干什么了。哈哈......

参考:
1、Macromedia Flash MX 2004动作脚本参考指南
2、Macromedia Flash MX 2004 动作脚本字典

心碎一地 2005-01-19 14:20
[学习目标]:认识一下ActionScript,知道ActionScript的组成。
通过上节课我们知道了as就是些指令的集合,完成对影片的控制,下面我就看看AS是什么样子的,知道了它的样子,我们就可以比着瓢画瓢,然后进一步的比着葫芦画瓢,最后我们就扔了葫芦一样的画瓢了,嘿嘿,我们会做到的。


现在给大家个问题:做一个"模拟画正弦曲线"的动画。
您会想到我用遮罩来完成,是可以的,如果画一个真正符合y=sin(α)的曲线还真难:(
用as就简单了。下面我们开始:
①新建flash文档,属性设置为:大小500X400,背景色为白色。
②打开动作面板,把下面的代码复制到第一桢。
QUOTE:
//设初始值;
var x = 10;
//创建一个空的影片剪辑mcs;
_root.createEmptyMovieClip("mcs", 1);
//让mcs移动到(100,200)的位置;
_root.mcs.moveTo(100, 200);
//设置线条的粗细、颜色及透明度;
_root.mcs.lineStyle(2, 0x000000, 100);
//这个函数的作用是画出图形;
_root.mcs.onEnterFrame = function() {
//画线;
     this.lineTo(x+100, -(100*Math.sin(0.02*x)-200));
     if (x<500) {
           x += 5;
     }
}

③然后ctrl+enter测试,看到慢慢画出的正弦曲线了吧!
我们没有手工指挥做任何的演员,一样导演了这个动画,但幕后的导演是你呀:) 你发布了指令,flash就执行了你的导演意图。
现在让我们仔细的看上面的代码,体会下as程序的构成,我们看到的多是些英文单词,不要奇怪,如果这个软件是你开发的,你发的指令就会用汉字了,谁让我们用的是洋鬼子开发的东西呢,当然flash听懂的是洋话了(玩笑)。
我们可以得2个结论:
一、as从上至下一行行的去写
上面的代码我们可以这样理解:初始化-创建个演员-让演员站好位置-准备好笔-在演员身上画线-反复的画,这个过程就好象我们做菜的菜谱,所以我们利用as做动画,自己要先做个这样的规划,官话叫"算法"。我们不去理那东西。
二、每行有各种组成"元素"
这些组成元素都有自己的名字和规则。比方说关键字、语法格式等等,了解这些基本知识是学习Flash的一个最基本的步骤。
①注释   ActionScript中的注释仅仅供开发者做一些注记,并不当作程序的正式组成部分。flash是不理合这些注记的,也就给自己看的,知道这段或者这句是做什么的等等。单行的注释用//开头,比如我们上面的用"//画线";多行注释用/*开头,*/结尾。
②语句   ActionScript中每个完整的语句以分号";"结束,执行某项特定的操作,比如上面的代码_root.mcs.moveTo(100, 200);就是让名字mcs的演员站到点(100, 200)上。
③关键字   关键字是ActionScript的"个人财产",进行程序设计时,在变量、函数等用户自定义的元素命名时必须加以"避讳"。例如root就是一个关键字,那么我们就不能将给一个演员取名字叫root,否则程序就会被你搞得晕头转向,不知道你想让谁干什么了 。
④变量   你可以理解成一个放东西的"容器",我们在需要保存一些数据就要声明一个,比如上面的x,我们声明var x = 10;并且里面放了个数字10。
⑤运算符   运算符好理解,含义基本和我们小学学的一样,就是写法上个别不同,包括=、〈、〉、+、-、*等等。
⑥点(.)   这个小点(".")功能可太强大了,别看它不起眼,用的却非常频繁,我们可以这样理解这个(.):××"中的"××。它的作用通常两个。第一,用来定位, 如_root.mcs就是根影片级别上的一个演员mcs。第二、用来访问对象的属性、调用对象方法等。
⑦类   这个概念更抽象,就象个"黑匣子",今后详细介绍,比如我们这里的math就是个类。
⑧函数   你可以理解为完成特定任务的一段代码,有系统提供的你可以直接调用,比如上面的sin函数,也可以自己定义了,上面的画线就是自己定义的了。
说了很多,大家糊涂了吧,没有什么的,上面的代码不要求你看懂,现在你知道2点就可以了,as程序是一行行的;有各种"元素"组成。这样就算你学会了这节内容,你看学as很容易吧。:)

心碎一地 2005-01-19 14:22
[学习目标]:学会flash的动作面板的使用。
在教程二中我们给大家简单的看看了as代码的结构,知道as有若干"元素"构成的,下面我们看看as的编辑环境,下图就是ActionScript的编辑器,就是我们看到的动作面板了。


一、ActionScript的编辑器的打开
如果你看不到上面的动作面板,很简单的,在Flash MX 2004中打开菜单"窗口-〉开发面板-〉动作"就打开了ActionScript编辑器。直接按按功能键F9更方便的,(高手都是这样,喜欢快捷键的,我不是的)。
二、仔细的看看面板上有什么?
常用的我都在图上标出来了,大家自己试验下,就明白每个部分是做什么的了。
1、脚本中的关键词、属性、方法等等英文单词记不住,该怎么办呢?
as为我们想的很周到的,我们可以通过多种方法完成代码录入。
①动作工具箱:
选中你需要的双击,代码就跑到了编辑区去了,并且还给你了提示,知道其他的部分如何填写了,在这里好象我们是在做选择题一样,很简单吧。
②向脚本添加项目工具:
就是那个大大的"+"号,下拉的菜单列出你需要的项目元素,你看这里跟动作工具箱一样的,类型为我们分的很细的。
③学会利用好"."符号:
恰当的利用"."符号,可以触发代码提示。那什么是恰当呢?
第一、取名字加后缀的技巧
给as中的"元素"取名字时加特殊的后缀,这样你在录入名字后再打一个"."后面你选择就可以了。比如我们新建了一个元件属于影片剪辑类型,我们就可以给它取个名字mymc_mc,我们在as中调用这个影片剪辑的实例,改变它的一些外观属性,在写代码时,名字后面跟着打".",提示出现了,关键是后缀"_mc"的功劳呀。关于这些名字的问题后面我们会讲。
第二、定义变量说明类型
元素类型as可以自动识别。比如声音、颜色、按钮、文本等等。我们下面定义一个放声音的"容器"
var MyMp3:Sound=new Sound() ;现在输入MyMp3.你看见了提示吧,关键是我们这里多个:Sound,你去掉就不可以自动提示了:(
  ④学会用"("
在你输入一些函数时,后面打出左括号,将会有一个提示窗口显示出来,列出这个函数所需要的参数,这样你就不会搞错了。
2、写的代码,版面不美观,一个字"乱",我怎么处理?
as编辑器,可以给你排版的,点下"自动套用格式"工具就解决了。
3、写的代码有没有错误?
"检查语法"工具,比你一行行的自己看代码方便的。
4、写代码,不明白的地方到那里找老师问?
求"帮助",去点"脚本参考"工具好了,它给你的欣喜比一个好老师还要多,关键是要有耐心去看呀。
5、多个地方都写了代码,我怎么去找?
这个容易的,去"脚本导航器"栏看看,想修改那个点那个了。
这个编辑器的功能太多了,主要的给大家说了,关键是大家多练,练多了就找到使用的技巧了。
总结一下,这节,你知道2点就可以,一、能看见动作面板。二、知道面板上的工具做什么的,就算你看懂教程了。

心碎一地 2005-01-19 14:24
[学习目标]:要通过自己的练习,知道在什么地方我们可以添加脚本。
如果大家已经熟悉了动作面板的各个功能,现在最关心的是在我们当导演做动画时,在什么地方放我们写的脚本是最合理的呢?
可以简单的一句话概括"谁能触发脚本运行,就加在谁身上。"话是土了点,也是为了好理解吧,下面我们细细的来说这个问题。
一、as的放置位置
在Flash的元素中有两类"元素"可以"携带"as,分别是时间轴上的关键桢和特定的元件。
1、时间轴的关键桢
你可以把脚本加在时间轴的任何一个关键桢上(注意必须是关键桢),根据我们过去做动画的经验,每个场景都有时间轴,每个场景呢也都有若干个图层, 对于元件也有关键桢,这些地方只要有关键桢我们都可以加脚本,但这里要大家养成一个习惯,把脚本独立的放在一个层中,这个层什么元件都不放,就是个脚本的载体,这样你在今后脚本的修改就方便了。看下图这样就可以。
2、特定的元件
关于元件这个概念我就是不多说,你就把它想成你导演的作品中的"演员"吧,这里加了个特定,就是说在三类元件中,把"图形元件"排除掉,"图形元件"不可以加载脚本,所以在影片剪辑,按钮元件上我们都可以加的,不过,这2个元件触发脚本的"事件"不一样的。

(插图)

  二、as的形式 
as的组织形式有二种吧。
1、代码片段 :它们"散乱"的分布在不同的关键桢、影片剪辑、按钮上。
2、代码文件 :就是代码独立的以一个文件的形式出现,文件扩展名是.as,如果你在什么地方需要,就用"#include"包含你的脚本文件,比如这样:#include "[path] filename.as",这样代码可以重复利用了,在这里特殊点的就是的类 ,也是独立的as文件,它的导人不是这样的,这个在这里说明下,后面我们会详细介绍的。
这部分你要知道as放2个位置呀。

心碎一地 2005-01-19 14:27
[学习目标]:通过简单的例子,反复练习play、gotoAndPlay、stop的使用,真正理解什么地方可以添加as。
在教程四我们知道有具体的3个地方可以加载as,那就是关键桢、影片剪辑和按钮,现在我们通过具体的例子真正去做一做。
 

我们做动画时如果按时间的顺序安排"演员"的表演,靠的也只有时间轴上播放头的定位。具体情况呢就是"停、播、到某桢停,到某桢播",或者相对的说"上一桢,下一桢,上一场景,下一场景"。
对于这些时间轴上的定位,as早给我们准备了现成的"指令",就是函数吧,对应下面几个:
1、Stop():是暂停当前动画的播放。
2、Play():暂停动画,继续播放。播完从头再播。
3、gotoAndPlay([scene,] frame):到[某场景的]某桢再开始播。
4、gotoAndStop([scene],frame):到[某场景的]某桢暂停动画。
5、nextFrame():播放下一帧,并停在下一帧。
6、prevFrame():播放前一帧,并停在前一帧。
7、nextScene():进入下一场景。
8、prevScene():进入前一场景。
很重要的说明:
①字母大小写不能变,as2特殊呀,区分大小写。
②[scene],frame这里是条件,也就是参数,scene指场景,可以省略,所以用了[],省略了表示当前场景。frame代表桢,其取值有2种情况,一是具体的桢值为数字,二是"标签",那值就是字符串了,就必须用""括起来。
基础讲完了,现在开始练习用这些函数。
动画要求:用按钮控制园和方的运动。
步骤:
1、建立三个元件圆、方和三角,这个就是我们指挥的3个演员,其中三角是旋转的影片剪辑。
2、新建图层,名字"圆的运动",分别在1、49桢插入关键桢,放置圆元件,建立运动动画。
3、新建图层,名字"方的运动",分别在50、100桢插入关键桢,放置方元件,建立运动动画。
4、新建图层,名字"三角",在1桢插入关键桢,放置三角元件。
5、打开公共库-按钮,拖出5个不同的按钮,放在五个新建图层。分别命名为play,stop,next,prev,gotoplay
6、新建图层,名字"ActionScript",在第1桢插入关键桢,加动作脚本"stop();", 目的就是开始是静止的,等着我们去控制。
7、在图层"圆的运动",第49桢加动作脚本"stop()'"。
8、在图层play按钮上,加动作脚本: 
on (release) {
    play();
}

9、在图层stop按钮上,加动作脚本: 
on (release) {
    stop();
}

10、在图层next按钮上,加动作脚本: 
on (release) {
    nextFrame();
}

11、在图层frev按钮上,加动作脚本: 
on (release) {
    prevFrame();
}

12、在图层gotoPlay按钮上,加动作脚本: 
on (release) {
    gotoAndPlay(50);
}
13、在图层"三角"上,为影片剪辑加动作脚本
onClipEvent (mouseDown) {
    stop();
}

在这里你不熟悉的就是on (release),理解成当鼠标指针经过按钮时释放鼠标按钮就做......,还有onClipEvent (mouseDown)就是当按下鼠标左键时做......,后面我们要详细的介绍。
这个例子好好的体会的是2点,一是放的位置,二是8个定位播放头的"指令"。反复的去练。到自己懂了停止。

(插图位置)

源码:

心碎一地 2005-01-19 14:32
[学习目标]:掌握取名字的技巧,知道那些名字是最好的,那些名字是非法的。
在教程四和五我们告诉大家一个问题:as可以放在关键桢,按钮,影片剪辑,并且通过实例让大家去练习,虽然有个别的代码大家不明白,但你放心,我们是一步一步的学呀,教程还要大家掌握时间轴的控制,也就是桢的播、停、前进、后退,相信大家都理解了,就是几个常见的单词组合啊:)
动作脚本就是通过一条条的语句创建、控制我们动画中的"演员",要完成这些操作,我们必须知道"控制"的对象是谁,或者是叫什么的"元素",所以创建和使用他们,名字很关键。
取好的名字,是我们想做的,那什么是好的名字呢,这个需要了解一定的"规则"

判断一个好名字的标准是是否能够以最少的字符提供更多的信息。在as中,我们需要命名的东西是非常非常的多,比如一个按钮、一个电影剪辑的实例、一个文本实例、一个变量,一个函数,一个类,都必须命名。
一、可以做名字的字符
共四类:字母、数字、下划线(_) 、美元记号 ($)。
特别要求:名字的第一个字符只有其中的三类是可以的字母、下划线(_) 、美元记号 ($),也就是数字放在开始不合法的,比如,你做了个影片剪辑是个3朵玫瑰花,你命名为3rose就是错的,你可以这样命名rose_3_mc。
二、加个后缀是个好习惯

支持自动代码提示所需的后缀:

--------------------------------------------------------------------------------
对象类型 后缀
--------------------------------------------------------------------------------

Array _array
按钮 _btn
摄像头 _cam
Color _color
ContextMenu _cm
TextField _txt
ContextMenuItem _cmi
Camera _cam
日期 _date
TextFormat _fmt
Error _err
LoadVars _lv
LocalConnection _lc
麦克风 _mic
MovieClip _mc
NetStream _ns
PrintJob _pj
NetConnection   _nc
SharedObject _so
Sound _sound
String  _str
Video _video
XML _xml
XMLSocket _xmlsocket
XMLNode _xmlnode

如果你定义一个名称时,可以参考上面的类型,加个对应的后缀,这样你录入代码就简单了,可以获得更好的提示,减少了你的麻烦了吧。
三、区分大小写
as2对于名字的字符是区别大小写的,千万注意这个问题。比如,Mymc、mymc是二个名字。
四、不要使用相同的名字。
无论是定义对象,还是场景里面MC的实例,或是标签等等都不能相同。减少不必要的麻烦。
五、不要使用as系统有的名字。
as系统占用的一些单词是不可以用的,象关键字、类名、属性、过程名,比如:class、break、for,play等等。
上面我们介绍了命名的时候大家需要注意的几点,今后在应用中再取掌握。本节大家应该学会如何命名了吧。

心碎一地 2005-01-19 14:36
[学习目标]: 理解事件、动作、对象、函数的概念。真正的掌握按钮上的八大事件的具体对应的操作行为。
这两天比较忙,没有来的及写教程,回顾下教程六,我们就学了一个最基础的东西:"取名字"。官话讲"标识符"=名字了。现在我们知道把脚本放在谁那里了,那么脚本是怎么起作用的呢,也就是怎么去运行呢,运行你的脚本是需要触发才执行的,好比,你做好了各式各样的礼花,没有时机去引燃,你是看不到的。as需要的就是"事件"了,下面我们就看看按钮专注的"事件"。

在as里"软件或硬件发生的事情"就叫事件。假设我们用flash做个mp3播放器,其中必须有个"单击播放按钮开始唱某个歌曲"操作。在操作中,"单击"就是事件,这个"事件"触发了播放具体的某个歌曲这个"动作",其中,按钮,歌曲,都是我们控制的"对象",完成这个操作,在按钮上用了一个"函数"on()。
接二连三我们接触好多个概念,大家可能糊涂了,没有什么的,慢慢的理解。
①"事件":发生的事情。可以是系统内部的,可以是用户自己的。比如我写着教程,"没有烟抽了",就是个事件。
 ②"动作":动作是在播放 SWF 文件时指示 SWF 文件执行某些任务的语句。例如,gotoAndStop() 将播放头放置到特定的帧或标签。就是一条的语句不吧。比如我没有烟抽,"喊儿子上街去买包",就是动作了。
③"对象":就是你想操作东西。按钮就是个对象。不过它是抽象的。比如,"我"、"烟"、"儿子"都是对象。
④"实例":具体的对象。比如"人"是对象。"张三"就是"人"的一个实例。
⑤"函数":把一条的指令集合起来,完成一个特定的动作。比如on()函数。
有些概念在这里大家知道就可以,今后我们还会具体的讲。
从上面的知识可以看出,"事件"特别特别的重要,有"事件"发生才可以产生"动作",我们的脚本才没有白写。
  在as中,我们知道三个地方加as,那当然在这个三个地方都会有事件产生。下面我们就看按钮上的"事件",他们是通过函数on完成的。
  on(mouseEvent) {
    // 此处是您的语句
    }
这里的mouseEvent叫参数,就是前提条件,具体的就是我们下面的"八大事件":
1、press:一个简单的鼠标点击事件可以被分为两个过程:鼠标按下(press)和鼠标放开(release)。当鼠标移动到一个按纽的可点击区域里并点击该按纽时,Press事件发生,这适用于按纽作为开关的场合。
2、release:在鼠标指针经过按钮时释放鼠标按钮。
3、releaseOutside:当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。
4、rollOver鼠标指针滑过按钮。
5、rollOut鼠标指针滑出按钮区域
6、dragOver在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮,再滑回此按钮。这是一个很有用的事件,可以用在很多场合,如游戏,以及购物车等。
7、dragOut在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮区域。
8、keyPress ("key") 按下键盘上指定的键。这个特殊呀,不是鼠标是键盘了:), 今后我们再介绍它。
下面我们就做个flash好好的体会下这前7个鼠标上的事件。
[要求]:通过按钮上的不同事件,显示当前事件的介绍。
[步骤]:
1、新建flash文档。
2、从按钮库中拖出7个你喜欢的按钮放在新建的7个图层中。
3、新建图层,上面放个动态文本,变量对应:mouse_txt。
4、布局看下图。

(贴图位置)

5、在每个按钮上分别添加as。格式类似:
  on(mouseEvent) {
    mouse_txt="具体介绍的内容";
    }
  注意每个按钮的mouseEvent对应不同的事件 。你可以下载源代码仔细看看,主要目的是用鼠标练习,真正掌握,什么时候需要对应的各种事件。

flashpan 2005-02-02 20:10
恩,很好,支持!

ericwyls 2005-05-29 01:34
好东西,还没时间研究,
做下一步计划吧.

wincro 2005-06-13 15:59
好东西

西米 2008-03-30 03:38
接触不久,机器慢的不行,只能用mtasc编译。

deserts 2008-03-30 03:48
QUOTE:
引用第10楼西米2008-03-30 03:38发表的:
接触不久,机器慢的不行,只能用mtasc编译。

也不错啊

cl030531231 2008-04-02 14:32
九州互联是域名注册商及主机提供/服务商。九州互联坚持以“优质的服务,合理的价格”赢得了广大客户的赞誉!
在同等服务下,我们承诺让您拥有全国最低的代理价格,使您在市场中更具竞争力!
.com/net国际域名注册45元/年. com.cn/cn/net.cn/org.cn国内域名注册1元/年,更多空间优惠,详情请登录www.9cnnic.com, 九州互联平台的价格表www.9cnnic.com/help/price.asp。或者 QQ:969985874(详聊). 电话总机:025-86805200或025-86805210转8009,传真025-52829423-8018. 公司地址:南京市宁南大道310号雨花软件园A幢5层.期待与您合作。


查看完整版本: [-- [转贴]一步一步学ActionScript 2.0 --] [-- top --]


[ 五颜六色论坛 ]

Powered by PHPWind 5.0.1 © 2005 苏ICP备05001866号 5y6s.net
Time 0.041451 second(s),query:4 Gzip enabled