3780096 2003-11-11 20:21
[原创]如果你对AS一点都不了解,请进来,
在下在这里发此贴,目的在于帮助更多的朋友尽早的进入AS的学习,本人水平很差,错误不少,请各位大侠指教,批评,文档纯属于自己编写,主要是写写自己入门的感受
同时也相信,你如果对AS太不了解,认真看看,肯定有用。如有疑问,尽全力回答
<br><br>
[align=right][color=#000066][此贴子已经被作者于2003-11-11 18:31:31编辑过][/color][/align]
3780096 2003-11-11 20:25
初识AS
AS是Action Script的缩写,它是一种编程语言,首先我们不要对它有畏惧感,我们先来学习一个控制住影片循环自动播放。以此为我们正式进入AS做个序。
做一个很简单的移动动画,比如,做一个圆移动的MC(MovieClip)(影片剪辑的意思)选中要使动画停在的这一桢,(注意啦,选中的这一桢必须要是关键桢才行,)打开动作面板,在空白文档中输入stop();于是在这一桢上立即产生一个α,于是,你成功了。按Ctrl+Enter试试,哦!原来是如此的简单,但是,不要高兴,我们学一样,要善于去思考,多从你能想到实验的去实验一下
于是我们可以这样想:AS,我们在这一桢设置了AS,AS就好象是执行命令的一个警察,他站在那里,只要你走到他面前,他就会忠实的执行他应当执行的任务,这个简单的AS的任务是什么呢?就是“停”,当还没有走到他面前时为什么不会命令停住呢?因为还没有走到他的地盘上,他没有这个权利,书上常这样说,一触发它,它就执行了,
现在我们好好的来温习一下今天的内容,进行以下练习
1、 在场景中做几个图片移动的动画,是那种移动了一幅,第二幅,三幅…跟着来的那种,试着在前面,中间。后面的不同位置的关键桢上设置stop();
2、 同样做MC也是第一幅,第二幅…….同样照练习1中设置stop();然后将MC拖入场景中
哦!差点忘了,为什么stop 后面还有一个();没有可以吗?答案是否定的,为什么?说“停”那么停在哪里呢?用括号来表示,括号里面输入数字,数字是几,就停在几桢,没有数字,就停在自己本桢,这里你不必去实验了,实验了也不行,后面我们要说,总之,stop(); 包含了两层含义一、停 二、具体停在那里。没有括号,它就不知道自己停在那里,那么它就干脆不执行命令,必须要有()就好象是我们在有是通用两位数记数一样,2就要写成02,因为计算机是很规范的,好了,最后,如果你对AS面板不熟的话,去好好熟悉一下,这个我就不讲了,然后进入我们的正式学习。
[upload=fla]viewfile.asp?ID=72711[/upload]
3780096 2003-11-11 20:28
二、三种AS
我说的三种AS是什么意思呢,是指一、写在桢上的AS二、写在MC上的AS 三、写在按纽上的AS,
先学写在按纽上的AS
(一)初步接触
比如有这么一段代码,(又叫脚本,又叫程序)
on(press){
gotoAndPlay(1)
}
什么意思?on是按纽事件,press是按下的意思。GotoAndPlay是转到并播放的意思,连起来,是按下鼠标,就转到并播放第一桢
听懂了意思,不会做,又等于成为理论,现在我们用以上源文件做一个按纽,
做一个图片移动的简单动画
新建按纽符号,将符号拖入场景放在新的一层
点选按纽,打开动作面板,在面板上输入以上语句
按Ctrl+Enter试
你又成功了,好!我们停下来再稍微理论一下
写在按纽上的AS的格式是on(事件){要执行的代码}我们必须按照这个格式写,因为电脑在这方面就不如人那么灵活了,一句话有多种方式表达,而电脑就要按照它的要求。现在你也知道了括号中的数字的作用了吧,为什么序言中的stop后面的括号中加数字是错误的呢,因为没有转到并播放的命令,那么只有在本桢停而不能在其他桢停,而现在是转到并播放,具体转到那里播放,你就可以随便设定了,
记住:写在按纽上的AS的格式是on(事件){要执行的代码}
现在我们进行以下练习来进行巩固
1、 在场景中做几个图片运动完一个又来一个的动画,试一试,做几个按纽,分别造成点击后在不同的桢播放
2、 把按纽做在最后一桢,使你原来的那种循环不停的MTV能点击后才重放
[upload=fla]viewfile.asp?ID=72712[/upload]
<br><br>
[align=right][color=#000066][此贴子已经被作者于2003-11-11 17:34:10编辑过][/color][/align]
3780096 2003-11-11 20:31
(二)进一步研究
现在我们来实现这样的效果,几个按钮,点击某个,就播放某个所连接的MC,如同象浏览网页一样的,方法是多种多样的,现在我们来学习一种,其余的就要靠朋友们慢慢去领会了,
1、 做三个MC,每个MC的第一桢都添stop()
2、 做三个按纽符号后回到场景,将三个MC分别放在第一层的一、二、三桢,给每一桢加stop(),再给每个MC取实例名,(如何取?点选MC,打开属性面板,在影片剪辑下的框中输入就是了,输入什么符号,随便,比如分别是a、 b 、 c、
3、 将三个按纽拖入场景,放在第二层的第一桢
4、 选中第一个按纽,打开AS面板,输入
on(press,release){
gotoAndStop(1)
_root.a.play();
}
同样给第二个按纽添
on(press,release){
gotoAndStop(2)
_root.b.play();
}
同样给第三个按纽添
on(press,release){
gotoAndStop(3)
_root.c.play();
}
5、 按shint+enter试试
结合上面的例子。我们来说说相关的语法,
首先,我们进一步巩固写在AS上的脚本格式on(事件){要执行的代码}
其次,三个时间轴上的MC都写上了stop(),这个停止命令,是告诉不能自动播放,因为每一桢上放的不是一桢的内容,它包含了很多桢的内容,放的是一个影片剪辑,要播放哪个MC要得到指示后才播放,否则不加stop()那么就与三张图片在闪动没有两样,
再次,设置了每个MC的事例名,为什么要设置事例名呢?这里还要说说有关路径的问题,这个语法要执行的命令是
{
gotoAndStop(3)
_root.c.play();
}
跳转并停止在第三桢,播放根时间轴上的影片a,root表示根时间轴,_root.c.说明了影片c 的绝对路径,关于路径是什么意思?路径就是通过什么道路找到目标的意思,表达方式是用操作符号 “.”来表示,比如天安门的路径是
地球.亚洲.中国.北京.天安门,这样进行一级比一级更小的搜索到天安门,同样“跟时间轴.C影片剪辑,”只是这个更简单而已,学会了简单的,才会掌握复杂的,好了,关于路径还有相对路径,限于自己的水平今后再说
现在我们应当知道为什么要给MC取事例名了吧,没有事例名,就找不到播放什么,就无法执行命令,
但也要注意,点操作符表示的不光是路径,它还表示调用一个对象的属性和方法,比如 这里的stop()就是方法,播放的意思 。
好了,你想要的简单的交互现在就能实现了
今后我们还将进一步的讨论
[upload=fla]viewfile.asp?ID=72714[/upload]
3780096 2003-11-11 20:37
[em12]
地道的菜鸟教程啊,今后在慢慢说些
3780096 2003-11-12 01:31
朋友如果你觉得这个帖子对你有用的话,顶一下吧,否则我会不好意思的,如果真的对刚接触AS的朋友没有用的话,我就不打算写在这里了,浪费了版主的空间,
就是批评一下也好啊!
laiy.net 2003-11-12 01:35
支持~~~~继续写
想1978 2003-11-12 01:59
对于我这些初学者来说真的有用啊!支支持!以后给写.
joojooo 2003-11-12 02:49
好贴,顶~希望楼主继续!!!!
<br>
g16345 2003-11-12 03:00
当然要写,虽然老手们都看似简单的东西,但是新手还是很多的,学FLASH的人正越来越多,我们新手很需要这些,请继续
lsylove 2003-11-12 03:08
这些东西简直太重要了,希望这位仁兄继续写..
小角色闪客 2003-11-12 03:18
就差一点,加上图就好了~~~
紫霞狼 2003-11-12 03:33
<br><br><br>
[align=right][color=#000066][此贴子已经被laiy.net于2003-11-12 14:11:31编辑过][/color][/align]
g16345 2003-11-12 03:36
兄弟我在线等你发,我看上瘾啦!!!
g16345 2003-11-12 03:38
我晕,13楼兄弟,你发的那个东东不用AS就轻松能作出来吧...
紫霞狼 2003-11-12 03:41
<br><br><br><br><br><br>
[align=right][color=#000066][此贴子已经被laiy.net于2003-11-12 14:15:15编辑过][/color][/align]
qq70145 2003-11-12 03:55
爱S你了!^^支持!!!!
3780096 2003-11-12 03:59
(三)再进一步研究
我想,任何质变都是量变积累所爆发的结果,记得闪吧里的“红烧带鱼”版主曾给我说过这么一句话,“也许你要做很多遍,也许要一年,积累,积累再积累,当一定的时候,你就“爆发”了”。是的,如果看了这些贴,有用,不妨多反复,进行一些小的变化的实验,这里我再说说关于按纽事件
on(事件){要执行的代码} 只对按纽有效,这样的处理句柄还有on(releaseOutside){ } on(rollover){ } on(rollout){ } on(dragOver)等等,这些可以去查查资料,现在我们可以实验一下,这种语句对按纽有效,对MC无效,
1、 做一个按纽符号
2、 拖入场景,在40桢插入关键桢,点第一桢,创建补间动画
于是就完成了一个活动的按纽的制作
选中按纽,添加
on(rollOver){ //当鼠标进入按纽
_root.stop(); //停止
}
on(rollOut){ //当鼠标离开按纽
_root.play(); //播放
}
于是我们就做了一个类似有些电影网页的宣传影片的那种方式,让滚动的图片停下来
为了更加深入的掌握按纽事件对按纽才有效,最好实验一下,印象深刻,而且有些实验,能触发自己其他方面的感受,做个什么实验呢,做一个MC拖入场景,设置同样的命令,看结果怎样
望高手指正啊!同时也要后来者批判接受啊!
[upload=fla]viewfile.asp?ID=72804[/upload]
qq70145 2003-11-12 04:00
[quote][b][/quote]
<br><br>
[align=right][color=#000066][此贴子已经被laiy.net于2003-11-12 14:15:45编辑过][/color][/align]
3780096 2003-11-12 06:18
(最后)办个总结,今后就讨论MC事件了
以上我们讨论了(1)最简单的在桢上加stop命令,(2)如何实现点击按纽就播放根据AS命令的桢。和MC,(3)也涉及了绝对路径的问题,(_root)补充一下,如果我们在MC的编辑环境中对某一桢用上这样的语句:gotoAndPlay(2)
那么当时间轴走到这里的时候,就要听从命令,转到并播放第二桢,如果在桢上写gotoAndPlay("scene1"1)那么就转到第一场景第一桢开始播放,当然,第一场景的名字要为 secne1 才行,好了,不罗嗦了,今天我们要做一个包括上面的所有知识的AS命令,我们要做什么,还是先看看这个文件再说
[upload=swf]viewfile.asp?ID=72821[/upload]
<br><br>
[align=right][color=#000066][此贴子已经被作者于2003-11-12 12:43:52编辑过][/color][/align]
3780096 2003-11-12 06:21
看清楚了吧!这个是MC嵌套MC,还要嵌套MC,由大到小是:(1)大球运动同时摆动同时小球跳动,(2)大球带着小球摆动,同时小球跳动,(3)小球跳动 ,先说清楚怎么做的,再来分析道理,呵呵,请高手不要笑话呵,我们是等同于小学生在互相帮助
1、制作两个图形,一个大圆一个小圆,
2、制作一个MC,把大圆、小圆拖入场景分别放在一、二层,做成小圆在大圆上跳动,在第一桢加stop() 在最后桢加gotoAndPlay(2),为什么要加,目的是为了避免在场景中自动播放(我们要让它听从命令播放)在最后一桢加gotoAndPlay(2)是为了使它又能受到指令后持续播放
3、 做MC1,将刚才做的MC拖入MC1编辑环境,为这个MC命事例名为mc1,把mc1做成左右摆动的动画,同样照第二步加AS命令,道理是一样的
4、 做MC2,把MC1拖进MC2编辑环境,为MC1取事例名为mc2,把MC2做成按照引导线运动,照前面步骤添加AS命令
5、 做MC3,将MC2拖入场景,为它命事例名为mc3
6、 做三个按纽,回到场景,将按纽拖入场景放在第二层,放好位置
7、 为按纽添加AS为第一个按纽添加
on (press, release) {
gotoAndPlay(1);
_root.mc3.mc2.mc1.play();
}
为第二个按纽添加
on (press, release) {
gotoAndPlay(1);
_root.mc3.mc2.play();
}
为第三个按纽添加
on (press, release) {
gotoAndPlay(1);
_root.mc3.play();
}
这里就着说一下路径,以第一个按纽的AS为例,意思是点击释放,释放的是什么呢,gotoAndPlay(1),哦,转到并停止在第一桢,当然只有在第一桢了,因为只有一桢,但第一桢里面有三个MC啊,究竟播放什么呢?是全部一起播放呢,还是只播放其中的某一个呢?因为我们在做的时候每个MC都必须要得到指令才允许播放啊,好!下面又来
_root.mc3.mc2.mc1.play();对!_root出现了,说明应该要去找播放什么了,哦!是播放MC3里的MC2里的MC1好,这就如同是MC3(中国)MC2(北京)MC1(天安门),看来能顺利的找到,找到了,play()(执行命令-——播放!)
好了,我写了这么多,等于我把自己的知识系统了一下,感谢朋友们的支持!谢谢!
[upload=fla]viewfile.asp?ID=72826[/upload]
0312 2003-11-12 06:25
小伙子好好有耐心..........
<br>
其实我觉得你这是在惯他们,这些基础应该叫他们自己摸索,不是自己摸索出来的很容易忘的.
基础不扎实做不出好作品的
Zuva 2003-11-12 06:30
这么好的帖子,顶呀。辛苦了。[upload=gif]uploadfile/2003111122304173905.gi
3780096 2003-11-12 06:34
楼上的哥说的不错,我不是自己摸索,也无法这样系统的写,不过,我发现进入AS很难,我吃尽了苦头,当初进闪吧之前做个停止的都做不来,几乎失去信心,目前才弄清楚一些基本的规律,我想只要他们愿意看,写写也无妨,帮帮他人,系统自己,而且我也是闪吧的受利者,无所谓的,呵呵!
joojooo 2003-11-12 06:43
支持楼上的 问个问题 如果我有2个MC和2个按钮 a和b 我想让鼠标经过按钮的时候播放a 鼠标移出的时候播放b 是不是除了开头改成on rollover; on rollout 其他都和你的第2个教程一样呢? on(rollover){
gotoAndStop(1)
_root.a.play();
}
on(rollout){
gotoAndStop(2)
_root.b.play();
}
<br><br>
3780096 2003-11-12 07:02
对,答案是肯定的!
sunnylu 2003-11-12 07:16
真是很好的AC教程,辛苦了3780096,谢谢,只有这样交流才有质的进步.
孤雁鸿飞 2003-11-12 07:27
同意!!!什么东西都是由浅到深的,一步一步学会的。我顶!
也请版主能删除紫霞狼的贴子。
laiy.net 2003-11-12 07:31
紫霞狼下不为例,各位早点休息乐
孤雁鸿飞 2003-11-12 07:34
!!!还有下次!!晕!!!
3780096 2003-11-12 08:08
象我等的菜鸟,如果你看了以上的教程,试试看,想办法独立完成这个的制作,[upload=swf]viewfile.asp?ID=72868[/upload]
<br>
3780096 2003-11-12 08:12
呵呵,说明一下,当鼠标点击按纽事,播放按纽事件,如果鼠标再次经过按纽,就停止该按纽响应的事件,有兴趣做做,
闻鸡起舞 2003-11-12 13:41
不错,我也很喜欢的,希望多发一些,辛苦了
闻鸡起舞 2003-11-12 13:43
多多益善~
davidguo 2003-11-12 15:59
晕!
13楼的兄弟,你怎么这样啊,还真是会坑人啊!
我开始学习了 2003-11-12 22:08
[B][B][quote][b]以下是引用[i]紫霞狼在2003-11-11 19:41:51[/i]的发言:[/b]
[color=#DC143C]已编辑,谢谢[/color][/quote]
[B]大家不要点这个连接,是恶意的,要求删掉,要不是不准骂人,我早开火了,请版主能删除紫霞狼的贴子。[/B]
<br>
fxg245 2003-11-12 23:21
真是不错啊!大力支持!!
3780096 2003-11-13 03:32
版主,把紫狼霞的帖子删了吧,有很多朋友不小心就进入了,多少会造成一些麻烦的
水园小仙子 2003-11-13 05:58
好东东,顶一下~~~~~~``
joojooo 2003-11-13 06:30
这是第3个MC嵌套 楼主帮忙PP=。=[upload=swf]viewfile.asp?ID=73132[/upload]
山峰 2003-11-13 21:18
继续写!好
3780096 2003-11-13 21:29
感谢朋友们的大力支持,昨天就写了一个,关于m c事件的,原因,我时时把自己放在刚接触AS的角度,总感觉到不太妥当,于是今晚才能发一个上来了,还望朋友门多多批评
joojooo 2003-11-13 21:31
我有个问题捏,第3个MC嵌套好象有点地方不对 当3个按纽都按过之后再按其中任何一个就都没反应了-0-
紫霞狼 2003-11-13 21:51
真是好笑,那个SWF文件,我只是想请教下楼主是用什么AS实现滴,居然说成恶意的了,楼主怕是不晓得吧?我的叶子并无木马,病毒.何来恶意?
3780096 2003-11-13 21:54
[quote][b]以下是引用[i]joojooo在2003-11-13 13:31:12[/i]的发言:[/b]
我有个问题捏,第3个MC嵌套好象有点地方不对 当3个按纽都按过之后再按其中任何一个就都没反应了-0-
[/quote]是的,你做的与我前面讲的是一样的效果,只设置了使MC动作,没有设定如何使它停止,只是在每个按纽的语句中添加一些语句就行了,依你的水平,你一定能做到
寄生幻想 2003-11-13 23:05
交流一下下。
我做了一个 “MC” ,隶属于一个 “按钮” 的“经过时” 事件。就是说,当鼠标经过这个按钮的时候,MC发生事件。可是我这个隶属与按钮的经过性 “MC” 做的很大,当鼠标经过“内在”的MC而不是按钮本身时,事件也发生了,怎么只让经过按钮的时候发生事件?
3780096 2003-11-13 23:28
不太明白你说的意思。把源文件发上来,也许大家能给你解决
joojooo 2003-11-13 23:56
利用第2个教程做的换背景图-0-[upload=swf]viewfile.asp?ID=73326[/upload] 同时问一下。。。这中间有2个按纽 我想做成当背景为按纽1时 按纽2有效而按纽1无效 有什么办法吗
<br>
3780096 2003-11-14 00:09
这个不知到,你可以不把按纽放在一层的一桢上,当点击按纽后,哪个你想要它无效的按纽就不出现了,达到你要的效果
3780096 2003-11-14 02:27
写在MC上的AS,
我在最初学习AS时,简直还弄不清楚AS写的地方,甚至连别人的都看不懂,对于初学一定要把这个简单的问题弄清楚:写在按纽上的AS只有触发了按纽后就执行;写在桢上的AS当时间轴走到这桢时就触发执行;写在MC上的AS当时间轴走到这个MC时就自动执行,如果与鼠标相关,鼠标触发就执行。你知道这一点之后,你就会很快的知道别人的源文件的AS写在什么地方了。
写在MC上的AS与写在按纽上的AS很相近,但不相同,为了让初学朋友看看写在mc上的语句,我们先看看这个例子
onClipEvent(enterFrame){
_rotation-=10
}
可以用这个使圆转动例子来说明,1、做一个圆的MC 2、拖进场景后,选中MC,(注意,选中MC,不是选中桢,)3、在动作面板上写以上语句,看看这个圆是否转动,
呵呵,是转动了吧!高兴!但是马上你就会凉下心来,为什么?自己只能照着别人的做,所谓编程,好象是可望不可及的事,
于是我们需要理解它,要知道为什么,首先,加在MC上的AS基本结构是
onClipEvent(事件){想要实现的命令}
上面的例子,中的事件是enterFrame是“导入载”就是要导入大括号中的命令,(关于事件还有加载load 、卸载unload、等等,可以去查查资料,或者看看帮助)大括号中是什么命令呢? _rotation是旋转的意思,
如果学到这里就说好了,好了!学会了,不行!为什么?初学嘛,就是有很多不懂的,试问:rotation前面有一个短线,是什么,知道吗?不知道,就要研究,哦!原来这种加短线的是MC对象的预定义属性,就是将要定义这个圆的旋转属性,因为旋转怎样旋转啊?有旋转速度,有旋转方向。那么,=号左边的负号又是什么呢?为了知道,干脆把它改成正号试试,你就自己知道了,10又是什么,你又把它改一下,同样你自己也知道了,最后理论升级:这些叫做参数
如果又说学会了,还是不行!这只叫做理解了,知识的建立是知识点~理解~应用,要应用啊?别忘了,好的,又回来,这个预定义属性还有哪些呢?有MC的横纵坐标,还有MC的透明度等,听说倒不如动手,再在你做的这个圆MC的动作面板里继续写在_rotation-=10下面,_x=? _y=?
alpha=?把这些一起放在大括号里,试试!哈哈,自己是不是有点好象是在编程一样的感觉了呢?
继续努力,想:如果用鼠标去控制它旋转又将如何办,比如我们做到鼠标一经过它它就旋转,不要来不来就把问题提到论坛里去,要利用自己的知识去看是否解决的到,如果我在这里和前面
说的所有你都知道的话,你一定能独立完成的!(如果没人要这个,我就不发上来了,因为发上来容易让人不动脑筋的)
以上是最简单的了,高手们不要笑话,多批评,多鼓励,我本身是超级菜鸟一只,只是一个不怕麻烦的人)
在这里发这样的教程是为了让更多的人不要被挡在AS这个大门外。众所周知,不学点AS,不可能把FLASH学好!
巴乔忧郁王子 2003-11-14 02:32
请问楼主怎么达到你是说的哪个效果啊!
就是鼠标再次移过去球就停了
3780096 2003-11-14 02:40
on (rollOver) {
_root.mc3.mc2.mc1.stop();
}
呵呵,就这么简单,把以上语句接着按纽的语句写就是了
巴乔忧郁王子 2003-11-14 02:49
我早试了,但没用,不知道什么地方错了
巴乔忧郁王子 2003-11-14 02:54
on (press, release) {
gotoAndPlay(1);
_root.mc3.mc2.mc1.play();
}
on (rollOver) {
_root.cm3.cm2.cm1.stop();
}
是这样写对吗???
3780096 2003-11-14 03:02
[upload=fla]viewfile.asp?ID=73351[/upload]
巴乔忧郁王子 2003-11-14 03:20
晕!刚才把mc打成cm了
巴乔忧郁王子 2003-11-14 03:23
请问如果要点击按钮才停该怎么班啊?麻烦楼主了
3780096 2003-11-14 03:26
呵呵press
joojooo 2003-11-14 04:33
哇 才一会没来又有新的啦 好呦~
<br>