关闭

关闭

关闭

封号提示

内容

首页 Flash新手入门教程:AS2代码中duplicateMOvieClip的应用.doc

Flash新手入门教程:AS2代码中duplicateMOvieClip的应用.doc

Flash新手入门教程:AS2代码中duplicateMOvi…

上传者: 安之若素若予我一丝情愫 2017-10-18 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《Flash新手入门教程:AS2代码中duplicateMOvieClip的应用doc》,可适用于综合领域,主题内容包含Flash新手入门教程:AS代码中duplicateMOvieClip的应用AS代码中duplicateMOvieClip的应用duplicateM符等。

Flash新手入门教程:AS代码中duplicateMOvieClip的应用AS代码中duplicateMOvieClip的应用duplicateMovieClip在AS起复制影片剪辑作用通过对这个函数的灵活应用,可以制作出很多特效来诸如鼠标跟随,火焰,什么变换的彩色线条,下雨下雪效果,烟花等等通常的做法是先创建一个影片剪辑元件,放到舞台上,然后编写代码,使影片剪辑不可见,通过一个无限的循环不停地复制影片剪辑元件,并设置复制出来的影片剪辑元件的各种属性一般是:x、Y坐标,透明度,大小,旋转,颜色等属性通过一个变量,初始值设为,每循环一次,即每复制一个元件,变量值增加,当数字达到需要复制的数量时将变量重新设为这样就利用当深度相同时新复制的元件会覆盖原来的元件的原理,使元件不断的更新,同时也使舞台上的元件始终只有一个固定的数量根据个人的习惯不同,实现的方法也有不同,下面分别介绍一下几种方法一种方法是:在主场景中插入三个关健帧在第一帧输入:i=这就是上面说的,初始值为的变量元件名称Visible=让元件不可见在第二帧输入:duplicateMOvieClip("元件名称","元件名称"十i,i)复制元件,新复制的元件名为:"元件名称i",深度为i新名称=eVal("元件名称"十i)用新名称来代表新复制出来的元件名称下面就是没置新复制出来元件的各种属性新名称x=…新名称Y=…新名称rotation=…新名称alpha=……iif(i〉需要的元件数量){i=}当复制的数量达到需要的数量时,将变量值设为第三帧代码:gotoAndPlay()这样就形成了一个无限循环笫二种方法是只用一帧,代码为:i=元件名称visible=OOnEnterFrame=functiOn(){每一帧执行一次,这实际就形成了无限循环上面第二帧的代码}第三种方法,也只用一帧,代码为:i=元件名称visible=Ofunction函数名称(){上面第二帧的代码}var任一取个变量名=setInterval(函数名称,间隔的毫秒数)每隔多少毫秒执行一次函数中的代码第三种方法在有时是很有用的,当你不是每一帧复制一个元件时,这种方法就特别适合根据上面的个绍,大家充分发挥想象,以你的聪明才智,一定能制作出非常酷眩的特效的(提示:复制元件后,设置其旋转属性)下面介绍一下影片剪辑元件的制作方法:在元件编辑面板中,从十字点开始向右画一条红色的直线在第,,帧插入关键帧将线条的颜色一次为黄色用选择工具将线条调为向上的弧形(创建补间形状(第帧插入关键帧将线条重新调为直线创建补间形状在第帧插入关键帧将线条颜色调为绿色形状调为向下的弧形创建补间形状(第帧插入关键帧将线条颜色调为蓝色形状调为直线创建补间形状(就行了(通过实例学习AS(四)画折扇即然是纯AS的那么就在第一帧打开动作面板开始写代码吧。首先的两句:importflashgeom*importcomdarronschallDynamicRegistration首先引入两个类第一个是我们在后面的矩阵要用到它第二个是一个动态改变注册点的类。import是引入的意思我只需记住要用到矩阵就要引入上面第一个类要动态改变注册点就要引入第二类就行了。首先画扇梗先分析一下如下图:要画扇梗首先要确定这四个点的坐标先说a点扇子要放场景中间那么a点的x就应该是在场景中心偏右一点a点的y值就应该在场景的下半部了。为了确定a的坐标我们就要找到场景的中心所以接下来我这样写:varpx:Number=Stagewidth场景中心的xvarpy:Number=Stageheight场景中心的yvarax:Number=pxvaray:Number=pyStaege可以理解为舞台width是宽度height是高度。那么上面这,句就应该理解了吧。接下来看b点我们在确定某点的坐标时始终以离它最近的一点作参考就好确定了。那么离b点最近的是a点。从图上看b点的x值比a点稍在一点点b点的y值是扇梗下端的宽度所以接下来的是:varbx:Number=axvarby:Number=ayc点:bx–cx=扇梗的长度能明白吗,从图上看扇梗上斜着的也就是说c的位置比b的位置略高。所以:varcx=bxvarcy=byd点从图上看d点比c点稍偏左而dy–cy=扇梗的上端宽度。所以:vardx=cxvardy=cy这中个点就确定了实际这些点都是大概的数字画出来后如果图形不规则再作调整就行了。现在开始画扇梗首先在创建一个mc:thiscreateEmptyMovieClip("sg",)这句:createEmptyMovieClip():创建一个空的mc括号中两个参数第一个用引号引起的是mc的名称逗号后面是深度。有了上面一句一个叫sg的mc被创建然后我们就可以用sg来绘扇梗了:sglineStyle(,xc,)sgbeginFill(xfbfd,)sgmoveTo(ax,ay)sglineTo(bx,by)sglineTo(cx,cy)sglineTo(dx,dy)sglineTo(ax,ay)sgendFill()上面几句语句介绍:lineStyle():确定线条的的样式括号中,个参数分别是:粗细、颜色、透明度beginFill():开始填充括号中,个参数分别是:填充颜色、透明度moveTo(xy):将画笔移到括号中的xy坐标处lineTo(x,y):从画笔所在位置开始画一条直线到括号中的x,y坐标处并将画笔停留在这里。如果下面还有lineTo()那么将这里向下面的lineTo中的x,y画直线。endFill():结束填充这时将会这图形填上色。如果你画的不是一个闭合图形那么将自动闭合填充。画到现在第一条扇梗就画好了这时应测试影片看看画出的扇梗是否符合要求如果不对就调整上面各点的x,y坐标直到符合要求。如图:next接下来我们来画其它的扇梗我们采用复制旋转的方式来画其它的扇梗。但这里有个问题用AS画出的图形它的注册点上其左上角用复制旋转的方法显然不行。解决的办法就只能是改变mc的注册点好在我们在网上找到一个可以动态改变注册点的类:DynamicRegistration关于这个类的教程请参见我在论坛中的“动态改变注册点“的教程。打开的扇子底边并不是一条直线而是向上斜的其夹角大概是,,,度我们的扇梗以,,度画一条刚好可以画,,条下面的代码完成了其它扇梗的绘制:for(vari=i<i){sgduplicateMovieClip("sg"i,i)varfzsg=eval("sg"i)eval将括号中的”sg”i变成了sgiDynamicRegistrationinitialize(fzsg)fzsgsetRegistration(ax,ay)将注册点改到了ax,ay的地方。fzsgrotation=i*}现在测试影片看到的应该是这样的效果:扇梗画好了现在我们画扇面首先还是先确定几个点的坐标:e点用d点作参考:exdx=扇面的高度因为扇梗是倾斜的所以e点应比d点略向下一些。h点:x坐标应是场景中心即hx=pxpyhy,exdxf点、g点、i点f均参考上面的方法确定。f、g点的位置要注意一下应该要把最后一根扇梗露出来不要盖住。sma、smb则分别在两段园弧的中间。再次说明这些点的位置并不十分准确画好后测试景片不对再调整就跟鼠绘一样你在用鼠绘画的时候也不会去精确计算哪一笔该画到什么位置。那么有没有精确的点呢这个当然是存在的。很多AS绘图教程都会介绍怎样去计算这些点。又是数字计算又是几何知识三角函数写了一大堆能懂的人不多。仅管这些知识都是学过的至少我都还给老师了。所以我们不用去计算我们用非常先进的仪器来测量这些点的位置那就是眼睛。我们注意到扇面中出现了弧形而上面的lineTo只能画直线所以我们要用到画弧线的方法:curveTo(x,,y,,x,,y,):这是画弧线的方法它是从画笔所在位置画一条通过(x,y)到(x,y)的弧线。好现在可以画扇面了:varex=dxvarey=dyvarfx=axvarfy=ayvargx=fxvargy=fyvarjx=dxvarjy=dyvarhy=ayvarhx=axvarix=axvariy=ayvarsmax=gxvarsmay=gyvarsmbx=jxvarsmby=jythiscreateEmptyMovieClip("sm",)注意因为扇梗将,,,,的深度占了所以这里的深度应该是,,赿上面的深度数字应该赿大。smbeginFill(xffffff,)smmoveTo(ex,ey)smcurveTo(hx,hy,fx,fy)smlineTo(gx,gy)smcurveTo(smax,smay,ix,iy)smcurveTo(smbx,smby,dx,dy)smlineTo(ex,ey)smendFill()画出的扇面应该如上图的样子不对就调整。next接下来画阴影确定如图K点的位置然后就可以画了。varkx=exvarky=eythiscreateEmptyMovieClip("yy",)yybeginFill(x,)yymoveTo(ex,ey)yylineTo(kx,ky)yylineTo(cx,cy)yylineTo(dx,dy)yylineTo(ex,ey)yyendFill()for(varj=j<j){yyduplicateMovieClip("yy"j,j)varfzyy=eval("yy"j)DynamicRegistrationinitialize(fzyy)fzyysetRegistration(ax,ay)fzyyrotation=(j)*}现在测试效果如图。应该说扇子已画好了不过纯白色的扇面的点不好看,在扇面上再画点啥点缀一下,好的我们先画一点花再给它整上一首诗如何,其实大家都看到了最后弄出来的效果好象更差了管的哦我们的目的是学习AS弄点这些东西我也才好介绍其它的一些内容。先画花枝如下图确定各点位置然后可以画了。varhzax=exvarhzay=eyvarhzbx=hzaxvarhzby=hzayvarhzcx=hzaxvarhzcy=hzayvarhzdx=hzcxvarhzdy=hzayvarhzex=hzaxvarhzey=hzayvarhzfx=hzaxvarhzfy=hzayvarhzgx=hzaxvarhzgy=hzayvarhzhx=hzaxvarhzhy=hzayvarhzix=hzaxvarhziy=hzayvarhzjx=hzaxvarhzjy=hzayvarhzkx=hzaxvarhzky=hzaythiscreateEmptyMovieClip("hz",)hzbeginFill(xdbb,)hzmoveTo(hzax,hzay)hzcurveTo(hzbx,hzby,hzcx,hzcy)hzcurveTo(hzdx,hzdy,hzex,hzey)hzlineTo(hzax,hzay)hzendFill()hzlineStyle(,xdbb,)hzmoveTo(hzfx,hzfy)hzcurveTo(hzhx,hzhy,hzgx,hzgy)hzmoveTo(hzix,hziy)hzcurveTo(hzjx,hzjy,hzkx,hzky)next下面画花画一个,瓣花图形位置在那都行因为随后我们会移动它。按下图确定各点坐标:这里要介绍一个渐变填充因花瓣我们要用放射填充。beginGradientFill(fillType,colors,alphas,ratios,matrix):这个命令会产生一个渐变填充括号中的参数为:第,个是填充类形就是线性还是放射类线性为:LINEAR,放射类为RADIAL。第,个是一个数组里面是要用到的颜色。数组是一些数据的组合还记得我们在第一个练习中提到的变量吗,在内存中分了很多房间来存放变量房间中只能有一个数据记得在那里我举例说房间中原来是,现在,来了一脚将,踢了出去因为房间中只能住一个数据。现在是文明社会不兴这样干。于是,来了跟,签了合租协议于是,和,都住进了这个房间房间中就不止一个数据了这时我们将这个房间叫数组。数组的声明是这样的:var数组名称:Array=数组成员,数组成员,。。。。。。比如本例中我们要用到的颜色数组:我们在用到的放射填充要用到两种颜色:varcolors:Array=xfcff,xfddce第,个参数也是一个数组它里面装的是颜色数组中各个颜色的透明度。第,个参数还是一个数组它理面装的是颜色组数中各个颜色的比率。第,个参数是一个矩阵用规定渐变填充的一些设置。不用怕很简单。要使用矩阵必须引入geom类这个我们已经在代码的第一行进行了。然后需要声明一个矩阵如:matrix=newMatrix()然后需要用createGradientBox方法来创建矩阵格式为:矩阵名称。createGradientBox(填充宽度填充高度填充的旋转(弧度)填充中心点x值填充中心点y值)。是不是很简单呢,如果你看别的书对括号中的参数他们不是这样解释的我这样解释是来自于实践也能让大家一看就明白。说实话为这个渐变我搞了一晚上头都痛了始终无法实现渐变填充都是纯色。最后终于总结出矩阵中最后两个参数是填充中心点坐标为我鼓掌吧。书上为什么就不说明白呢,他们把它叫做:水平移动垂直移动。next好了现在可以画花了:varfillType:String="radial"varcolors:Array=xfcff,xfddcevaralphas:Array=,varratios:Array=,varthax=pxvarthay=pyvarthbx=pxvarthby=pyvarthcx=pxvarthcy=pyvarthdx=pxvarthdy=pyvarthex=pxvarthey=pyvarthfx=pxvarthfy=pyvarthgx=thfxvarthgy=thfyvarthhx=thfxvarthhy=thfyvarthix=pxvarthiy=pymatrix=newMatrix()matrixcreateGradientBox(,,MathPI,thax,thay)thiscreateEmptyMovieClip("th",)thbeginGradientFill(fillType,colors,alphas,ratios,matrix)thmoveTo(px,py)thcurveTo(thax,thay,thbx,thby)thcurveTo(thcx,thcy,thdx,thdy)thcurveTo(thex,they,thfx,thfy)thcurveTo(thgx,thgy,thhx,thhy)thcurveTo(thix,thiy,px,py)thendFill()花画好了现在就要将它移到花枝上先将注册点改到花的的中心然后中设置花的x,y值将花移到花枝上。再执行几次复制复制若干朵花分别移动花枝的相应位置。DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzaxthy=hzaythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzaxthy=hzaythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzaxthy=hzaythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzkxthy=hzkythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzkxthy=hzkythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzcxthy=hzcythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzcxthy=hzcythduplicateMovieClip("th",)DynamicRegistrationinitialize(th)thsetRegistration(thax,thay)thx=hzcxthy=hzcy现在测试效果应该是这样的:扇面右边还有点空弄首诗吧。这个动态创建的文本框我还真拿它没办法竖排没法实现一设置旋转人家来脾气不见了所认只好这样了。当然如果你知道怎样解决希望能在后面跟帖讲解一下我将不胜感激给你加分分。最后的诗这样实现:thiscreateTextField("stext",,px,py,,)varstxt:TextFormat=newTextFormat()声明了一个文本框格式stxtsize=设置文字大小stxtbold=true设置字体为粗stexttext="团扇薄不摇窈窕摇蒲葵。相怜中道罢定是阿谁非。"stextsetTextFormat(stxt)将文本框格式运用于文本框stextwordWrap=true设置文本框可以自动换行。这句:createTextField("stext",,px,py,,)创建一个文本框括号中的参数分别是:第,个参数:文本框的名称。第,个参数:深度第,、,个参数:文本的x、y坐标第,、,个参数:文本的宽高。

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/16
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部