当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash AS 3.0入门教程:初识AS 3.0

Flash动画制作
巧用超级解霸在Flash V5.0中插入录像
教你用Flash MX来制作简单的课件界面
Flash MX 2004 ActionScript图文教程(二)
Flash MX 2004 ActionScript图文教程(三)
Flash MX 2004 ActionScript图文教程(四)
Flash MX 2004 ActionScript图文教程(五)
Flash MX 2004 ActionScript图文教程(六)
flash场景之间相互跳转的实现方法
Flash本地加密
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash5 画任意直线教程
Flash MX 视频导入功能详解
制作飞舞的蝴蝶
Flash MX 2004 ActionScript图文教程(七)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(十)
Flash教程 飞翔的文字
Flash MX 2004 ActionScript图文教程(十一)
制作Flash网站技巧拾零

Flash动画制作 中的 Flash AS 3.0入门教程:初识AS 3.0


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 134 ::
收藏到网摘: n/a

失望,以为要说点啥,原来是这么小儿科的问题。没办法,我说过了,本文不适合AS高手阅读的。为了更好地理解,我们还是用例子来说明。现在,就让我们一起来回顾一下,在AS2中我们都会把代码写在什么地方。我们在AS2中建一新文档,新建一个影片剪辑元件取名为bt,元件很简单,随便画一个方块就行,你说我偏要画一个园,那当然随你高兴罗,我没意见。然后,在场景中,用文字工具建一文本框,设为动态文本框,实例名称命名为:text1,将元件bt从库中拖到舞台上,实例名称命名为:bt_mc.现在写代码,想一想,代码写在什么地方,我们来做下面三个测试:

测试一:在帧动作中,直接写代码,点中第一层,第一帧,然后打开动作面板,在上面写到:
text1.text = "代码执行了“;
测试影片,OK,我们看到了”代码执行了“这几个字。

测试二:还在帧动作中写代码,将代码改为:
bt_mc.onPress = function() {
text1.text = "代码执行了“;
}
测试影片,当我们点击,元件bt_mc时,又看到了“代码执行了”几个字。

测试三:好象还可以把代码写到元件上,清除帧动作中的代码,点中bt_mc,打开动作面板,写下如下代码:
on(press){
_root.text1.text = "代码执行了“;
}
测试影片,点击bt_mc又看到了“代码执行了”几个字。

它怎么老是执行了呢,真是的。

下面我们在AS3中,作相同的测试:

测试一、在测试影片时,我们还是看到了那几个字,它都又执行了。
那AS3和AS2不是一样的?你还写个啥子劲?是哈,整了半天AS3和AS2整成一样的了。在“不到黄河心不死”的精神鼓舞下,我们还是把剩下的两个测试做完。

测试二、在测试影片时,哈哈,出错了,为我们出错喝彩吧(有病!),出错了,说明AS3与AS2还是不一样,那么本文就还可以写下去了。

测试三、当我们点中bt_mc,然后打开动作面板时,我们看到的是:
“无法将动作应用于当前所选内容”
真是过分,它连测试的机会都不给你。

好了,测试做完了,所谓实践出真知,通过测试,我们可以得出如下结论:
在AS2中,我们可以把代码写在帧动作中,也可以写在影片剪辑、按钮等元件上。
在AS3中,我们只能把代码写在帧动作中。(当然也可以写在.as等外部文件中,然后将它导入进来)。

二、AS3中的事件侦听

看到这里,聪明的你一定会说,在AS3中做上面的测试二时,代码是写在帧动作中的啊,为什么会出错呢?是啊,正因为有你的聪明,才使本文可以继续写下去啊。

在AS2中我们在让程序响应一个事件,比如鼠标单击,我们可以在帧动作中这样写:
事件对象.onPress = function() { 语句}

在AS3中,就不能这样写了,所以上面的测试二就出错了。

在AS3中,你必须先声明一个函数,其中包含你要执行的语句,然后用事件对象来侦听事件并调用这个函数,这将用到事件侦听语句:addEventListener

无论何时编写事件侦听器代码,该代码都会采用以下基本结构(以粗体显示的元素是占位符,您将针对具体情况对其进行填写):
function eventResponse(eventObject:EventType):void
(函数名称) (事件类型)
{
// 此处是为响应事件而执行的动作。
}
eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);
(事件对象) (事件类型.名称 函数名称)

我想还是用测试二,来说明好理解一些:
在AS3中,将测试二中帧动作代码改为:
function test(event:MouseEvent):void //先声明一个函数test,其中包含了要执行的代码。
{
text1.text = "代码执行了";
}
bt_mc.addEventListener(MouseEvent.CLICK,test) //然后,用bt_mc元件来侦听事件,并调用test
测试影片,哈哈,代码它终于执行了。

上述代码中的事件类型是:鼠标事件(MouseEvent),事件名称是:单击(CLICK)。

你又要说话了,“这不是更麻烦吗?”,是有点麻烦哈,不过据说是更规范,更利于代码维护,不过不管你愿不愿意,你要用AS3你就得这么写。

三、添加显示对象

这一节,来说说显示对象。显示对象?啥玩眼,你不是说不用专业术语吗?这个简单,你在舞台上能看到的东西就叫显示对象。你说显示对象是咋个到舞台上去的呢?你傻哦,当然是放上去的啰。那它是咋个放上去的呢?当然是用鼠标放上去麻。那只有用鼠标才能放上去吗?那不一定,我还以用attachMovie从库里头加载一个,我也可以用duplicateMovieClip复制一个,高兴了,我还可以用代码画一个,我还可以用loadMovie导入一个外部文件。你耐我何?真的吗?你敢不敢试一下吗?试就试,谁怕谁?

先试attachMovie:在AS3中在帧动作中写如下代码:
attachMovie ("bt","bt1",1)
测试影片,出错了。我们知道,这在AS2中是不会出错的,而且会将库中的“bt"元件,加载一个到舞台上。

还在那写文章,要加载库里的元件,必须要在元件的链接属性中为元件指定标识符,这一步你都不晓得?是哈,咋把这一步给忘了,赶紧去设置,在库中,bt原件上单击右键,点链接,选中“ActionSpript导出“,再看”标示符“那一栏,不能用!你能干,你来设麻。

其实,在AS3中根本就没有attachMovie这一说。
现在试一下:duplicateMovieClip:将代码改为:
duplicateMovieClip ("bt_mc","bt1",1)
bt1._x = 300;
测试影片,又出错了。同样的,AS3中也没有duplicateMovieClip这一说。

画一个?画麻:将代码改为:

1. createEmptyMovieClip("bt1",0);
2. with (bt1) {
3. beginFill(0xFF0000);
4. moveTo(100,0);
5. lineTo(200,100);
6. lineTo(0,100);
7. lineTo(100,0)
8. endFill();
9. }

测试影片,还是出错了。而这几句代码在AS2中会画出一个红色的三角形。
在AS3中,加载一个显示对象,必须用new关键字来构造,要在舞台上看到它,还必须用addChild()将它加到显示列表中才行。

还是来做个实例吧,我们将库中的bt元件,加载到舞台上:
首先我们在库中,在bt元件上,点右键-链接,选中,“为ActionScript导出“,这时”类“和”基类“两栏均变为可用。这样,就在flash.display.MovieClip类中创建了一个”bt"类。点击确定,在接下弹出的对话框中,再点确定,就行了。
现在我们可以在代码中加载bt了
var bt1:bt = new(bt); //声明一个新的bt类的实例,并用new()来构造它
this.addChild(bt1); //将bt1载到舞台
bt1.x =200;
bt1.y=300; //设置bt1的x,y值,注意在AS3中,x和y前而没有下划线了。
测试影片,bt已加载到舞台上了。

下面我们在AS3中画一个,代码这样写:
var bt1:MovieClip = new(MovieClip); //声明一个新的mc类bt1,并用new来构造它
bt1.graphics.lineStyle(2, 0x990000, .75);//使用bt1的graphics属性设置线条粗细,颜色,透明度

1. bt1.graphics.beginFill(0x00FF00);//以下的代码是用graphics画三角形。
2. bt1.graphics.moveTo(100,200);
3. bt1.graphics.lineTo(200,100);
4. bt1.graphics.lineTo(0,100);
5. bt1.graphics.lineTo(100,200);
6. this.addChild(bt1);

在AS3中,除了MovieClip类外,还可以用Shape、Sprite 类来绘图或加载显示对象,而且还要更节约系统资源一些。

加载外部显示对象,在AS3中,利用Loader类来加载外部对象;同样的也要先声明一个Loader类实例:

1. var loadpict:Loader = new(Loader);
2. var pictURLReq:URLRequest = new URLRequest(pictURL);//pictURL为外部文件的路径
3. loadpict.load(pictURLReq);
4. this.addChild(loadpict);

好了,暂时写这么多,如果想起了什么,再补充。