flash代码教程.docx
- 文档编号:12277775
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:22
- 大小:28.66KB
flash代码教程.docx
《flash代码教程.docx》由会员分享,可在线阅读,更多相关《flash代码教程.docx(22页珍藏版)》请在冰点文库上搜索。
flash代码教程
flash代码教程
第一课:
STOP(停止)
这是我们第一次接触到的语句。
学代码有以下几条注意事项:
第一条,你得把单词记住了,四个字母,一个也不能错。
要是字母写错了,那就全完了,我也帮不了你了。
第二条:
记住它的意思,这也非常重要。
一个单词,究竟是什么意思呀?
不知道怎么用,我也帮不了你了。
第三条:
在写代码的时候,要注意大写小写,不能乱写。
上面是标题,全部大写。
但写到程序里面去时,不是这个样子的哦。
第四条:
在使用的时候,标点符号也是有特定的要求的,也一点点不能错的。
今天我们学的STOP是停止的意思。
就像是马路上红灯亮了,紧急刹车。
我们知道:
在以前制作的小动画,当播放完了之后,会自动又从头放起,没完没了地一遍又一遍地放。
最好是让它播完后就停下来,让用户来决定是不是要从头放起。
那么,这个STOP就派上用处了。
在你的小动画的最后一帧上,写这个命令:
stop();
现在我们看到了,除了stop这个单词之外,后面有一个小括号,最后是一个分号。
这是必不可少的,你得记住了。
不要光写一个stop,后面什么都不写哦。
至于为什么要写小括号,为什么要写分号,这个留到下一课再讲吧。
好了,这样,你的小动画就再也不会没完没了的了,放到最后一帧就会停下来了。
你可以写上你的网名,让大家看清楚是谁创作的啦!
第二课:
gotoAndPlay(跳到某一帧继续运行)
怎么样?
有没有把你的小动画的最后一帧加上stop?
是不是很听话地停下来了?
体会到了代码的威力了吧。
好,我们来接着学习第二个语句:
gotoAndPlay();
在英语里,这是由四个单词构成的。
第一个是go,是去的意思,to是方向,and是和的意思,或说是并且。
play是大家熟悉的了,播放。
连起来的意思就是跳到某一帧去继续运行。
括号里一定要填上一个数字。
如果(10),就是跳到第十帧继续运行。
注意它的大小写。
这后面也有一个分号。
可以说:
代码的每一句的最后就是一个分号。
这个东西有什么用呢?
这好像是一个交通警,可以指挥FLASH的运行。
就像唱歌,有时,唱完一支歌之后,并不是再从头唱的,而是再唱一遍副歌。
假定一首歌有一百帧。
当唱到一百帧的时候,写上一句:
gotoAndPlay(80);
这就是重新回到第八十帧来唱,而不要回到歌曲的头一句来唱。
这就起到了指挥的作用。
这个容易理解吧。
那么,得寸进尺,我们再来学一个相近的命令:
gotoAndStop();
大家一定猜得出来,这个命令是跳到某一帧去停止,听候别的命令。
真聪明。
我再打个比方:
如赛跑,跑到终点或是某一点的时候,教练告诉运动员,你赶快到田径场等待别的比赛。
是停在田径场。
这个命令有两个用处:
一个是用于结束。
停在某一个帧上就结束了,可能这一帧是最漂亮的吧?
另一个用处是跳到某一个帧停在那儿,听候其它的命令。
例如:
一个小动画的第五十帧上写有
gotoAndStop(20);
这意思就是说,运行到了五十帧后,不要再运行五十一帧了,回到第二十帧停在那儿。
可能是听候别的命令,也可能是让别的人出场表演了。
好了,这一课学了两个命令了,有没有搞混呀?
顺便补充一句:
第一课中的stop();括号里是不用写数字的,而这一课的括号里必须写上数字,一定要回答这个问题:
跳到第几帧呀?
如果你不告诉,这个语句就是错的,无法执行!
你这个指挥官没当好。
第三课:
按钮上的控制代码
前两课,我们已经学了三个语句了。
记住了吗?
会用了吗?
stop比较简单,gotoAndPlay与gotoAndStop稍稍有点儿难。
就是那个小括号里面要加上数字。
以后我们还会讲到,小括号里不仅仅是写入数字那么简单,还会写上别的东西,还会更复杂一些。
现在为了便于记忆,先不说这些了。
这一课,我们要讲按钮上的控制代码,有点儿麻烦哦,可要用心听啊。
现在我们先来写一个最简单的按钮代码(注意,这些代码不是写在帧上面的,而是写在按钮上面的):
on(press){
stop();
}
凡是按钮代码,都是这个样子的。
别急,听我一句一句地解释。
先是一个on,意思是当什么什么的时候。
后面有一个小括号,小括号里面的press,意思是“按下”。
这一部分的意思就是:
“当按钮被按下的时候”,后面接下来是一个大括号。
大括号里的命令就是所要执行的。
这儿是停止。
就是说:
一个动画正在播放,不管它放到第几帧了,只要一按这个按钮,动画就停止住了。
如果我们这样写:
on(press){
gotoAndPlay(30);
}
那么,当一按下的时候,这个动画不管播放到第几帧了,它立即会跳到第三十帧开始继续播放。
按钮很厉害是不是?
现在我们换一个写法:
on(release){
gotoAndStop(69);
}
现在我们注意到:
小括号里写的不是press,而是release,这是什么意思?
这是“松开”的意思。
也就是说:
在用户按下(press)之后,还不执行,一定要等用户松开鼠标,才开始执行后面大括号里的命令。
这样给用户一个反悔的机会。
要是他不想松开而移走了鼠标,就不会执行。
一般我们用release比较多一些。
那么上一句的意思就是:
当用户按下按钮并松开鼠标的时候,就跳到第69帧停住。
好了,别说太多了。
这一课我们学到了按钮代码的写法,这像是一种公式化的东西。
在代码学习中,尤其要注意公式化,规范化。
可不要把大括号忘记掉了,有时写了前面的大括号,忘记写后面的大括号,或者把大括号的左右方向写错了。
我经常丢三拉四的,你可别学我哦!
记住这两个单词:
pressrelease
第四课:
StartDrag(拖动)
前面三课,我们学了几个单词啦?
学了几条语句啦?
可不要前学后忘,跟熊瞎子搿棒子似的呀!
其实,我们前面学到的,是最简单,最常用的了。
你已经可以做出很规范的MTV来了。
什么是规范的MTV呢?
就是网页一打开,就有一个画面。
而这个画面是停止的。
因为有时,用户还没有决定,究竟要不要往下看。
可能他这时有事要走开,去倒杯水啦,上趟卫生间啦,过一会儿来看;也可能他是看过的,不想继续往下看。
所以,最好是一打开是停止的。
所以,你一定是在第一帧上写了一句:
stop();你也正好趁此机会,在第一帧上来个简单的内容介绍,做做广告。
标题,
内容简介,作词作曲什么的,引起观众的兴趣。
然后,在画面的一角,出现一个漂亮的按钮,上写play。
让观众来按,这一按,影片就开始了。
这个按钮上,你一定是写上了:
on(release){
gotoAndPlay
(2);
}
到了影片结束了,让它停止。
在最后一帧写上stop。
这时,你又可以做广告了,动画制作人,QQ号,Email,谢谢观赏之类的。
这时,在画面上又出现了一个“重播”按钮。
如果观众想再看一遍,一按就又从头放了。
这个按钮上写的什么代码?
我不说了。
你一定能猜出来。
这些都是很亲切的很人性化的东西。
以人为本嘛。
这些就是规范化的了。
可以说,你学到了前三课,已经进入了一个新的阶段,祝贺你!
今天,我们要继续前进。
不让你有喘息的机会,嘿嘿!
在学习新课之前,先得解决新概念的问题。
我们知道:
符号有三种,一是图形、二是按钮、三是影片剪辑,即MovieClip,简称MC。
(以下我只提MC,也让我打字轻松点)。
MC是最有用的东西了,编写代码离不开MC。
因为它可以有实例名。
什么是实例名呢?
哇,问题太多了,这些书上全有详细的说明,我就不多说了。
我们还是先来举个例子吧。
先做一个MC,名叫:
s里面有一个圆。
然后到主场景,把这个圆拖出来。
(这就是MC的实例)。
点中这个圆,到属性栏,给它起个实例名,叫p。
(注意不要把MC的名字与它的实例名搞错了。
他们的关系好比是父亲与儿子的关系。
我们可以指挥儿子,不能指挥老子。
这一点千万拜托搞清,记得牢牢的。
)
现在我们做一个“开始拖动”按钮,在按钮上写:
on(press){
startDrag("p",true);
}
这一句就是今天我们要学的。
是“一按下就开始拖动”意思。
小括号里是两个参数,逗号前的是第一个参数,就是拖动什么东西?
这个p就是我们所要拖动的实例名。
假定在场景中有好多个实例名,你一定要指定是哪一个,用引号引起来。
逗号后是第二个参数,true在英语里是“真实的、对的”的意思。
放在这儿,是指一开始的时候,让这个实例在场景的中心。
这下我们知道怎么用鼠标来拖动一个东西了吧!
那么怎么把它放掉呢,老是粘在鼠标上总得放掉吧?
好的。
可以用这个语句:
stopDrag();
这个语句的括号里是没有参数的。
跟stop();相似,也是不用写入参数的。
而且这个语句跟startDrag();是一对儿,可以一起记。
现在我们在主场景中放上一个“结束拖动”按钮,写上:
on(press){
stopDrag();
}
意思是一按这个按钮,就放掉粘在鼠标上的东西。
好了,你做一下试试,体验一下以便加深记忆。
这一课非常重要,是进入第二阶段的基础。
第五课:
常量与变量
放心,这一节课,我们不学任何新的英语单词。
你可以花时间来背诵前面学过的单词与语句。
这节课,我们先来学习常量与变量。
什么是常量?
就是在程序中自始至终保持不变的数值。
常量分为三种:
一、数值型常量:
是具体的数值,可以用来计算的数。
如725、18等。
如用加法,则725加18等于743。
完全可以用数学方式来处理,如乘法、除法、减法,开方,平方等。
二、字符串型常量:
是不可计算的字符,如“abc”、如电话号码“8824517”(而不是八百八十二万四千五百一十七)。
字符串型常量一定要用引号。
字符串也可以用加法,不过,它只是把两个字符串连起来,如
“abc”+“8824517”=“abc8824517”
这好像是个汽车牌照了。
如果是字符串“725”加上字符串“18”,就成了“72518”,只是一个号码,而不是数值。
这一点一定要搞清楚。
当然,我们也可以用一种手段,根据需要,把数值变成电话号码,或者把纯数字的字符串,(如“8824517”)变成数值。
但含有英文字母或中国字的字符串则是无法互换的。
字符串只有加,不能进行减、乘、除及其它数学方式。
字符串还有一个操作符--连接操作符add。
如:
paddi
结果就是pi。
如果初始值i=5,尽管这是一个数值,我们也因有add的存在而把它看作是字符串,结果得出的是p5。
或者可以说:
add会自动把前后两个全部当作字符串而连接起来。
也就是说:
add只能连接两个字符。
这个add也会经常用到的。
三、逻辑型常量:
表示逻辑的真和假,只有两个值:
"true"(真)或是"false"(假)。
比如说:
太阳比地球大,这个值就是“true”,说地球比太阳大,这个值就是“false”。
在FLASH中,经常用来作出判断:
如果是“true”,就做什么动作;如果是“false”就做另外的动作。
这就是逻辑型的。
这三种常量经常要用到的。
我们一定要分辨清楚。
接下来说一说变量:
变量是用于存储可变数据的命名单元,可以用来记录一些在影片播放时改变了的值,或是计算某些条件是真还是假。
一般都是一些英文字词。
如你可以写:
a=0,i=1,sum=100,word="hello!
"。
但是有些单词是FLASH内部专用的,你不可以再用来当作变量名。
如:
if,goto,play,stop等等,当然也不能是true,false。
在首次定义一个变量时,最好赋给它一个已知的值,称为初始化变量。
初始化变量常常是在影片的第一帧进行。
对变量初始化使我们能够在播放影片时更容易跟踪和比较变量的值。
也就是说,一开始定义变量:
a=0,后来又让a再加上100,再后来,又让a除以10,最后这个a又要减去10,现在a是多少啦?
这就是变量,一直会变的。
也就是说:
变量,我们看到的是字母,而实际上,它是代表着前面所说的三种常量的。
一开始说这一课不学单词的,结果还是学了一个:
add。
第六课:
duplicateMovieClip(复制电影)
先欣赏一下下雨的小动画。
(下载源文件)
雨点是如何做的呢?
是做上几百个小雨点从空中落下来吗?
那不是太累啦!
这儿就用上了标题的这个让语句了,复制影片。
我们先来看看制作的方法与过程:
(//后面是说明与解释)
先做一个MC:
drop。
小细线,由上而下,在水面时变成一个扁圆水波放大后消失,最后一帧写上STOP。
共36帧。
然后,再做一个MC:
rain。
共两帧。
把drop拖入到场景中,实例名为drop1。
加一层代码层。
在第一帧写:
duplicateMovieClip("drop1",c,c);
//复制这个drop。
新名字为c,深度也是c。
setProperty(c,_x,random(400));
setProperty(c,_y,random(100)-100);
//设定复制品的坐标。
X随机,在0至399之间;Y随机,在-100至1之间。
第二帧写:
gotoAndPlay
(1);
//继续在不同的地方复制雨线。
这样就会不断地产生雨线了。
由于仅两帧,前面
的雨还没消失,后面的雨又复制出来了。
最后把这个MC:
rain拖到主场景就可以了,就这么简单。
这个语句小括号里有三个参数。
第一个是所要复制的影片的实例名。
注意:
这儿制作的MC的名字是drop,而实例名是drop1。
所以,第一个参数里写的是实例名。
不要搞错了。
这个容易混淆。
第二个参数是新的实例名,也就是复制品的实例名。
这里是c。
第三个参数是深度。
因为复制出来的东西,是分成层来显示的。
一个层只能放一个复制品。
如果几个复制品都放在同一个层,而且位置也一样的话,那么新的复制品就会把旧的复制品盖住了。
这里是c。
是随意起的。
这样就可以产生一个复制品了。
现在我们再来看以下的这两句:
setProperty(c,_x,random(400));
setProperty(c,_y,random(100)-100);
这个语句的意思是设定影片的属性。
它也有三个参数:
第一个参数是要设定的影片的名称。
这儿是c,就是复制品的名称。
第二个参数是属性的名称。
一个影片剪辑的属性有许多呢,如透明度(_alpha)、旋转角度(_rotation)、宽度(_width)等等。
它们的特点是都用下横杠线打头的。
这儿的第一句中_x是指x坐标;第二句中的_y是指y坐标。
就是要设定复制品的坐标。
第三个参数是属性值。
那么x的坐标值究竟设定为多少呢?
是
random(400)。
本来,这儿的x坐标也可以设为100,200,一个数字就行了。
但是因为我们下雨是随机的,所以设定为一个随机数。
这是一个随机数的表达式。
是随机产生一个小于400的数字。
即从0至399随机产生一个数。
y的值也是一个随机数。
产生的是从0至99中的一个数,再减去100,结果就是从-100到-1中的一个随机数。
通过这两句,就把复制品的坐标定下来了,它会出现在某一个地方。
随着不断地复制,不断地消失,这雨就下个不停了。
这一课学了两种很有用的语句,还学了一点MC的属性及随机数的知识。
内容比较多,好好消化哦。
上面的动画不是白看的哟!
第七课:
LoadMovie(载入外部影片)
我们如果要制作如电视中的画中画的效果,可以利用这个语句来载入另外的swf文件。
为了控制外来动画的位置,我们需要先制作一个空MC。
名为loadswf。
现在把这个MC拖入主场景,实例名为load。
现在我们看到在主场景中只是一个小圆点。
这个小圆点将会成为载入的影片的左上角。
因此,你要记下这个小圆点的XY坐标。
这样,你就可以知道:
将要载入的影片会出现在什么地方,如果不合适,就要把这个小圆点移动一下位置。
现在假定我要载入的SWF文件是jisuanqi.swf。
在主场景放上一个按钮,写上代码:
on(press){
loadMovie("jisuanqi.swf",_root.load);
}
//当按下按钮后,就载入外来动画给名为load的MC实例。
如果要变化一下影片的大小,实际上是变化了load的大小。
所以,可以再制一个按钮,写上代码是:
on(release){
setProperty("_root.load",_xscale,60);
setProperty("_root.load",_yscale,60);
}
//这是把这个MC缩小到百分之六十。
这里是设定MC的属性。
_xscale是指原MC的宽,60是百分比。
如果要移动MC的位置:
再加一个按钮,写上:
on(release){
setProperty("_root.load",_x,50);
setProperty("_root.load",_y,50);
}
//这是把MC从原来的坐标移动到XY都是五十的位置上,也就是说:
影片的左上角的位置是50,50。
如果要卸载的话,再制作一个按钮,写上代码:
on(release){
setProperty("_root.load",_xscale,100);
setProperty("_root.load",_yscale,100);
setProperty("_root.load",_x,250);
setProperty("_root.load",_y,50);
unloadMovie("_root.load");
}
//这里是在卸载之前,先把MC的一切复原,然后再用卸载语言,不然的话,下一次再载入就不一样了。
制作完毕后,保存为loadmv.swf。
这个文件一定要与外来动画jisuanqi.swf放在同一个目录中。
才能有效。
二、loadMovieNum("url",level[,variables])
描述:
函数;在播放原来加载的SWF文件的同时将SWF文件或JPEG文件加载到FlashPlayer中的某个级别。
首先我们可以看到该函数有3个参数:
url、target、variables。
其中,最后一个参数“variables”是一个可选参数。
1.参数url:
要加载的SWF文件或JPEG文件的绝对或相对URL(路径)。
该函数的此参数和上面loadMovie中的此参数用法完全一致,这里不再作解释。
2.参数level:
一个整数,指定SWF文件将加载到FlashPlayer中的哪个级别。
加载的时候,可以这样来写:
loadMovieNum("01.swf",1);
loadMovieNum("01.swf",2);
loadMovieNum("01.swf",3);
控制的时候,可以这样使用:
_level1._x=10;
_level2.aa._alpha=50;
_level3.aa.bb._width=110;
需要注意的的是,每一个级别只能同时存在一个SWF或JPEG文件。
如果两个SWF或JPEG文件的级别相同,那么后者将替换掉前者。
级别不同的_level,级别大的将覆盖掉级别小的,即:
数字大的将处于数字小的之上。
3.参数variables:
可选参数,指定发送变量所使用的HTTP方法。
该参数必须是字符串GET或POST。
如果没有要发送的变量,则省略此参数。
GET方法将变量追加到URL的末尾,它用于发送少量的变量。
POST方法在单独的HTTP标头中发送变量,它用于发送大量的变量。
三、loadMovie/loadMovieNum的定位
我想,也许这才是大家真正要找的东东:
)
1.loadMovie的定位
由于用loadMovie加载进来的SWF或JPEG文件,最后是放置于目标影片剪辑里的,所以我们完全可以像控制MC的_x和_y,来控制加载到的目标影片剪辑。
就好像我们在墙壁(_root)上挂上了一个相框(目标影片剪辑),然后又在相框里面放入(加载)了一张相片(SWF或JPEG文件),那么当我们想挪动相片的位置的时候,只要移动相框的位置就可以了。
比如在主场景中有一个实例名为aa的MC(坐标为(20,30)),我们要在里面加载一个02.swf文件,并且要加载后这个放到相框(_root.aa)中的相片(02.swf)出现在主场景(_root)坐标系的(50,100)处。
代码如下:
loadMovie("02.swf",_root.aa);
_root.aa._x=50;
_root.aa._y=100;
在实际应用中,其实更加倾向于用AS创建一个空MC,然后在这个MC中加载外部SWF或JPEG文件。
代码如下:
_root.createEmptyMovieClip("aa",1);
with(aa){
_x=50;
_y=100;
loadMovie("02.swf");
}
2.loadMovieNum的定位
从前面我们已经知道了,函数loadMovieNum是将SWF或JPEG文件加载到_level(级别)的。
并且是用_level1._x、_level2._x、_level1.aa._x之类的来定位的。
比如我们要将02.swf加载到主场景坐标系的(50,100)中,代码如下:
loadMovieNum("02.swf",1);
_level1._x=50;
_level1._y=100;
但是在测试的时候大家会发现加载进来的02.swf并没有如我们预期的那样出现在主场景坐标系的(50,100)位置,这是为什么呢?
原来,在没有使用loadMovieNum以前,所有的图形、MC等等都是处于_level0里的,我们通常使用的_root其实就是_level0。
你可以作个测试:
trace(_root==_level0),你会发现返回值是“true”。
那么,我们用loadMovieNum加载SWF或JPEG文件的时候,程序就要对你指定的_level进行创建,随后再紧接着载入SWF或JPEG文件。
如果像刚才代码中写的那样,不判断_level是否存在而调用其属性,势必无功而反。
解决的方法也很简单,就是用一个循环来判断指定的_level是否存在。
一旦_level产生,那么它的种种属性自然可以调用了。
代码如下:
loadMovieNum("02.swf",1);
onEnterFrame=function(){
if(_level1){
with(_level1){
_x=50;
_y=100;
}
deleteonEnterFrame;
}
};
或者:
loadMovieNum("02.swf",1);
functiongo(){
if(_level1){
with(_level1){
_x=50;
_y=100;
}
clearInterval(fps);
}
}
fps=setInterval(go);
第八课:
指挥别的MC:
TellTarget
前面我们学了多少个语句啦?
我没数过,不知你记住了多少?
现在我们要学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- flash 代码 教程