第2单元动画演出内容的编程设计课件_第1页
第2单元动画演出内容的编程设计课件_第2页
第2单元动画演出内容的编程设计课件_第3页
第2单元动画演出内容的编程设计课件_第4页
第2单元动画演出内容的编程设计课件_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2单元动画演出内容的编程设计项目三交互生日贺卡第2单元动画演出内容的编程设计项目三交互生日贺卡1加入\移除演员在单击鼠标位置动态加入演员发老虎演员素材.fla在单击实例时,移除发斑马素材.fla加入\移除演员在单击鼠标位置动态加入演员§2-1动画演员的增减改造项目1:使演员数量进行动态变换实现交互,鼠标单击加入老虎动物角色,增加10个时,出现瞄准器.移动瞄准器,单击后可删除已加入的老虎角色.§2-1动画演员的增减改造项目1:使演员数量进行动态变换准备素材背景底图、老虎影片剪辑、瞄准器影片剪辑实现思路鼠标单击出现老虎角色的技术支持将老虎元件属性定义为类,单击时不断创建该类的实例定义事件(click)侦听器,编写监听函数copyMc()加入演员。并计数当老虎数量达到10个时,不在增加老虎.用瞄准器删除老虎的技术当计数到10个时,出现瞄准器,单击可以删除老虎演员sh_mc.startDrag(true);删除click侦听器;重新注册侦听器,定义删除函数当只剩最后一个老虎时,不再删除准备素材程序代码varm=1;stage.addEventListener(MouseEvent.CLICK,copyMc);functioncopyMc(me:MouseEvent){ vartCopyMc:tiger=newtiger(); tCopyMc.x=mouseX; tCopyMc.y=mouseY; this.addChild(tCopyMc); m=m+1; if(m>=11){ sh_mc.startDrag(true); stage.removeEventListener(MouseEvent.CLICK,copyMc); stage.addEventListener("click",delMc); functiondelMc(me:MouseEvent){ removeChild(DisplayObject(me.target)); m=m-1; if(m==1){ stage.removeEventListener("click",delMc);} }//增加了DisplayObject()函数,将隐匿的对象转换为显示对象

}}程序代码varm=1;事件的目标对象targetEvent类的target和currentTarget属性target属性存储对事件目标的引用currentTarget属性存储对当前正在处理事件对象的显示列表对象的引用varcircleMC:MovieClip=MovieClip(e.target)还可以写成varcircleMC:MovieClip=e.targetasMovieClip即声明一个名称为circleMC的MovieClip对象,让它等于一个也是MovieClip类型的对象MovieClip(e.target)相当于把e.target转化为MovieClip对象

事件的目标对象targetEvent类的target和库中定义影片剪辑类8个随机彩色气泡鼠标跟随技术实现要点:建立气泡影片剪辑圆注册点不在中心位置,加滤镜阴影效果.制作位置移动动画2.库中定义影片剪辑类ball3.注册帧频侦听事件4.事件函数功能产生类ball的实例,改变其旋转度,颜色,使产生的ball实例变为可拖动.5.产生一定数量后,删除侦听器库中定义影片剪辑类8个随机彩色气泡鼠标跟随技术实现要点:随机彩色气泡鼠标跟随流程图初始化计数器i;申请颜色变量myColor;定义事件函数copyball();注册帧频事件侦听器;i<8产生新的气泡;定义气泡的旋转度;定义气泡的颜色;将气泡添加到主时间轴中;使气泡可拖动;i增加1;i=0;移除帧频事件侦听器;是否随机彩色气泡鼠标跟随初始化计数器i;定义事件函数copyba随机彩色气泡鼠标跟程序代码随机彩色气泡鼠标跟程序代码创建显示列表舞台是Stage类的实例,其属性是通过变量stage属性来引用.Stage类属于容器类,可以在舞台中添加其他显示实例.在默认情况下,主时间轴是显示实例,已添加在舞台中.任何一个显示实例肯定在一定的显示容器中,在实例化显示类时,要使用addChild()方法将显示实例添加到显示列表中.添加和移除显示实例的方法addChild()将显示实例添加到显示列表中addChildAt()通过索引将显示实例添加到显示列表中removeChild()从显示列表中移除显示实例removeChildAt()通过索引从显示列表中移除显示实例要检测显示容器中,有几个显示实例,可以用numChildren属性容器名称.numChildren给显示对象命名显示对象变量.Name=“XXXX”创建显示列表舞台是Stage类的实例,其属性是通过变量sta显示列表示例varsp1:Sprite=newSprite();varsp2:Sprite=newSprite();=“sp2”;varsp3:Sprite=newSprite();varsp4:Sprite=newSprite();S=“sp2_sp4”;//name属性定义实例名stage.addChild(sp1);this.addChild(sp2);sp2.addChild(sp3);sp2.addChild(sp4);rootstagesp1sp2sp3sp4trace(stage.numChildren);//检测某个容器有几个显示实例trace(this.numChildren);trace(sp2.numChildren);注意:程序创建的显示对象,不能通过简单的点语法来访问;显示列表的实例是手工创建的影片剪辑实例时,可用点语法向下访问显示列表示例varsp1:Sprite=newSpritMovieClip、Sprite、Shape的区别MovieClip:拥有一个时间轴,动态类。三者都包括graphics属性Sprite:不需要时间轴的对象的相应基类,是去掉了时间轴的MovieClip,不是动态类。对象是显示对象容器,Sprite对象支持鼠标单击事件。Shape:创建简单形状。Shape对象比包含相同图形的Sprite对象消耗的内存少,不支持鼠标单击事件(startDrag()),不是容器不能包含子显示对象。MovieClip、Sprite、Shape的区别Movie上一级引用从下向上访问:parent属性trace();trace(sp4.parent.P);rootstagesp1sp2sp3sp4下一级引用getChildAt();据索引来访问getChildByName(name:String);据实例名来访问01上一级引用从下向上访问:parent属性rootstages舞台内反复运动的足球足球素材.fla(P36)通过帧频事件,以一定的增量不断改变影片剪辑的X、Y坐标.If语句判断上下左右边界的处理Y<0Y>300X<0X>500舞台内反复运动的足球足球素材.fla(P36)with语句多次参考元件的各个属性或方法,不需一再指定元件的名称。从而潜在地减少需要编写的代码量with(实例名称){程序语句}2.with(mymc){ x=100; y=100; scaleX=2; scaleY=2; alpha=0.9; rotation=45;}示例:福到了1.绘制影片剪辑,30*30正方形,在其上部输入福字并旋转135度,名为m_mc,放于场景在上角.with语句多次参考元件的各个属性或方法,不需一再指定元件的演员由远而近走来的效果(move源文件.fla)角色在场景中进行移动,同时有近大远小的效果.用with进行源文件的修改(move.fla)§2-2演员的动作表演演员由远而近走来的效果(move源文件.fla)§2-2演员改造项目2演员按指定位置行走(xymove.fla)角色在场景中,能按照鼠标点击的位置进行移动,同时有近大远小的效果.参P42人物朝指定位置行走(女孩走路素材.fla)§2-2演员的动作表演改造项目2演员按指定位置行走(xymove.fla)§2-2准备素材背景底图、女孩走路影片剪辑gril_mc实现思路设定gril_mc的初始位置,定义目标位置,走路动作停止.设置侦听器函数,编写监听函数setXY,使女孩走路的目标位置由单击鼠标决定.设置enterFrame事件侦听器,编写女孩走到目标位置的实现方法.主要包括XY的变化,大小的变化.准备素材程序代码varmoveL=this.height-girl_mc.height;//this.height是场景中对象重叠时,最高的数据;girl_mc.x=250;girl_mc.y=18;varmyX=girl_mc.x;varmyY=girl_mc.y;girl_mc.stop();stage.addEventListener("click",setXY);functionsetXY(me:MouseEvent){ myX=this.mouseX; myY=this.mouseY; girl_mc.play();}

stage.addEventListener("enterFrame",moveGirl);functionmoveGirl(me:Event){with(girl_mc){if(y<moveL){ if(x<myX){x=x+2;} elseif(x>myX){x=x-2; } if(y<myY){ y=y+2; height+=(height/120); width+=(width/120);} elseif(y>myY){ y=y-2; height-=(height/120); width-=(width/120);} } else{ stop();}if(y==myY&&x==myX){ stop(); }}}程序代码varmoveL=this.height-girl作业完成仿真3D角色移动,参见书P44作业完成知识技能总结计数器变量的定义var变量名:数据类型数据类型简单类型5个:int(32有符号整数).vara:int=3.45;varname:String=“fox”uint(32位无符号整数,非负整数)表示颜色值、键控代码值等varcolor:uint=0xff9900;trace(color);输出表示十进制整数的颜色值constKEY_A:uint=65;键A的代码值Number浮点运算对于浮点运算不能用==判断2个数是否相等,浮点计算有误差trace(0.15+0.15==0.3)truetrace(0.1+0.2==0.3)false.知识技能总结知识技能总结数据类型简单类型:Boolean布尔值.非此即彼的数据,取值ture,false;varisRight:

Boolean=true;String类型,由单引号或双引号括起来的字符串字符串的长度与索引:varname:String=“foxhhyy”;trace(name.length);7索引从0开始trace(name.charAt(2));x—返回指定位置索引的字符知识技能总结知识技能总结数据类型复杂数据类型:包与类flash包是FlashCS和Flex共用的包,是AS3基础包fl包是FlashCS组件相关的包,FlashCS专有包。

引用数据类型函数类型类类型接口类型flash.utils包中的部分函数fl与flash部分包Object,MovieClip,SimpleButton,ErrorTextField,Date,ArrayFunction,XMLAS3的顶级类知识技能总结引用数据类型函数类型类类型接口类型flash.u知识技能总结使用Stage类stage是Stage类的实例,常用属性:stage.frameRate;舞台帧速度stage.stageWidth,stage.stageHeightstage.displayState;(“fullScreen”,”normal)”示例(isFull.fla):编程实现用单击方式改变全屏或退出全屏交互程序知识技能总结知识技能总结stage.displayState;(“fullScreen”,”normal)”示例(isFull.fla):编程实现用单击方式改变全屏或退出全屏交互程序varisFull:Boolean=false;stage.addEventListener("click",fullscreen);functionfullscreen(me:Event){ isFull=!isFull; if(isFull){ stage.displayState="fullScreen"; } else{ stage.displayState="normal"; }}知识技能总结varisFull:Boolean=fals知识技能总结使用MoiveClip类用程序(编程绘制填充圆形.fla)实现在舞台上建立一个圆形r=15影片剪辑对象,填充为红色,边线粗细2,黑色。用MoiveClip类的graphics属性绘制圆形.显示对象用addChild()添加到显示列表中varc_mc:MovieClip=newMovieClip();c_mc.graphics.lineStyle(2,0x000000);c_mc.graphics.beginFill(0xff0000);c_mc.graphics.drawCircle(250,175,15);addChild(c_mc);知识技能总结varc_mc:MovieClip=newM§2-2演员的动作表演项目2:持续旋转与变换颜色效果绵羊角色会随着鼠标位置来改变自身的旋转角度大小,旋转速度与方向.其背后光束效果,会随机变换颜色rotation&chgcolor素材.fla§2-2演员的动作表演项目2:持续旋转与变换颜色效果准备素材背景底图绵羊影片剪辑Sheep_mc光束color_mcAS图层实现思路设定Sheep_mc的最大转速设置侦听器函数,enterFrame事件.编写监听函数gotRot,使Sheep_mc的_rotation属性会根据当前鼠标的位置进行旋转.对象的旋转属性指定影片剪辑的旋转角度.属性值在0~180顺时针方向-180~0逆时针方向.超出范围时,数值加上或减去360的倍数即可.如:mc.rotation=450等于mc.rotation=90实现光束颜色的随机改变.准备素材程序代码varmaxSpeed:int=60;this.addEventListener("enterFrame",goRot);functiongoRot(me:Event){ vardifX=this.mouseX; vardifY=this.mouseY; varnum=difX+difY; num=Math.round(num/10); varspeed=maxSpeed-num; sheep_mc.rotation+=speed;//0-180顺时针,-180-0逆时针;

//实现背景颜色1秒的变换 varcolor_array:Array=[0xff0000,0x00ff00,0xffff00,0x0000ff]; varmy_color:ColorTransform=newColorTransform(); vari:Number; i=Math.floor(Math.random()*color_array.length); my_color.color=color_array[i]; color_mc.transform.colorTransform=my_color; }程序代码varmaxSpeed:int=60;知识技能总结顶级类数学MathMath类的属性称为类属性,通过类名来访问。常用属性和方法:Math.PI,Math.sin(),Math.cos(),Math.random(),Math.floor(),Math.round()Math.sin()\cos()是以弧度为单位,要将角度转为弧度:angle*Math.PI/180=angle*0.0174533;随机方法Math.random().返回0<=Math.random()<1小数.如果得到A~B之间的随机数,用下面代码表示:A+(B-A)*Math.random();如:Math.random()*10+10;返回大于等于10,小于20的小数知识技能总结知识技能总结顶级类数学Math.random()*取整方法1.将小数赋值给int或uint类型的变量时,小数部分被忽略vart:uint=Math.random()*11+10;//产生10到20间的整数,包括10、20Vart:int=Math.random()*21-10;返回的数据范围是多少?2.Math.floor(3.59/-3.59);返回小于等于最接近指定值的整数值.3/-43.Math.round(3.59/-3.5);返回最接近指定值的整数值(较大).4/-3知识技能总结知识技能总结取随机整数时,应使用floor()方法而不是round()方法进行随机取整.例:for(vari:int=0;i<100;i++)trace(Math.round(Math.random()*21));//返回包括21在内的整数;当random()返回的小数大于20并小于20.5时,round()取整为20;大于20.5取整为21;所以0的概率少了一半;trace(Math.floor(Math.random()*21));//返回不包括21在内的整数且随机数准确.参见书P60实例知识技能总结知识技能总结顶级类数组Array:将一系列数据有序地组织起来,进行批量的处理和操作。varemployee:Array=[“Adobe”,”Facebook”,”Apple”]或一系列颜色值varemployee:Array=newArray();employee[0]=“Adobe”;employee[1]=“Facebook”;employee.length数组长度;数组下标从0知识技能总结知识技能总结调整颜色显示对象步骤**调整Color属性ColorTransform类定义在flash.geom包中(flash.geom.ColorTransform).其方法可以调整显示对象的颜色.每个显示对象都有transform,ColorTransform属性.1.先构造函数newColorTransform()varmyColor:ColorTransform=newColorTransform();2.调整color属性设置颜色值myColor.color=0xffffff;3.将ColorTransform实例myColor重新分配给对象(transform.colorTransform)myObject.transform.colorTransform=myColor;注意:颜色不会应用于MC的背景知识技能总结知识技能总结调整颜色显示对象步骤**调整乘数属性和偏移属性(依鼠标改变颜色.fla)显示对象有多种颜色,不希望完全重新调整对象的颜色,而根据现有颜色来调整显示对象的颜色。ColorTransform有一组乘数属性和偏移属性进行此类调整。1.乘数属性redMultiplier、greenMultiplier、blueMultiplier、alphaMultiplier可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和Alpha透明度(在0-1范围取值,默认1正常)。增强或削弱显示对象上的某些颜色。

2.偏移属性redOffset、greenOffset、blueOffset、alphaOffset额外增加对象上某种颜色值。颜色属性面板-高级知识技能总结颜色属性面板-高级画面颜色动态改变bg_mc.addEventListener(MouseEvent.MOUSE_MOVE,rg);functionrg(e:MouseEvent){ varct:ColorTransform=newColorTransform();

//根据鼠标位置设置红色和绿色乘数,鼠标x轴位置控制红色;y轴位置控制绿色 //鼠标从图像左侧到右侧,红色值的范围从0%到100%(从无红色到正常图像红色) //鼠标从图像上方到下方,绿色值的范围从0%到100%(从无绿色到正常图像绿色) ct.redMultiplier=this.mouseX/bg_mc.width; ct.greenMultiplier=this.mouseY/bg_mc.height; bg_mc.transform.colorTransform=ct;}画面颜色动态改变bg_mc.addEventListener编程实现1.产生漫天雪花效果(复制雪花.fla,雪花飘起来.fla)2.子弹沿螺旋线运动效果(沿螺旋线运动的子弹sin().fla)编程实现漫天雪花的编程思想制作雪花影片剪辑元件,在库中设置属性类名:snow产生一个显示对象容器,以便将雪花实例放在该容器中利用构造函数new产生250朵雪花实例,并修改他们的XY大小等属性,充满舞台.让雪花飘使雪花飘起来,利用帧频事件触发,定义侦听器编写事件触发函数,不断改变雪花的Y属性漫天雪花的编程思想制作雪花影片剪辑元件,在库中设置属性类名:for(vari:uint=1;i<250;i++){varxue_mc:snow=newsnow();//库中雪花剪辑元件,属性类名为snow;//xue_="xue"+String(i);xue_mc.x=640*Math.random();xue_mc.y=480*Math.random();xue_mc.scaleX=xue_mc.scaleY=Math.random();addChild(xue_mc);xue_mc.addEventListener(Event.ENTER_FRAME,moveY);}functionmoveY(e:Event){varspeed:uint=e.target.width*Math.random()/5;e.target.y+=speed;if(e.target.y>480){e.target.y=0;}}for(vari:uint=1;i<250;i++){作业:定制T恤颜色编程实现以下功能据用户对颜色的需求,决定T恤的颜色.要求可选颜色与书中的颜色至少有一半以上不同作业:定制T恤颜色编程实现以下功能实现步骤建立11个不同的颜色按钮,命名a_btn,b_btn…用属性面板调整色调并记录色调值.建立衣架和阴影的MC建立衣服影片剪辑cloth_mc,色调为红.编程程序定义颜色数组,存放11个按钮的颜色值varcolor_array=[0xff0000,0x00ff00,0x0000ff,…]为11个颜色按钮注册事件侦听器,事件为“click”a_btn.addEventListener(“click”,clothColor);事件处理函数据用户单击的颜色,为衣服定制颜色建立ColorTransform的实例对象varmyColor:ColorTransform=newColorTransform();用分支语句判断myColor.Color的颜色值将颜色值应用在衣服上cloth_mc.Transform.ColorTransform=myColor;实现步骤制作震动效果(发素材shake素材.fla)技术要点:将震动影子对象置于顶层,透明度属性60%,位置不重叠使该对象与原对象位置随机进行微小动态变化建立帧频事件侦听器使震动影子对象的坐标位置随机微小变化制作震动效果(发素材shake素材.fla)可调速的滑动广告牌利用鼠标指针的X轴位置,决定广告牌的滑动方向(向左或向右)与滑动速度案例制作要点(广告素材.fla)可视元素广告牌影片剪辑(六部影片画面,组合成3组)广告牌影片剪辑的移动速度由当前光标的位置确定(250-this.mouseX)/10;以舞台中心位置为中心广告牌内容的无缝对接技术左边X<0右边X>850可调速的滑动广告牌利用鼠标指针的X轴位置,决定广告牌的滑动方4369游戏公司委托XX小组开发一款网页游戏《水果丰收》,尺寸大小600*400,帧频24fps.水果有西瓜、桔子、火龙果、草莓(可以创新)游戏开始后,用鼠标移动舞台的小女孩(可以创新)接住从天而降的水果。水果的速度一轮比一轮快,4种水果的出现要随机。接住西瓜6分,桔子2分,草莓1分,火龙果-3分。游戏界面显示总分,时间100秒倒计时,时间到显示重玩一次,总分清零。有声效加分(背景音乐、水果收获音效)项目三《水果丰收》Flash游戏制作4369游戏公司委托XX小组开发一款网页游戏《水果丰收》,尺网页游戏《水果丰收》项目实施要求分组进行,6人一组,自由组合。要求:男女搭配,特长搭配。各自为小组起名,并设计小组LOGO。选定项目组长(确保每位成员参与,明确分工);确定演讲汇报员(制作PPT,汇报本组成果);确定记录员,记录小组会议讨论情况。上交时间:4.12各小组上交作品,演示答辨,小组间评价。项目三水果丰收Flash游戏制作网页游戏《水果丰收》项目实施要求项目三水果丰收Flash游游戏实现思路制作计分器影片剪辑注册帧频事件侦听器,事件函数为文本框设置分数值parent.score制作计时器影片剪辑初值hastime=100秒,开始时间值startime注册帧频事件侦听器,事件函数处理倒计时hastime-Math.round(nowtime-startime)/1000)倒计时为0,移除该侦听器游戏转到结束场景;游戏实现思路制作计分器影片剪辑游戏实现思路制作影片剪辑水果对象类4种水果各一帧设置水果的初始位置在舞台上边缘之外this.x=Math.random()*500+50;(50-550间)this.y=-40;下落速度speed=5+Math.random()*30;(5-35间)水果显示的各类和对应的分数西瓜、桔子、草莓、火龙果出现的可能性10%,20%,30%,40%.0.01.0西瓜桔子草莓火龙果游戏实现思路制作影片剪辑水果对象类0.01k=Math.random();if(k<0.1){ gotoAndStop(1); thisScore=root.S1;}elseif(k<0.3){ gotoAndStop(2); thisScore=root.S2;}elseif(k<0.6){ gotoAndStop(3); thisScore=root.S3;}else{ gotoAndStop(4); thisScore=root.S4;}注册帧频事件侦听器;事件函数:设置下落速度判断水果超出边界时,移除侦听器和水果对象;否则,判断水果是否与小女孩手中的盘接触,是,加分;移除侦听和水果;k=Math.random();注册帧频事件侦听器;游戏实现思路规划主场景第一帧内容,游戏标题,水果对应分数,开始按钮第二帧内容,计时器、计分器、小女孩、分数显示,隐藏鼠标.startDrag(t/f,拖曳区域);拖曳区域为矩形对象,指定拖曳影片剪辑时的限制范围第三帧内容,不停地复制水果,形成大量水果下落效果第四帧内容,最后统计最终得分,显示再玩一次。游戏实现思路规划主场景碰撞检测形状与形状碰撞hitTestObject();如果2个对象在任意一点上重叠或交叉,该方法返回true;否则返回false。注意:1.碰撞是以显示对象的外接矩形框是否重叠作为评判的依据。2.剪辑对象运行时有旋转时,采用的是大虚线框作为冲突检测的矩形区域碰撞检测形状与形状碰撞hitTestObject();碰撞检测点与形状碰撞显示对象.hitTestPoint(X坐标,Y坐标,[判定区域])检测某个点是否与对象碰撞.判定区域=布尔值。true以影片剪辑实际形状,为评估区域;默认值false以影片剪辑矩形形状,范围框,为评估区域;坐标点判定区域=true判定区域=falseAfalsetrueBtruetrueCfalsefalse碰撞检测点与形状碰撞坐标点判定区域=true判定区域=fal烛光点燃注册3个侦听函数MOUSE_DOWN、MOUSE_UP使火柴拖动、停止ENTER_FRAME使蜡烛点燃,火柴熄灭烛光点燃注册3个侦听函数stage.addEventListener(MouseEvent.MOUSE_DOWN,hcdrag);functionhcdrag(e:MouseEvent){ if(hc_mc.hitTestPoint(mouseX,mouseY)){ hc_mc.startDrag(true); }

}stage.addEventListener(MouseEvent.MOUSE_UP,hcstop);functionhcstop(e:MouseEvent){ hc_mc.stopDrag(); }stage.addEventListener(Event.ENTER_FRAME,hit);functionhit(e:Event){ if(hc_mc.hitTestObject(hy_mc)){ hy_mc.gotoAndPlay(2); hc_mc.hg.alpha=0; }}stage.addEventListener(MouseEv设置对象拖动的有效范围案例:主角拖动与左右走向varrect:Rectangle=newRectangle(50,380,420,0);//拖动范围mc.startDrag(true,rect);varTempX:Number;this.addEventListener(MouseEvent.MOUSE_MOVE,checkMove);functioncheckMove(e:MouseEvent){ if(e.stageX<TempX){ mc.scaleX=-1;//向左走 }else{ mc.scaleX=1;//向右走 } TempX=e.stageX;//e.stageX=e.target.x }设置对象拖动的有效范围案例:主角拖动与左右走向矩形与形状碰撞矩形的4个顶点与形状的检测,即点与形状的检测,是迷宫游戏的基础。矩形与形状碰撞矩形的4个顶点与形状的检测,即点与形状的检测,AS3声音体系结构使用flash.media包中的以下类Sound类处理声音加载、管理基本声音属性及启动声音播放.SoundChannel类控制声音左右声道音量SoundChannelContext加载声音时使用的缓冲秒数,该对象作哦Sound.load()方法的参数.SoundMixer多个声道混合SoundTranform包含控制音量和声相的值等声音的编程处理AS3声音体系结构使用flash.media包中的以下类声将声音导入到库中进行加载库中选择声音链接,选链接第1项为AS导出生成声音的类名称。编程vars:Sound=newblue();//blue为声音类名称s.play();声音的编程处理将声音导入到库中进行加载声音的编程处理声音文件的外部加载程序与声音文件保存在同一目录下编程varurl:URLRequest=newURLRequest("url.mp3");

vars:Sound=newSound(url);s.play();为点燃蜡烛配音声音的编程处理声音文件的外部加载声音的编程处理项目3《水果丰收》总结什么样的游戏才是好游戏?可玩性:游戏的完整性、流畅程度、程序的健壮性(处理程序各种异常,避免运行错误)。趣味性:激起玩家的某种良性情感,包括成就感、荣誉感、获得财富、力量和社会交流。感染力:场面宏伟、音效出众等。人性化操作:人机互动提出的要求。如街机街头霸王,操作简化不失趣味;反恐精英CS,ASDF空格鼠标的完美结合。星际争霸左右开弓。游戏操作越简单越好。项目3《水果丰收》总结什么样的游戏才是好游戏?项目3《水果丰收》总结游戏制作的一般过程创意收集、情节设计、设计文档、详细设计、美工与音效设计、程序设计、测试与发布等阶段。设计文档(《尊》设计文档)流程图设计贯穿于游戏总体设计到程序编码的整个过程。它给出了游戏的总体框架、程序走向和关键算法,是游戏代码的灵魂。项目3《水果丰收》总结游戏制作的一般过程项目3《水果丰收》总结建立游戏资源库角色资源库:游戏角色可能用到的视图、动作、表情、特技以元件形式放在库中通用框架资源库:建立游戏的基础程序架构,相当于游戏引擎。据游戏的类型不同,可以设计回合制游戏、过关类游戏、角色扮演、网络互动等多个通用框架。音效资源库代码资源库:下载进度条、计数器、计时器。包含界面和程序,以影片剪辑形式存于共享库中。特定项目资源库项目3《水果丰收》总结建立游戏资源库项目3《水果丰收》总结作品性能优化正常情况下,Flash作品是按帧间隔时间顺利地播放动画以及执行程序。但前提是,每一帧内的所有操作包括位图、矢量图绘制、代码执行等,能够在少于帧间隔时间内完成。如果不能完成,就会产生延迟,游戏画面就卡住了。Flash最多允许一帧的延迟时间为15S。尽量避免出现,一帧的操作时间超过帧间隔时间项目3《水果丰收》总结作品性能优化项目3《水果丰收》总结作品性能优化复杂的矢量图形,尽量降低矢量图的曲线数。通过修改|形状|优化实现。具有大量复杂渐变效果的图形。渐变动画是消耗CPU的大户。如一座彩虹渐变动画,改用位图过度使用Alpha透明度的图形。透明度需要渲染,和重新计算叠加部分,需要大量CPU资源。过多的单独的动画或者运动区域。位图替代,降低品质效率低下的代码。优化代码,实时性要求高的游戏,帧频提高30-50fps.其他因素项目3《水果丰收》总结作品性能优化呈现生日礼物3份,选择点燃生日烛光播放生日祝福-音乐播放器项目三生日互动贺卡呈现生日礼物3份,选择项目三生日互动贺卡第2单元动画演出内容的编程设计项目三交互生日贺卡第2单元动画演出内容的编程设计项目三交互生日贺卡65加入\移除演员在单击鼠标位置动态加入演员发老虎演员素材.fla在单击实例时,移除发斑马素材.fla加入\移除演员在单击鼠标位置动态加入演员§2-1动画演员的增减改造项目1:使演员数量进行动态变换实现交互,鼠标单击加入老虎动物角色,增加10个时,出现瞄准器.移动瞄准器,单击后可删除已加入的老虎角色.§2-1动画演员的增减改造项目1:使演员数量进行动态变换准备素材背景底图、老虎影片剪辑、瞄准器影片剪辑实现思路鼠标单击出现老虎角色的技术支持将老虎元件属性定义为类,单击时不断创建该类的实例定义事件(click)侦听器,编写监听函数copyMc()加入演员。并计数当老虎数量达到10个时,不在增加老虎.用瞄准器删除老虎的技术当计数到10个时,出现瞄准器,单击可以删除老虎演员sh_mc.startDrag(true);删除click侦听器;重新注册侦听器,定义删除函数当只剩最后一个老虎时,不再删除准备素材程序代码varm=1;stage.addEventListener(MouseEvent.CLICK,copyMc);functioncopyMc(me:MouseEvent){ vartCopyMc:tiger=newtiger(); tCopyMc.x=mouseX; tCopyMc.y=mouseY; this.addChild(tCopyMc); m=m+1; if(m>=11){ sh_mc.startDrag(true); stage.removeEventListener(MouseEvent.CLICK,copyMc); stage.addEventListener("click",delMc); functiondelMc(me:MouseEvent){ removeChild(DisplayObject(me.target)); m=m-1; if(m==1){ stage.removeEventListener("click",delMc);} }//增加了DisplayObject()函数,将隐匿的对象转换为显示对象

}}程序代码varm=1;事件的目标对象targetEvent类的target和currentTarget属性target属性存储对事件目标的引用currentTarget属性存储对当前正在处理事件对象的显示列表对象的引用varcircleMC:MovieClip=MovieClip(e.target)还可以写成varcircleMC:MovieClip=e.targetasMovieClip即声明一个名称为circleMC的MovieClip对象,让它等于一个也是MovieClip类型的对象MovieClip(e.target)相当于把e.target转化为MovieClip对象

事件的目标对象targetEvent类的target和库中定义影片剪辑类8个随机彩色气泡鼠标跟随技术实现要点:建立气泡影片剪辑圆注册点不在中心位置,加滤镜阴影效果.制作位置移动动画2.库中定义影片剪辑类ball3.注册帧频侦听事件4.事件函数功能产生类ball的实例,改变其旋转度,颜色,使产生的ball实例变为可拖动.5.产生一定数量后,删除侦听器库中定义影片剪辑类8个随机彩色气泡鼠标跟随技术实现要点:随机彩色气泡鼠标跟随流程图初始化计数器i;申请颜色变量myColor;定义事件函数copyball();注册帧频事件侦听器;i<8产生新的气泡;定义气泡的旋转度;定义气泡的颜色;将气泡添加到主时间轴中;使气泡可拖动;i增加1;i=0;移除帧频事件侦听器;是否随机彩色气泡鼠标跟随初始化计数器i;定义事件函数copyba随机彩色气泡鼠标跟程序代码随机彩色气泡鼠标跟程序代码创建显示列表舞台是Stage类的实例,其属性是通过变量stage属性来引用.Stage类属于容器类,可以在舞台中添加其他显示实例.在默认情况下,主时间轴是显示实例,已添加在舞台中.任何一个显示实例肯定在一定的显示容器中,在实例化显示类时,要使用addChild()方法将显示实例添加到显示列表中.添加和移除显示实例的方法addChild()将显示实例添加到显示列表中addChildAt()通过索引将显示实例添加到显示列表中removeChild()从显示列表中移除显示实例removeChildAt()通过索引从显示列表中移除显示实例要检测显示容器中,有几个显示实例,可以用numChildren属性容器名称.numChildren给显示对象命名显示对象变量.Name=“XXXX”创建显示列表舞台是Stage类的实例,其属性是通过变量sta显示列表示例varsp1:Sprite=newSprite();varsp2:Sprite=newSprite();=“sp2”;varsp3:Sprite=newSprite();varsp4:Sprite=newSprite();S=“sp2_sp4”;//name属性定义实例名stage.addChild(sp1);this.addChild(sp2);sp2.addChild(sp3);sp2.addChild(sp4);rootstagesp1sp2sp3sp4trace(stage.numChildren);//检测某个容器有几个显示实例trace(this.numChildren);trace(sp2.numChildren);注意:程序创建的显示对象,不能通过简单的点语法来访问;显示列表的实例是手工创建的影片剪辑实例时,可用点语法向下访问显示列表示例varsp1:Sprite=newSpritMovieClip、Sprite、Shape的区别MovieClip:拥有一个时间轴,动态类。三者都包括graphics属性Sprite:不需要时间轴的对象的相应基类,是去掉了时间轴的MovieClip,不是动态类。对象是显示对象容器,Sprite对象支持鼠标单击事件。Shape:创建简单形状。Shape对象比包含相同图形的Sprite对象消耗的内存少,不支持鼠标单击事件(startDrag()),不是容器不能包含子显示对象。MovieClip、Sprite、Shape的区别Movie上一级引用从下向上访问:parent属性trace();trace(sp4.parent.P);rootstagesp1sp2sp3sp4下一级引用getChildAt();据索引来访问getChildByName(name:String);据实例名来访问01上一级引用从下向上访问:parent属性rootstages舞台内反复运动的足球足球素材.fla(P36)通过帧频事件,以一定的增量不断改变影片剪辑的X、Y坐标.If语句判断上下左右边界的处理Y<0Y>300X<0X>500舞台内反复运动的足球足球素材.fla(P36)with语句多次参考元件的各个属性或方法,不需一再指定元件的名称。从而潜在地减少需要编写的代码量with(实例名称){程序语句}2.with(mymc){ x=100; y=100; scaleX=2; scaleY=2; alpha=0.9; rotation=45;}示例:福到了1.绘制影片剪辑,30*30正方形,在其上部输入福字并旋转135度,名为m_mc,放于场景在上角.with语句多次参考元件的各个属性或方法,不需一再指定元件的演员由远而近走来的效果(move源文件.fla)角色在场景中进行移动,同时有近大远小的效果.用with进行源文件的修改(move.fla)§2-2演员的动作表演演员由远而近走来的效果(move源文件.fla)§2-2演员改造项目2演员按指定位置行走(xymove.fla)角色在场景中,能按照鼠标点击的位置进行移动,同时有近大远小的效果.参P42人物朝指定位置行走(女孩走路素材.fla)§2-2演员的动作表演改造项目2演员按指定位置行走(xymove.fla)§2-2准备素材背景底图、女孩走路影片剪辑gril_mc实现思路设定gril_mc的初始位置,定义目标位置,走路动作停止.设置侦听器函数,编写监听函数setXY,使女孩走路的目标位置由单击鼠标决定.设置enterFrame事件侦听器,编写女孩走到目标位置的实现方法.主要包括XY的变化,大小的变化.准备素材程序代码varmoveL=this.height-girl_mc.height;//this.height是场景中对象重叠时,最高的数据;girl_mc.x=250;girl_mc.y=18;varmyX=girl_mc.x;varmyY=girl_mc.y;girl_mc.stop();stage.addEventListener("click",setXY);functionsetXY(me:MouseEvent){ myX=this.mouseX; myY=this.mouseY; girl_mc.play();}

stage.addEventListener("enterFrame",moveGirl);functionmoveGirl(me:Event){with(girl_mc){if(y<moveL){ if(x<myX){x=x+2;} elseif(x>myX){x=x-2; } if(y<myY){ y=y+2; height+=(height/120); width+=(width/120);} elseif(y>myY){ y=y-2; height-=(height/120); width-=(width/120);} } else{ stop();}if(y==myY&&x==myX){ stop(); }}}程序代码varmoveL=this.height-girl作业完成仿真3D角色移动,参见书P44作业完成知识技能总结计数器变量的定义var变量名:数据类型数据类型简单类型5个:int(32有符号整数).vara:int=3.45;varname:String=“fox”uint(32位无符号整数,非负整数)表示颜色值、键控代码值等varcolor:uint=0xff9900;trace(color);输出表示十进制整数的颜色值constKEY_A:uint=65;键A的代码值Number浮点运算对于浮点运算不能用==判断2个数是否相等,浮点计算有误差trace(0.15+0.15==0.3)truetrace(0.1+0.2==0.3)false.知识技能总结知识技能总结数据类型简单类型:Boolean布尔值.非此即彼的数据,取值ture,false;varisRight:

Boolean=true;String类型,由单引号或双引号括起来的字符串字符串的长度与索引:varname:String=“foxhhyy”;trace(name.length);7索引从0开始trace(name.charAt(2));x—返回指定位置索引的字符知识技能总结知识技能总结数据类型复杂数据类型:包与类flash包是FlashCS和Flex共用的包,是AS3基础包fl包是FlashCS组件相关的包,FlashCS专有包。

引用数据类型函数类型类类型接口类型flash.utils包中的部分函数fl与flash部分包Object,MovieClip,SimpleButton,ErrorTextField,Date,ArrayFunction,XMLAS3的顶级类知识技能总结引用数据类型函数类型类类型接口类型flash.u知识技能总结使用Stage类stage是Stage类的实例,常用属性:stage.frameRate;舞台帧速度stage.stageWidth,stage.stageHeightstage.displayState;(“fullScreen”,”normal)”示例(isFull.fla):编程实现用单击方式改变全屏或退出全屏交互程序知识技能总结知识技能总结stage.displayState;(“fullScreen”,”normal)”示例(isFull.fla):编程实现用单击方式改变全屏或退出全屏交互程序varisFull:Boolean=false;stage.addEventListener("click",fullscreen);functionfullscreen(me:Event){ isFull=!isFull; if(isFull){ stage.displayState="fullScreen"; } else{ stage.displayState="normal"; }}知识技能总结varisFull:Boolean=fals知识技能总结使用MoiveClip类用程序(编程绘制填充圆形.fla)实现在舞台上建立一个圆形r=15影片剪辑对象,填充为红色,边线粗细2,黑色。用MoiveClip类的graphics属性绘制圆形.显示对象用addChild()添加到显示列表中varc_mc:MovieClip=newMovieClip();c_mc.graphics.lineStyle(2,0x000000);c_mc.graphics.beginFill(0xff0000);c_mc.graphics.drawCircle(250,175,15);addChild(c_mc);知识技能总结varc_mc:MovieClip=newM§2-2演员的动作表演项目2:持续旋转与变换颜色效果绵羊角色会随着鼠标位置来改变自身的旋转角度大小,旋转速度与方向.其背后光束效果,会随机变换颜色rotation&chgcolor素材.fla§2-2演员的动作表演项目2:持续旋转与变换颜色效果准备素材背景底图绵羊影片剪辑Sheep_mc光束color_mcAS图层实现思路设定Sheep_mc的最大转速设置侦听器函数,enterFrame事件.编写监听函数gotRot,使Sheep_mc的_rotation属性会根据当前鼠标的位置进行旋转.对象的旋转属性指定影片剪辑的旋转角度.属性值在0~180顺时针方向-180~0逆时针方向.超出范围时,数值加上或减去360的倍数即可.如:mc.rotation=450等于mc.rotation=90实现光束颜色的随机改变.准备素材程序代码varmaxSpeed:int=60;this.addEventListener("enterFrame",goRot);functiongoRot(me:Event){ vardifX=this.mouseX; vardifY=this.mouseY; varnum=difX+difY; num=Math.round(num/10); varspeed=maxSpeed-num; sheep_mc.rotation+=speed;//0-180顺时针,-180-0逆时针;

//实现背景颜色1秒的变换 varcolor_array:Array=[0xff0000,0x00ff00,0xffff00,0x0000ff]; varmy_color:ColorTransform=newColorTransform(); vari:Number; i=Math.floor(Math.random()*color_array.length); my_color.color=color_array[i]; color_mc.transform.colorTransform=my_color; }程序代码varmaxSpeed:int=60;知识技能总结顶级类数学MathMath类的属性称为类属性,通过类名来访问。常用属性和方法:Math.PI,Math.sin(),Math.cos(),Math.random(),Math.floor(),Math.round()Math.sin()\cos()是以弧度为单位,要将角度转为弧度:angle*Math.PI/180=angle*0.0174533;随机方法Math.random().返回0<=Math.random()<1小数.如果得到A~B之间的随机数,用下面代码表示:A+(B-A)*Math.random();如:Math.random()*10+10;返回大于等于10,小于20的小数知识技能总结知识技能总结顶级类数学Math.random()*取整方法1.将小数赋值给int或uint类型的变量时,小数部分被忽略vart:uint=Math.random()*11+10;//产生10到20间的整数,包括10、20Vart:int=Math.random()*21-10;返回的数据范围是多少?2.Math.floor(3.59/-3.59);返回小于等于最接近指定值的整数值.3/-43.Math.round(3.59/-3.5);返回最接近指定值的整数值(较大).4/-3知识技能总结知识技能总结取随机整数时,应使用floor()方法而不是round()方法进行随机取整.例:for(vari:int=0;i<100;i++)trace(Math.round(Math.random()*21));//返回包括21在内的整数;当random()返回的小数大于20并小于20.5时,round()取整为20;大于20.5取整为21;所以0的概率少了一半;trace(Math.floor(Math.random()*21));//返回不包括21在内的整数且随机数准确.参见书P60实例知识技能总结知识技能总结顶级类数组Array:将一系列数据有序地组织起来,进行批量的处理和操作。varemployee:Array=[“Adobe”,”Facebook”,”Apple”]或一系列颜色值varemployee:Array=newArray();employee[0]=“Adobe”;employee[1]=“Facebook”;employee.length数组长度;数组下标从0知识技能总结知识技能总结调整颜色显示对象步骤**调整Color属性ColorTransform类定义在flash.geom包中(flash.geom.ColorTransform).其方法可以调整显示对象的颜色.每个显示对象都有transform,ColorTransform属性.1.先构造函数newColorTransform()varmyColor:ColorTransform=newColorTransform();2.调整color属性设置颜色值myColor.color=0xffffff;3.将ColorTransform实例myColor重新分配给对象(transform.colorTransform)myObject.transform.colorTransform=myColor;注意:颜色不会应用于MC的背景知识技能总结知识技能总结调整颜色显示对象步骤**调整乘数属性和偏移属性(依鼠标改变颜色.fla)显示对象有多种颜色,不希望完全重新调整对象的颜色,而根据现有颜色来调整显示对象的颜色。ColorTransform有一组乘数属性和偏移属性进行此类调整。1.乘数属性redMultiplier、greenMultiplier、blueMultiplier、alphaMultiplier可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和Alpha透明度(在0-1范围取值,默认1正常)。增强或削弱显示对象上的某些颜色。

2.偏移属性redOffset、greenOffset、blueOffset、alphaOffset额外增加对象上某种颜色值。颜色属性面板-高级知识技能总结颜色属性面板-高级画面颜色动态改变bg_mc.addEventListener(MouseEvent.MOUSE_MOVE,rg);functionrg(e:MouseEvent){ varct:ColorTransform=newColorTransform();

//根据鼠标位置设置红色和绿色乘数,鼠标x轴位置控制红色;y轴位置控制绿色 //鼠标从图像左侧到右侧,红色值的范围从0%到100%(从无红色到正常图像红色) //鼠标从图像上方到下方,绿色值的范围从0%到100%(从无绿色到正常图像绿色) ct.redMultiplier=this.mouseX/bg_mc.width; ct.greenMultiplier=this.mouseY/bg_mc.height; bg_mc.transform.colorTransform=ct;}画面颜色动态改变bg_mc.addEventListener编程实现1.产生漫天雪花效果(复制雪花.fla,雪花飘起来.fla)2.子弹沿螺旋线运动效果(沿螺旋线运动的子弹sin().fla)编程实现漫天雪花的编程思想制作雪花影片剪辑元件,在库中设置属性类名:snow产生一个显示对象容器,以便将雪花实例放在该容器中利用构造函数new产生250朵雪花实例,并修改他们的XY大小等属性,充满舞台.让雪花飘使雪花飘起来,利用帧频事件触发,定义侦听器编写事件触发函数,不断改变雪花的Y属性漫天雪花的编程思想制作雪花影片剪辑元件,在库中设置属性类名:for(vari:uint=1;i<250;i++){varxue_mc:snow=newsnow();//库中雪花剪辑元件,属性类名为snow;//xue_="xue"+String(i);xue_mc.x=640*Math.random();xue_mc.y=480*Math.random();xue_mc.scaleX=xue_mc.scaleY=Math.random();addChild(xue_mc);xue_mc.addEventListener(Event.ENTER_FRAME,moveY);}functionmoveY(e:Event){varspeed:uint=e.target.width*Math.random()/5;e.target.y+=speed;if(e.target.y>480){e.target.y=0;}}for(vari:uint=1;i<250;i++){作业:定制T恤颜色编程实现以下功能据用户对颜色的需求,决定T恤的颜色.要求可选颜色与书中的颜色至少有一半以上不同作业:定制T恤颜色编程实现以下功能实现步骤建立11个不同的颜色按钮,命名a_btn,b_btn…用属性面板调整色调并记录色调值.建立衣架和阴影的MC建立衣服影片剪辑cloth_mc,色调为红.编程程序定义颜色数组,存放11个按钮的颜色值varcolor_array=[0xff0000,0x00ff00,0x0000ff,…]为11个颜色按钮注册事件侦听器,事件为“click”a_btn.addEventListener(“click”,clothColor);事件处理函数据用户单击的颜色,为衣服定制颜色建立ColorTransform的实例对象varmyColor:ColorTransform=newColorTransform();用分支语句判断myColor.Color的颜色值将颜色值应用在衣服上cloth_mc.Transform.ColorTransform=myColor;实现步骤制作震动效果(发素材shake素材.fla)技术要点:将震动影子对象置于顶层,透明度属性60%,位置不重叠使该对象与原对象位置随机进行微小动态变化建立帧频事件侦听器使震动影子对象的坐标位置随机微小变化制作震动效果(发素材shake素材.fla)可调速的滑动广告牌利用鼠标指针的X轴位置,决定广告牌的滑动方向(向左或向右)与滑动速度案例制作要点(广告素材.fla)可视元素广告牌影片剪辑(六部影片画面,组合成3组)广告牌影片剪辑的移动速度由当前光标的位置确定(250-this.mouseX)/10;以舞台中心位置为中心广告牌内容的无缝对接技术左边X<0右边X>850可调速的滑动广告牌利用鼠标指针的X轴位置,决定广告牌的滑动方4369游戏公司委托XX小组开发一款网页游戏《水果丰收》,尺寸大小600*400,帧频24fps.水果有西瓜、桔子、火龙果、草莓(可以创新)游戏开始后,用鼠标移动舞台的小女孩(可以创新)接住从天而降的水果。水果的速度一轮比一轮快,4种水果的出现要随机。接住西瓜6分,桔子2分,草莓1分,火龙果-3分。游戏界面显示总分,时间100秒倒计时,时间到显示重玩一次,总分清零。有声效加分(背景音乐、水果收获音效)项目三《水果丰收》Flash游戏制作4369游戏公司委托XX小组开发一款网页游戏《水果丰收》,尺网页游戏《水果丰收》项目实施要求分组进行,6人一组,自由组合。要求:男女搭配,特长搭配。各自为小组起名,并设计小组LOGO。选定项目组长(确保每位成员参与,明确分工);确定演讲汇报员(制作PPT,汇报本组成果);确定记录员,记录小组会议讨论情况。上交时间:4.12各小组上交作品,演示答辨,小组间评价。项目三水果丰收Flash游戏制作网页游戏《水果丰收》项目实施要求项目三水果丰收Flash游游戏实现思路制作计分器影片剪辑注册帧频事件侦听器,事件函数为文本框设置分数值parent.score制作计时器影片剪辑初值hastime=100秒,开始时间值start

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论