当前位置:主页 > 平面设计

最新发布

Flash中选择字体的奥妙
Flash中选择字体的奥妙

在 Flash 创作时难免会用到一些特殊的字体,而这些字体很可能不被 Flash 所识别,以至于在最后生成的 swf 文件中无法正常显示。解决的办法一般是将文字打碎转换成图形,但这只适用于 Static Text,对于 Dynamic Text 和 Input Text 是行不通的。Flash 本身为此提供了专门的解决办法,一种叫 Embed Fonts,将字体信息嵌入 fla 和 swf 文件中,保证字体最终能够按原样显示;另一种叫 Device Fonts,播放器选用机器上所安装的字体中与原字体最接近的一种来显示,由于这种方法不另外内嵌字体信息,所以生成的文件要比前一种方法小,但有可能最终显示的结果远离了作者的初衷。  Flash 本身带有三种 Device Fonts:_sans(类似于Helvetic和Arial), _serif(类似于Times Roman), _typewriter(类似于Courier)。有趣就在这里,我作了一个实验:用 Static Text,36 号 Arial 字体写了几个字,生成的 swf 文件是1.35KB; 勾选“use device fonts”后生成 swf 文件是196字节;保持“use device fonts”选中,将字体改为_sans, swf 文件大小还是196字节; 保持字体为_sans, 去掉“use device fonts”,swf 文件大小是120字节;将字体打碎生成的 swf 文件是1.37KB;最后改成 Dynamic Text,Embed Fonts 选全部字母,swf 文件是7.73KB。  什么意思?就是说在没有特殊要求的情况下输入文字应该尽量直接使用这三种 Device Fonts,可以大大减小文件的体积,当然如果必须要使用一些特殊字体,就只能牺牲一些空间了。  检验你使用的字体能否被 Flash 正常输出,打开文字抗锯齿选项,如果字体依然有锯齿,那你就要考虑选择上面提到的某种方法了

3 次浏览
FLASH游戏制作:接宝石
FLASH游戏制作:接宝石

接宝石在Flash中也是比较经典的一种游戏类型,主要运用了鼠标对游戏中对象的控制,hittest测试碰撞,游戏中记时和记分的方法,可以说此游戏中运用的技术在Flash游戏制作中很具有代表性,可以说此类技术在游戏制作中的通用性也比较强,学习此游戏的制作方法,可以在其它游戏的制作中起到举一反三的作用。(本例的.swf和.fla文件请点击这里下载)游戏方法:此游戏主界面如图1所示:图1游戏中玩家主要使用鼠标来控制下面的小人左右移动,以便接到不断落下的宝石。宝石的类型分为三中,接到不同的宝石得分不同,其中接到一个蓝宝石会得5分,接到一个红宝石或者黄宝石会得3分,不过如果游戏中落下的全是宝石游戏也没什么意思了。游戏中还会不断落下黑色的炸弹,如果不小心接到了炸弹,则会从总分中扣除5分,所以在忙于珍贵的宝石的同时,也需要注意不要接到炸弹,不然可就惨了。游戏有一定的时间限制,游戏剩余时间会显示在右上角,玩家应该在时间限制内尽量多接宝石,以取得高分。游戏制作思路:此游戏玩法简单,制作思路也很清晰。总体上可以分为4大部分:第一部分:游戏中小人的控制,游戏中需要使用鼠标来控制小人左右移动,以便接到宝石,此部分的实现较简单,只需要使用startdrag函数即可以实现。第二部分:宝石和炸弹的不断下落:游戏中宝石和炸弹需要不断的随机下落,可以运用random和duplicatemovieclip两个常用函数来实现,前一个函数用来产生随机数,随机控制宝石的初始坐标位置,后一个函数用来复制出更多的宝石,两个函数结合在一起,就可以制作出宝石不断随机下落的效果。第三部分:宝石接到与否的判断,此功能需要使用hittest碰撞测试函数来检测,使用也相对简单。第四部分:游戏中的记分和记时:此部分需要用到动态文本框的设置,和一些时间函数,关键是时间为零后要立刻结束游戏。通过上面的制作思路的分析,可以看出如果将此游戏作适当的分解,一步一步来制作,其实并不难,所以一个游戏在制作前进行适当的分析和规划是很重要的。下面我们就来按照上面规划好的制作思路来具*作此游戏游戏制作步骤:游戏素材的准备:1. 进一步往下制作前需要准备好游戏中需要的素材,此游戏一共需要五个素材,分别是蓝色宝石,黄色宝石,红色宝石,炸弹和小人,素材的获得有很多方法,可以直接从外部文件中获得,也可以自己动手在Flash中绘制,图2所示为本游戏中的宝石和小人:图22. 分别将蓝色宝石,黄色宝石,红色宝石和炸弹制作成相应的Graphic组件,然后新建一个Movie clip组件,将小人图象拖进去,并重命名为小人。现在游戏中一共有5个组件,分别是Graphic组件蓝色宝石,黄色宝石,红色宝石和炸弹以及Movie clip组件小人。游戏中主要组件的制作:1.记时器的制作:游戏中需要用到一个记时器,用来记录游戏的剩余时间,本游戏时间限制为100秒,并进行倒记时,时间为0后则游戏结束。新建一个Movie clip组件,重命名为mTimebar,进入组件的编辑状态后,使用文本工具在编辑区的中心输入”剩余时间”几个字,然后新建一个图层layer2,在文字下面使用文本工具绘制一个文本框,在Properties属性面板中设置此文本框的类型为Dynamic text动态文本,设置为动态文本框的原因是游戏中此文本框的时间会不断变化,所以需要设置为动态的,然后设置此文本框的变量名为txt,设置变量名的目的是为了使用Action控制文本框中的内容,如图3所示:图3将图层layer1和layer2都延长到第3桢,然后新建一个图层并重命名为Actions,在此图层的第1 关键桢添加如下as:now = new Date();startTime = now.getTime();hasTime = 100;txt = hasTime;//第一句创建了一个新的Date日期对象now,然后第2句将当前时间赋给变量//startTime,接下来将值100赋给变量hasTime,最后一句将变量hasTime的值100设//置为文本框的初始值。此图层的第2 关键桢添加如下as:now = new Date();tempTime = now.getTime();txt = hasTime-int((tempTime-startTime)/1000);if (!txt) {_root.gotoAndStop("end");this.stop();}//第一句创建了一个新的Date日期对象now,然后第2句将当前时间赋给变量//tempTime,第三句将表达式hasTime-int((tempTime-startTime)/1000)的值设置给//文本框,tempTime-startTime为当前时间与初始时间的差,也就是已经花掉的时间,//此值再被hasTime减去,则为剩余时间。If语句判断文本框中的值是否为零,如果//剩余时间为零,则主场景中会跳到最后一桢并停止,意味着游戏结束。此图层的第3关键桢添加如下as:gotoAndPlay (_currentframe-1);//如果剩余时间不为零,自然会播放到此桢,但是为了持续记数需要返回到上一桢播放,//所以_currentframe-1达到了此目的2. 分牌的制作:游戏中需要显示玩家的得分,所以需要一个得分牌。新建一个Moview clip组件,重命名为mScorebar,进入组件编辑状态后,按照制作记时器的方法制作一个”得分”的文本和一个动态文本框,同样将此文本框设置个变量名txt,然后新建一个图层,重命名为actions,再此层的第一祯添加如下as:txt = _root.score;//将主场景中的变量score的值赋给得分文本框,关于变量score,将在主场景中//进行说明。3. 宝石变化组件的制作:游戏中掉下的宝石或者炸弹是随机出现的,所以我们这里可以使用一点制作技巧,将所有将要落下的物体放到一个mc里,但是分别放到不同的关键桢中,这样只需要使用as随机调用不同的桢即可实现随机掉下不同的宝石的效果,所以这里新建一个movie clip,重命名为mstonepics,在图层layer1中插入四个连续的关键桢,分别将炸弹,红宝石,黄宝石和蓝宝石放到第1到第4关键桢中。4. 随即下落宝石MC的制作:游戏中宝石需要随机下落,所以这里专门制作一个movie clip来进行宝石随机下落的控制,新建一个movie clip组件,重命名为mFallingStone,进入组件的编辑状态后,将图层layer1重命名为StonePics,并将此图层延长到第三桢,然后将组件mStonePics拖到此层,并在Proiperties属性面板中将其命名为stone,如图4所示:图4再新建一个图层,重命名为actions,在此图层的第一关键桢添加如下as:var plusScore;//定义变量plusScore,用来代表不同宝石所有的不同分数i = Math.random();//使用random随机函数产生随机值在0到1范围内的值,并赋给变量iif (i<0.5) //如果产生的随机数小于0.5,则执行下面的代码{Stone.gotoAndStop(1);plusScore = -5;}// 组件Stone将停止在第一桢,也即放置炸弹的那一桢,并且将-5赋给代表加分的变//量plusScoreelse if (i<0.7) //如果产生的随机数大于0.5而小于0.7,则执行下面的代码{Stone.gotoAndStop(2);plusScore = 2;} // 组件Stone将停止在第2桢,也即放置红宝石的那一桢,并且将2赋给代表加分的//变量plusScoreelse if (i<0.9) //如果产生的随机数大于0.7而小于0.9,则执行下面的代码{Stone.gotoAndStop(3);plusScore = 2;} // 组件Stone将停止在第3桢,也即放置黄宝石的那一桢,并且将2赋给代表加分的//变量plusScoreelse //如果产生的随机数大于0.9而小于1,则执行下面的代码{Stone.gotoAndStop(4);plusScore = 5;}// 组件Stone将停止在第4桢,也即放置蓝色宝石的那一桢,并且将5赋给代表加分//的变量plusScorethis._x = random(560)+20;this._y = -10;//设置不同宝石的随机坐标,横坐标的范围为20到580之间,纵坐标统一为-10speed = 10+random(20);//变量speed为下落速度,范围为10到30之间在此图层的第2关键桢添加如下as:this._y += speed;//设置宝石的新坐标为原坐标加下落速度if (this._y>420) {this.removeMovieClip();} //如果宝石的纵坐标超过420,也即到达舞台的最下面,说明没有被接到,所以使用//removeMovieClip()删除此mc,也即没有被接到的宝石从游戏中消失else if (this._y<=320 && this._y+speed>=320){disX = Math.abs(this._x-_root.Man._x);if (disX<30) {_root.score += plusScore;this.removeMovieClip();}}//如果宝石的纵坐标不到320,但是再下落一个speed值便超过320,说明宝石已经被//接住了,所以得分增加,然后删除宝石在此图层的第3关键桢添加如下as:gotoAndPlay (_currentframe-1);//重复播放上一桢布置主场景:最后的步骤就是步骤主场景了,制作好上面的所有组件以后,返回到主场景中。1. 首先将默认图层layer1重命名为bg,然后延长到第5桢,此图层用来设置背景,使用矩形工具画一个和舞台一样大小的矩形,并填充上适当的颜色,如图5所示:图52. 新建立一个图层命名为Buttons_Man,用来放置游戏中需要用到的一些控制按钮,首先制作一个控制开始游戏的按钮放置在第1桢,给按钮添加as:on (release) {gotoAndPlay(2);}然后在此桢加上游戏的开始画面,如图6所示:图6在第2关键桢将组件小人拖到舞台的下方,并在属性面板中给组件设置实例名为man,如图7所示:图7在第5桢插入一个关键桢,添加一个时间到达的提示按钮,给按钮添加如下as,以便控制游戏的重新开始:on (release) {gotoAndStop(1);}//返回第一桢的游戏开始界面,重新开始游戏3. 新建一个图层命名为bar,用来放置积分牌和记时器,因为主场景的第一桢为游戏开始界面,所以需要将第一关键桢删除,将组件mScoreBar和mTimeBar拖动到第2关键祯,如图8所示:图84. 最后再次新建一个图层重命名为actions,用来放置一些控制用的action,在第一桢添加as: stop();,以使游戏一开始停止在第一桢的开始界面,在第2桢添加as:startDrag("Man",true,20,320,580,320);//对小人进行拖动,切设置好了拖动的范围,以使小人只可以在水平方向上移动,//而不可以在垂直方向上移动。mcDepth=0;score=0;//定义两个变量值,其中score为游戏的得分在第3桢添加as:if (Math.random()<0.2) {_root.attachMovie("fallingStone", "s"+mcDepth, mcDepth);mcDepth++;}在第4桢添加as:gotoAndPlay (_currentframe-1);//返回上一桢继续播放给第5桢设置桢标签end,如图9所示:图95. 最后主场景中时间线如图10所示:图10到此为止,接宝石这个游戏就制作完成了,制作过程其实很简单,关键是制作前的规划和制作思路的总体设计,这样制作起来就有一定的针对性,可以做到有的放矢

9 次浏览
Flash游戏制作--涂鸦板
Flash游戏制作--涂鸦板

Windows操作系统自带的工具--画图程序,想必大家都很熟悉了,虽然与专业绘图软件相比,其功能很有限,但是画图程序经常在用户手中没有任何处理工具的关键时刻起到巨大的作用,所以虽然其简陋且简单,但是仍然有许多忠实的用户一直在使用画图程序,我也是这些用户中的一名,怀着对画图程序的强烈热爱之情,使用Flash模拟制作了一个功能和画图程序类似的小游戏,虽然功能比不上画图的强大,但是从中也可以看出画图程序的雏形,也希望通过此例,能系统的讲解Flash中对色彩对象的应用。(本例的.swf文件和.fla文件点击这里下载)此游戏的主界面如图1所示:图1操作方法:游戏界面主要分为两部分,左部为绘画控制部分,右边为绘画区。左边的控制区包含有调色板,画笔大小调节杆和三个绘画控制按钮,在绘画前,可以先从调色板中选取一种合适的绘画颜色,然后调节画笔大小调节杆调整画笔大小到合适位置,然后就可以通过鼠标控制画笔在右方的绘画区进行绘画了。如果在绘画中对某一笔不满意的话,可以点击控制按钮”回上一笔”,撤消上一步的操作,当绘制完成一幅作品后,可以点击控制按钮”打印作品”,将作品从打印机中打印出来,然后点击控制按钮”清除面板”将绘画区清除,然后就可以进行下一幅作品的绘制了。制作步骤:1.既然是画图游戏,当然少不了一只画笔了,不过这里的画笔是比较特殊的,就是当选取某种颜色后,笔杆也会相应的呈现出这种颜色,可以使绘画者对当前绘画颜色一目了然。所以画笔由两部分组成,笔杆和画笔显示颜色的部分。我们先制作画笔显示颜色的部分,新建一个MC,并命名为pencolor,,然后在编辑区绘制如图2所示的图形,图2其形状很象一个画笔,将作为画笔颜色的显示部分。接下来制作画笔的笔杆,新建一个mc,并命名为pen,笔杆由画笔的主体和显示颜色的部分组成,为了便于编辑,这里需要两个图层分别放置主体和显示颜色的部分,所以在编辑区中首先绘制如图3所示的画笔轮廓;图3在新建一个图层,将组件pencolor放到此层,并和图3画笔轮廓对齐,并在属性面板中设置对象pencolor的Instance name为pencolor,对齐后画笔整体效果如图4所示:图4这里需要注意的是:需要将画笔颜色组件所在层放置到画笔轮廓所在层的下方,不然画笔轮廓将被完全遮住。这样,一个简单的画笔就制作好了:)2.在绘画前可以使用鼠标调整画笔大小,所以这步来制作画笔大小调节杆,并制作成Button组件。新建一个Button组件,命名为tangButton,进入编辑区后,在Up桢绘制如图5所示的滑头:图5然后分别在Over和Down桢插入两个关键桢,并在Down桢将滑头的填充色改变,这样在拖动调整滑杆的时候可以看到滑杆颜色的变化,可以明确目前的操作,Down桢如图6所示:图6新建一个MC,命名为sizeP,将组件tangButton拖到编辑区中,然后在建一个mC,命名为switch,在编辑区中新建三个图层,有上到下分别放置组件sizeP,三角形的粗细模拟图形和提示文本,如图7所示:图7同时在属性面板中设置对象SizeP的Instance name为sizepointer.3.接下来制作三个功能按钮,三个按钮主体一样,只不过有不同的提示文本罢了,新建一个Button按钮,简单的绘制一个圆角矩形即可,如图8所示:图84.既然是绘画程序,画布当然是少不了的,因为游戏中绘画是由鼠标进行的,所以需要将画布制作成Button,新建一个Button组件,命名为Canvas,在编辑区中绘制一个大小适中的正方形即可。5.游戏中的调色板是动态生成的,由Action进行控制,我们只需要制作一个调色板中的一个色块作,然后使用Action对其进行复制等操作即可自动生成调色板结构。首先建一个Button组件,命名为boxbutton,在编辑区中Up桢绘制一个矩形,填充色可以随意设置,如图9所示:图9同时在Over和Down桢个插入一个关键桢。再新建一个MC,命名为dyebox,将组件从boxbutton从库中拖到编辑区即可。6.所有组件准备好后,接下来就布置主场景了。回到主场景中,将默认的图层layer1重命名为背景,然后绘制一个和舞台一样大小的矩形,并填充上蓝色。在背景层上面新建一个图层命名为画笔,将组件pen和dyebox分别拖到场景中,然后在舞台左上角输入游戏标题,如图10所示:图10同时在属性面板中设置组件pen的Instance name为pen,设置组件dyebox的Instance name为dye.再新建一层命名为按钮,将组件switch放到舞台的左下角,然后分三次将组件pButton放到滑块的下面,并分别输入按钮的标题,如图11所示:图11新建一个图层命名为画布,将组件Canvas放置到舞台的左方,如图12所示:图12然后将所有图层都延续到第3桢,因为此绘图程序具有打印的功能,而在Flash中如果要实现打印功能,需要给要打印的那一祯设置一个特殊的桢标签:#p,所以这里我们在随便一层的第三祯设置祯标签为#p即可。到此,主场景就布置完毕了7.最后的任务就是编写Action动作脚本了,这也是本游戏的主要部分,游戏的大部分功能需要借助于Action实现。在主场景中新增一个图层,命名为Action,早第1桢添加如下AS:i = 1;//定义并初始化变量ifor (r=0; r<=0xFF; r += 0x33) {//第一层循环,循环变量为rfor (g=0; g<=0xFF; g += 0x33) {//第二层循环,循环变量为gfor (b=0; b<=0xFF; b += 0x33) {//第三层循环,循环变量为b,此循环用来绘制调色板dye.duplicateMovieClip("d"+i, i);//复制影片剪辑dye,也就是调色板的最小单位cc = new Color(eval("d"+i));//定义新的Color对象,Color 对象能够设置影片剪辑的 RGB 颜色值和颜色转换,并可以在设置后获取这些值,必须使用构造函数 new Color() 创建 Color 对象的实例后,才可调用其方法。 eval("d"+i)._x = 25+int((i-1)/18)*11;eval("d"+i)._y = 60+((i-1)%18)*8;//设置复制出的色块的坐标,使其排列为一个矩阵cc.setRGB(r*256*256+g*256+b);i++;//最后设置色块的颜色,这里使用了setRgb函数,其参数为要设置的十六进制或 RGB 颜色,//对于 RR、GG 和 BB,每种代码由两个十六进制数字组成,这些数字指定每种颜色成分的//偏移量。0x 告知动作脚本编译器该数字是十六进制数值。 }}}Mouse.hide();//因为在绘图板中只出现画笔,所以这里将系统的鼠标隐藏pen.duplicateMovieClip("penP", 100000);//因为初始时画笔是在舞台之外的,所以这里需要复制一个画笔,然后应用到游戏中penP.startDrag(true);//使画笔成为可拖动的对象dye._visible = false;pen._visible = false;//设置原始的调色板色块和画笔均不可见dyecolor = new Color(_root.penP.pencolor);dyecolor.setRGB(0);//定义画笔上显示画笔颜色的部分为Color对象,然后设置其初始颜色为黑色n = 217;P = 0;X0 = 0;pensize = 10;//定义并初始化一系列变量,其中pensize为画笔尺寸在第2桢添加如下AS:if (P == 1) {if (X0 == 0) {X0 = _xmouse;Y0 = _ymouse;} //取得画笔的坐标else {X1 = _xmouse;Y1 = _ymouse;if ((X1-X0)*(X1-X0)>4 || (Y1-Y0)*(Y1-Y0)>4) {n = n+1;dx = X1-X0;dy = Y1-Y0;dd = Math.sqrt(dx*dx+dy*dy);ang = Math.atan2(dy, dx);//利用画笔前后两次的坐标值,使用数学函数求得两此画笔位置之间的直线距离_root.attachMovie("rect", "L"+n, n);with (eval("L"+n+"/hc1")) {_height = pensize;_width = pensize;}with (eval("L"+n+"/hc2")) {_height = pensize;_width = pensize;_x = dd;}with (eval("L"+n+"/lb")) {_height = pensize;_width = dd;}with (eval("L"+n)) {_x = X0;_y = Y0;_rotation = ang*180/Math.PI;}//根据复制出的L的不同对象,设置画笔的笔划尺寸为对象L的宽和高cc = new Color(eval("L"+n));cc.setRGB(_root.dyecolor.getRGB());X0 = X1;Y0 = Y1;}}//为笔划设置颜色,即画笔画出的线条的颜色}//在第3桢添加如下AS:gotoAndPlay(2);//返回到第2桢8.为了实现三个按钮的功能,还需要分别给按钮添加AS.清除面板按钮的AS为:on (release) {i = 218;while (i<=n) {removeMovieClip ("/L"+i);i++;}n = 217;}//清除所有复制出的MC对象回上一笔按钮的AS为:on (release) {if (n>217) {removeMovieClip ("/L"+n);n--;}}//使用removeMovieClip清除复制的MC对象打印作品按钮的AS为:on (release) {print("", "bframe");}//使用print函数打印祯内容,其用法为print (level, "Bounding box"),其中参数level 为要打印的级别,在“动作”面板的标准模式下,如果选择一个级别,则 print 动作将切换到 printNum 或 printAsBitmapNum;在专家模式下,必须指定 printNum 或 printAsBitmapNum。默认情况下,打印该级别中的所有帧。如果要打印该级别中的特定帧,可将 #p 帧标签分配给这些帧,所以我们在前面设置第三祯的标签为#p,目的就是可以打印此祯。 参数Bounding box 设置影片打印区域的修饰符,此参数是可选的,可以选择下列值之一: 1.bmovie 将影片中某特定帧的边框指定为该影片中所有可打印帧的打印区域。需要为要将其边框用作打印区域的帧分配一个 #b 帧标签。 2.bmax 将所有可打印帧的所有边框的合并区域指定为打印区域。当影片中可打印帧的大小各不相同时,可指定 bmax 参数。 3.bframe 指定将每个可打印帧的边框用作该帧的打印区域。这将为每个帧更改打印区域,并缩放对象以符合打印区域。如果在每个帧中有不同大小的对象,而您希望每个对象都充满打印页面,则可使用 bframe。到此,游戏就制作完成了,接下来您就可以在这个涂鸦板上一展身手了。试试看,是不是有点画图程序的感觉,虽然功能稍微弱了点,不过您完全可以在此基础上继续添加其它功能,使其成为真正的画图程序。

3 次浏览
Flash游戏制作--空战
Flash游戏制作--空战

射击类游戏一直是Flash游戏制作中的一个热点,大多数Flash射击游戏都是都是纵版的,也就是游戏背景的前进方向是垂直的,这样的游戏已经司空见惯了。所以这次我们来制作一个横版的射击游戏,游戏背景和飞机的运动方向都是水平的。(本例的源文件下载请点击这里)游戏运行后的主界面如图1所示:图1游戏说明:此游戏玩家是以第一视角的模式来进行的,所谓第一视角就是游戏的界面相当于玩家的双眼,通过这样的形式,可以使游戏达到一种非常逼真的效果,仿佛您已经置身于激烈的游戏之中了。游戏中玩家可以使用鼠标控制屏幕中的瞄准镜,瞄准并射击从左边随机出现的敌机,飞机会以各种路线在空中飞行以避开你的射击,如果敌机被射中后,就会从空中跌落下来,相应的玩家会得一分,在游戏规定的100秒内,尽量击落更多的敌机。制作步骤:一:游戏中相应元件的制作1.既然是空战游戏,自然少不了飞机,所以首先来制作游戏中的敌机。在影片中新建一个Graphic元件,,命名为gPlane,进入元件的编辑状态后,可以从外部导入一张飞机的图片,然后将其分离,稍稍加工一下即可。或者使用Flash提供的强大的绘图工具自己绘制一架飞机,如图2所示:图2有了飞机,还需要一个飞行员飞机才可以工作,所以再建一个Graphic元件,命名为gMan,进入元件编辑状态后,使用椭圆绘图工具绘制一个简单的人头即可,如图3所示:图3接下来就需要将飞机和飞行员组合到一起了,因为游戏中需要使用Action动作脚本对飞机进行控制,所以需要将最终的组合*作成Movie clip元件,所以再新建一个Movie clip元件,进入元件的编辑状态后,将元件gMan和Gplane分别拖到编辑区,使用鼠标调整其相对位置,如图4所示:图4这样,一架逼真的战斗机就制作完成了2.飞机飞行动画的制作:游戏中飞机是从游戏窗口左边随机出现的,但是飞机的飞行路线是事先确定好的,我们可以在制作过程中按照实际需要制作一些飞机沿一定路线飞行的Motion动画,使用Guide Line引导线可以很方便的实现,然后在游戏中分别调用即可,本游戏预先制作了三中不同的飞行路线,这里以其中一种举例说明,其它的制作方法完全类似。新建一个Movie clip元件,命名为mPlane1,进入元件的编辑状态后,在图层layer1的上面插入一个引导层,在引导层上使用铅笔工具随意绘制一条曲线,然后将图层延续到第120桢,如图5所示:图5然后将元件mPlane拖到图层layer1的第1关键桢,放置到曲线的左边的开始端点,飞机会自动吸附到此端点,接着在属性面板中设置飞机的Instance name为airplane。在第120桢插入一个关键祯,同样的将飞机拖到曲线的右边的端点,也会自动吸附上去,最后,在第1祯到第120祯的任意祯上单击鼠标右键,选取Creat Motion Tween命令即可,这样就创建了飞机从曲线的左端点沿曲线运动到右端点的运动效果。最后还需要添加一个图层Action,用来设置Action动作脚本,在第1桢添加如下as:var planeDepth=_root.pDepth;在最后一桢(120祯)添加如下as:_root.numPlane--;this.removeMovieClip();按照同样的方法分别制作元件mPlane2和mPlane3,和mPlane1的唯一不同点就是引导层的曲线不一样。3.制作瞄准镜:游戏中玩家可以控制的唯一对象就是瞄准镜,可以用它瞄准并射击敌机,新建一个Movie clip元件,命名为mPointer,在编辑区中使用椭圆工具绘制一个正圆,然后在正圆中绘制四条方向不同的直线即可,如图6所示:图64.云彩的制作:既然是空战,天空中当然少不了白云,并且适当的在游戏中加入白云这样的对象,可以使游戏更生动和逼真,游戏中的白云是使用Action动作脚本随机复制并进行控制的,所以这里我们新建一个Movie clip元件,命名为mCloud,进入元件编辑状态后,使用铅笔工具的Ink绘制模式,绘制一个弯曲的闭合区域,并将图层延续到第5祯,如图7所示:图7接下来需要添加复制和控制白云的Action动作脚本,新建一个图层,分别在第1,3,5三祯插入三个关键祯,给第一祯添加如下AS:this._x = 575;this._y = 30+random(300);speed = 2+random(5);给第3祯添加如下AS:this._x -= speed;给第5祯添加如下AS:if (this._x<-35) {_root.numCloud--;this.removeMovieClip();} else {gotoAndPlay (_currentframe-2);}5.飞机被击落的效果:游戏中飞机如果被击落,如果简单的来做,只需要设置飞机消失即可,不过为了增强游戏的观赏性,我们这里专门来设计以下飞机被击落的效果,而且会带有爆炸的声音。新建一个Movie clip元件,命名为mDown,进入元件的编辑状态后,首先添加三个图层分别为down,planedown和eXPlord,在图层explord的第一祯绘制一个如图8所示的多角形,并填充上适当的颜色:图8然后在第3祯插入一个关键祯,在属性面板上设置此多角形的Alpha透明度值为15%,最后建立第1到第3祯的Motion运动过渡,这样就实现了飞机被击中的瞬间爆炸的效果。接下来制作飞机下落的效果。在图层planedown的第2祯插入一个关键祯,将元件Mplane拖进编辑区,使用旋转工具将飞机旋转90度,使飞机头冲下,然后在第10祯插入一个关键祯,将飞机向下移动一段直线距离,并适当降低飞机的Alpha透明度值,最后建立第2祯到第10祯的Motion运动过渡效果,这样飞机被击中后下落并消失的效果也有了。不过如果飞机在下落过程中, 能有冒烟的效果就更完美了。所以我们在图层down的第4祯插入一个关键祯,然后使用椭圆工具绘制个竖直的扁椭圆,并填充上黑色,在第10祯插入关键祯,调整椭园的形状并设置降低其透明度,同样建立一个Motion运动过渡效果然后插入一个图层sound,用来设置飞机下落的声音效果,从外部导入一个爆炸的音效,然后选中图层sound,从属性面板的sound下拉列表中选择所导如的身影,最后将此层也延续到第10祯,时间线如图9所示:图9最后还要添加一些Action动作脚本对其加以控制。新建一个图层ACTION,在第1,2,和10祯分别插入一个关键祯,然后给第一祯添加如下AS:this._x = _root.expX;this._y = _root.expY;给第2祯添加如下AS:this._x=_root.expX;this._y=_root.expY;给第10祯添加如下As:this.removeMovieClip();6.制作记时器:游戏是有一定时间控制的,所以还需要添加一个记时器,使用动态文本可以方便的实现,新建一个Movie clip元件,命名为mTime,在元件编辑状态下,使用文本工具绘制一个矩形文本框,然后在属性面板中设置其为Dynamic动态文本,这样就可以用Action对其中的内容加以控制了,设置其变量名为rTime,然后在文本框前面输入提示信息,如图10所示:图10然后新建一个层,在第一祯添加如下AS:now = new Date();//新建一个Date对象startTime = now.getTime();//设置开始时间为系统时间playTime = _root.playTime;rTime = playTime;在第三祯添加如下AS:now = new Date();currentTime = now.getTime();rTime = playTime-int((currentTime-startTime)/1000);if (!rTime) {_root.gotoAndPlay("reStart");stop ();}//显示并控制记时器中的时间在第5祯添加如下AS:gotoAndPlay (_currentframe-2);到此为止,游戏中需要的元件大部分准备好了,下面就可以开始布置主场景了二:布置主场景1.首先将默认图层layer1重命名为background,使用矩形工具绘制一个和舞台一样大小的矩形,并填充上天蓝色,将图层延续到第50祯。2.新建两个图层分别为start和gun,在start图层上用来设置游戏的开始界面,使用文本工具输入游戏的名称,并将瞄准器放置到图层gun 中,并在属性面板中设置瞄准器的Instance name为pointer,如图11所示:图113.在图层gun的第22祯插入关键祯,输入游戏时间已到的消息,如图12所示;图124.新建一个图层命名为score&time,用来放置记分器和记时器,将记时器mTime放到舞台下面靠右的位置,然后在下面靠左的位置绘制一个动态文本框,设置其变量名为score,用来记录游戏的得分,如图13所示:图13三:给游戏添加Action动作脚本最后的游戏就是添加Action动作脚本了。新建一个图层,命名为ACTION,设置第2祯的祯标签为start, 设置第9祯的祯标签为dup, 设置第15祯的祯标签为gotoDup, 设置第22祯的祯标签为reStart.在第一祯添加如下AS:Mouse.hide();startDrag("/pointer", true);//游戏开始前,首先隐藏鼠标,然后使瞄准器变为可拖动状态sShoot = new Sound();sShoot.attachSound("sShoot");//新建一个sound声音对象,然后从外部导入射击的音效Sshoot,使用attachsound方//法将此声音绑定sExp = new Sound();sExp.attachSound("sExp");////新建一个sound声音对象,然后从外部导入射击的音效Sexp,使用attachsound方//法将此声音绑定stop();在第2祯添加如下AS:score = 0;//设置初始得分为0playTime = 100;//设置游戏时间为100秒var expX;var expY;//定义两变量,代表飞机的坐标cDepth = 100;pDepth = 0;numPlane = 0;numCloud = 0;//定义变量,分别代表飞机和云的深度和数量_root.attachMovie("mP", "pointer", 300);startDrag("/pointer", true);在第9祯添加如下AS:if (Math.random()<0.2 && numCloud<5) {numCloud++;_root.attachMovie("mCloud", "c"+cDepth, cDepth);cDepth = (++cDepth)%100+100;}//复制白云if (Math.random()<0.3 && numPlane<7) {_root.attachMovie("mPlane"+(1+random(3)), "P"+pDepth, pDepth);numPlane++;with (eval("/p"+pDepth)) {_x = -20-random(120);_y = 150+random(60);}pDepth = (++pDepth)%100;}//复制飞机,并使用随机函数设置飞机出现的坐标在第15祯添加如下AS:gotoAndPlay("Dup");//返回到祯Dup复制飞机在第22祯添加如下AS:_root.pointer.removeMovieClip();//游戏结束后,从游戏中删除瞄准器在第50祯添加如下AS:Mouse.show();//显示鼠标for (i=0; i<100; i++) {removeMovieClip ("/c"+(100+i));removeMovieClip ("/p"+i);}stop ();//删除游戏中所有复制出来的飞机和白云最后的时间线如图14所示:图14到这里,一款精彩的空战射击游戏就制作完成了,您可以按照相似的制作方法,制作一款比较传统的纵版射击游戏。此实例其实是设计空战类射击游戏的通用思路,其它飞行射击游戏其实是在此基础上扩展成的,所以还可以进一步丰富游戏的功能,加强游戏的可玩性

4 次浏览
Flash Action应用--鼠控3D旋转
Flash Action应用--鼠控3D旋转

Flash所提供的Action Script动作脚本,其功能之强大已是尽人皆知了,在Flash动画的交互方面起到了重要的作用,不仅如此,Action在三维领域也有其一席之地,下面我们通过一个具体的实例来讲解Flash中3D效果的制作。(点击这里下载.swf和.fla文件)图1所示为本实例的最终效果,动画中可以使用鼠标拖动,从而控制中间的六面线框体自由旋转:图43、创建六面体的节点(vert) 单击Insert Layer新增一个图层,并将其重命名:vert, 按快捷键O选取Oval Tool(椭圆工具),按住Shift键, 在场景中绘制一个直径为10像素的正圆(先绘制,然后选取这个正圆,在其属性面板的W与H(即宽与高)中直接输入10,然后回车,就OK了,如图5所示: 图5确认刚才绘制的圆在选择状态,将其的填充色也改成熟褐色,并按下F8,将其转换成名为hexahedron-vert的MC,实体名:vert 。4、创建拖动控制按钮: 新增一个图层,并将其重命名为:crtl_drag,用椭圆工具在场景中绘制一个直径约12像素的正圆,按F8将其转换成MC,并为其取个实体名:drag_ctrl。双击我们创建的crtl_drag,或在其上单击鼠标右,从弹出的菜单中选择 Edit in place,再次按F8将其转换成buttom(按钮),再次双击,让按钮处于编辑状态,按F6,在hit处插入关键帧, 选择关键帧“Up”,在场景中选择正圆,将其从场景中删去。 ok,所有的元件创键完成,如果你的操作没有错误的话,打开library,各元件 对应的名称应如图6所示,当然,你也可对元件进行美化,就看你的创意了。只实体名与AS中的一致,就可以了。

5 次浏览
商业flash设计经验谈(一)
商业flash设计经验谈(一)

看到这个题目您也许会说,Flash本身就是很酷眩的。很多Flash初学者认为,只要动的元素多就是眩,就是动感十足。其实动态效果设计本身就是一门学问,国外有很多传统动画师可能为此付出了毕生的精力。作为利用Flash来传达思维的网络设计师,应该充分吸取传统动画、卡通、视频等多种表现形式的经验和技巧,真正使你的作品流畅而富于动感。在我这两年来的商业Flash设计中,尝试了很多的动态效果、视觉表现手段,也研究欣赏过不少国外的优秀作品,希望我的一点点心得能够给大家以帮助。作者水平有限,不足之处,请不吝赐教!   文章由一个实例入手,主要从流程设计、节奏控制、速度感、视觉冲击力几个方面谈谈我的商业flash设计感受。  一、设计流程   这里所说的流程就是Flash设计时的工作流程,不论是小组还是个人,这个流程的每一个环节都是必不可少的。   1、静态效果图结构图   任何动画都离不开平面美术,就像好的电影有一个好的美术指导一样。因此在做Flash之前,我们应该先使用Photoshop等软件将整个Flash动画中,几个关键场景和出现元素的效果图画出来。(如图1、2、3)这是一个宣传CDMA移动电话网的片头,设计风格:科技、高速、精准。这3张效果图本身也标志了动画的结构:引子、动画主体、结束总结。如果动画结构更加复杂,比如动画主体当中还有转场等情况,也需要画出更多相应的效果图。

4 次浏览
商业flash设计经验谈(二)
商业flash设计经验谈(二)

二、节奏控制   好的动画应该是视觉冲击与信息传达相结合,流畅充满美感,这些都需要我们为动画设计一个好的整体节奏。   1、起伏   假如我告诉你我要做一个片头动画,动画的开始(引子)是一段渐起的音乐,动态柔和唯美,随着音乐的渐强达到高峰,也进入动画第2阶段,这是动画主体也是信息传达的主要时期,在连续高速的动画过后音乐嘎然而止,进入结束画面,也就是整个动画的结尾。那么这个动画的整体节奏起伏是什么样子呢?如下图:(如图8)。这种节奏更适合做介绍产品的动画,叙事性强。

4 次浏览
教您一招:为Flash MX打造一个完美的共享库
教您一招:为Flash MX打造一个完美的共享库

文/周慧  在Flash课件制作过程中,我们常常要用到共享库,Flash为我们提供了3个公用库:按钮、声音和学习交互,这是系统自带的公用库。因此在公用“库”面板中不能添加新元件和文件夹,不能对其元件进行重命名、删除等操作。但如果对共享库中的元件不太满意,同时又想增加新的内容,怎么办呢?让我来教您一招。图1 “库”面板中的元件  1. 在Flash MX中新建一个空文件,选择“窗口/库”菜单命令,弹出“库”面板,此时面板中无任何元件。  2. 选择“文件/作为库打开”菜单命令,在弹出的“作为库打开”对话框中,选择包括所需元件的Flash源文件,此时打开的是源文件的库而不是所选文件的内容。  3. 在外部文件的“库”面板中,选中所需的元件,将其拖动到新建文件的“库”面板中,成为该“库”面板中的元件(如图1)。  4. 用同样的方法将所需要的素材作为库打开,并添加到新建文件的库面板中。  5.将新文件保存到Flash MX安装目录(如C:\Program Files\Macromedia\Flash MX)中First Run下的Libraries文件夹中,命名为“课件素材.fla”。  6.重新启动Flash,在“窗口”菜单下的“公用库”子菜单中已增加了“课件素材”菜单选项(如图2)。

2 次浏览
总让题目窗口出现在最前面
总让题目窗口出现在最前面

    在信息技术课教学中,经常要让学生做练习,我们一般先把题目的要求输入到一个文档中,存为“Windows操作”、“Word练习题”、“Excel练习题”等,学生要做哪一个练习,只需打开相应的题目,一边看要求,一边做练习。但用一般的记事本或文字编辑软件总不能实现题目要求窗口总在最前面,而是两个窗口来回地切换,这样大大影响了做题的效率。    经过长时间的摸索,我找到了一个简便易用的方法:在Flash MX中制作一个影片文件(AVI),然后用媒体播放器采用总在前面的方式播放,效果如图所示。具体的制作方法如下:    1. 打开Flash MX,按快捷键“Ctrl+J”打开影片属性,设置尺寸:宽350、高180,设置帧频为1fps,并保存为“题目要求”。    2. 选择“文本工具”,在舞台上新建一个静态文本,并在其内输入题目要求,并调整好字体、大小、格式等。    3. 执行“文件”菜单下的“导出影片”命令,保存类型为“AVI视频文件(.avi)”,文件名为“题目要求”。    4. 在出现的对话框中去掉“保持宽高比率”,视频格式设为“8位色”。确定后,压缩方式选择“Microsoft Video 1”。    5. 双击“题目要求.avi”文件,用媒体播放器(Windows Media Player)打开。    6. 执行“查看”菜单下的“选项”命令,做如下设置:    在“播放”标签中选择“始终重复”,在“播放机”标签中的“查看”中选择“最小”,并选中“总在最前”。在“自定义视图”标签中“最小”选项中去掉“控制部件”,[确定]后,就会实现如图所示的效果。    如果要更换练习题的内容,只需将Flash MX中静态文本的内容更改,然后导出影片即可。

11 次浏览
进入Flash MX组件时代之一 组件的概念
进入Flash MX组件时代之一 组件的概念

毋庸置疑,Flash 的发展推动了网络的进步,是Flash给了网络活力与新鲜。现在,Macromedia又给Flash MX 增加了Components UI(UI组件)。有了Components UI后,我们就可以设计功能更加强大的程序,也不必再象以前那样笨拙地设计下拉菜单或是留言板的界面了。我们将会给大家详细讲解Components UI的功能、使用方法及使用技巧等。文章的最后,我们还会通过几个实例地讲解来帮助大家理解,消化我们所讲的内容。    其实,现在的组件就是对Flash5中的SmartClips(智能剪辑)进行了功能增强,但它们都还只是一些拥有参数的影片剪辑。不过,与SmartClips不同的是MX中的组件也已经有了自己的方法,新增的Properties面板也使我们能更加方便的对这些组件进行设计。    现在,FlashMX中只有7个简单的Components UI:CheckBox(复选框)、ComboBox(组合框)、ListBox(列表框)、PushButton(按钮)、RadioButton(单选按钮)、ScrollBar(滚动条),ScrollPane(扩展组合框),如图1所示。

4 次浏览
共计26043条记录 上一页 1.. 454 455 456 457 458 459 460 ..2605 下一页