多媒体课程实训报告Word文档下载推荐.docx

上传人:b****4 文档编号:6233752 上传时间:2023-05-06 格式:DOCX 页数:15 大小:58.33KB
下载 相关 举报
多媒体课程实训报告Word文档下载推荐.docx_第1页
第1页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第2页
第2页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第3页
第3页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第4页
第4页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第5页
第5页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第6页
第6页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第7页
第7页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第8页
第8页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第9页
第9页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第10页
第10页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第11页
第11页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第12页
第12页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第13页
第13页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第14页
第14页 / 共15页
多媒体课程实训报告Word文档下载推荐.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多媒体课程实训报告Word文档下载推荐.docx

《多媒体课程实训报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多媒体课程实训报告Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。

多媒体课程实训报告Word文档下载推荐.docx

DimBaseXAsInteger,BaseYAsInteger,RAsInteger

Dimr1AsInteger,r2AsInteger,r3AsInteger

PrivateSubInit()

DimiAsInteger

BaseX=Me.ScaleWidth/2

BaseY=Me.ScaleHeight/2

R=IIf(BaseX>

BaseY,BaseY*0.8,BaseY*0.8)

r1=R*0.2

r2=R*0.1

r3=R*0.05

Fori=0To360Step6

IfiMod30=0Then'

Me.DrawWidth=2

DrawLineBaseX+(R-3)*Sin(i*PI/180),BaseY-(R-3)*Cos(i*PI/180),BaseX+(R-8)*Sin(i*PI/180),BaseY-(R-8)*Cos(i*PI/180),3

Else'

Me.PSet(BaseX+(R-3)*Sin(i*PI/180),BaseY-(R-3)*Cos(i*PI/180))

EndIf

Next

Me.DrawWidth=1

Me.Circle(BaseX,BaseY),R

EndSub

'

绘制指针

PrivateSubDrawClock()

DimSecondAsInteger

DimMinuteAsInteger

DimHoursAsInteger

Second=DatePart("

s"

Time)

Minute=DatePart("

n"

Hours=DatePart("

h"

IfHours>

12Then

Hours=Hours-12

Me.Circle(BaseX,BaseY),4

DrawLineBaseX-r1*Sin(Second*PI/30),BaseY+r1*Cos(Second*PI/30),BaseX+(R-10)*Sin(Second*PI/30),BaseY-(R-10)*Cos(Second*PI/30),0

DrawLineBaseX-r2*Sin(Minute*PI/30),BaseY+r2*Cos(Minute*PI/30),BaseX+R*0.8*Sin(Minute*PI/30),BaseY-R*0.8*Cos(Minute*PI/30),1

DrawLineBaseX-r3*Sin((Hours+Minute/60)*PI/6),BaseY+r3*Cos((Hours+Minute/60)*PI/6),BaseX+R*0.6*Sin((Hours+Minute/60)*PI/6),BaseY-R*0.6*Cos((Hours+Minute/60)*PI/6),2

画线函数

PrivateSubDrawLine(x1AsInteger,y1AsInteger,x2AsInteger,y2AsInteger,FlagAsInteger)

StaticOldSX1AsInteger,OldSX2AsInteger,OldSY1AsInteger,OldSY2AsInteger

StaticOldMX1AsInteger,OldMX2AsInteger,OldMY1AsInteger,OldMY2AsInteger

StaticOldHX1AsInteger,OldHX2AsInteger,OldHY1AsInteger,OldHY2AsInteger

SelectCaseFlag

Case0

Me.Line(OldSX1,OldSY1)-(OldSX2,OldSY2),Me.BackColor

Me.Line(x1,y1)-(x2,y2)

OldSX1=x1

OldSX2=x2

OldSY1=y1

OldSY2=y2

Case1

Me.Line(OldMX1,OldMY1)-(OldMX2,OldMY2),Me.BackColor

OldMX1=x1

OldMX2=x2

OldMY1=y1

OldMY2=y2

Case2

Me.DrawWidth=3

Me.Line(OldHX1,OldHY1)-(OldHX2,OldHY2),Me.BackColor

OldHX1=x1

OldHX2=x2

OldHY1=y1

OldHY2=y2

CaseElse

EndSelect

PrivateSubForm_Resize()

Me.Cls

CallInit

PrivateSubTimer1_Timer()

CallDrawClock

六、总结

通过本次实训,初步掌握了模拟动态时钟的设计,对vb时间控件及使用有了大致了解,为进一步学习奠定了基础。

实训题目二

金鱼游水逐食

希望通过本次课程实训设计能够对flash动画制作有更进一步的认识。

并会利用其制作比较复杂的动画。

2.主要采用flash在windows平台下实现。

1.打开flash新建一个flash文本

2.首先制作金鱼身体的各个部位。

头部躯部尾部分别做成原件存放在库中供使用

3.选定图层一的第一帧在动作下输入代码实现让金鱼游动。

脚本动画代码如下

varframe=0;

varnum=25;

varfishColors=[0xff0000,0xff9900,0,0x99ff00,0x9900ff,0x9999ff];

functioninitFish(level,fishColor){

varpArray=newArray();

varmyColor;

pArray.dis=2.5;

//金鱼身体每节的距离

pArray.direction=-90;

//金鱼头的朝向

pArray.v=2;

pArray.v1=pArray.v;

pArray.vibration=0;

pArray.state=1;

//自由活动

pArray.distX=random(550);

pArray.distY=random(400);

pArray.targetFishs=newArray();

pArray.targetIndex;

//初始化每节坐标

varrandX=random(550);

for(vari=0;

i<

num;

i++){

varobj=newObject;

obj.x=randX;

obj.y=100+i*pArray.dis;

pArray[i]=obj;

}

//初始化身体每节的图片

varc;

if(i==0){

c=this.attachMovie("

head"

"

c"

+(level+i),level+i);

c._alpha=100;

c._width=c._height=20;

myColor=newColor(c);

myColor.setRGB(fishColor);

}

else{

body"

c._alpha=50;

c._xscale=c._yscale=20;

c._x=pArray[i].x;

c._y=pArray[i].y;

c.gotoAndStop(i+1);

pArray[i].obj=c;

}

pArray[i].obj._x=pArray[i].x;

pArray[i].obj._y=pArray[i].y;

}

pArray.addTarget=function(tFish){

pArray.targetFishs.push(tFish);

//鱼的动作

pArray.step=function(){

varrand=random(300);

if(rand<

=3&

&

rand>

=1){

pArray.state=rand;

if(pArray.targetFishs.length==0&

rand==3)pArray.state=1;

//如果只有一条鱼,那么不能追逐其它鱼

if(pArray.state==3){//如果状态转换为追踪其他鱼,那么随机挑选一个目标鱼

pArray.targetIndex=random(pArray.targetFishs.length);

if(pArray.v==2&

random(200)==1)//欢快

pArray.v=5;

if(pArray.v==5&

random(50)==1)//悠闲

pArray.v=2;

if(pArray.state==1&

random(100)==1){//自由活动时更改移动方向

pArray.distX=random(550);

pArray.distY=random(400);

if

(1){

vard,dAngle;

varx1,x2,y1,y2;

x1=pArray[0].x;

y1=pArray[0].y;

switch(pArray.state){

case1:

//自由活动

x2=pArray.distX;

y2=pArray.distY;

break;

case2:

//觅食

x2=seed._x;

y2=seed._y;

case3:

//追逐其它的鱼

x2=pArray.targetFishs[targetIndex][0].x;

y2=pArray.targetFishs[targetIndex][0].y;

break;

}

d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

if(pArray.state==1&

d<

20.0)//自由活动时距离目标点很近的时候更换目标点

{

pArray.distX=random(550);

pArray.distY=random(400);

if(pArray.state==3&

10.0)//离目标鱼足够近的时候

pArray.state=1;

//trace("

ok"

);

dAngle=-Math.asin((y2-y1)/d)/Math.PI*180;

if(x2-x1<

0&

dAngle>

0)dAngle+=2*(90-dAngle);

dAngle<

0)dAngle-=2*(-90+dAngle);

if(dAngle<

0)dAngle+=360;

dAngle=360-dAngle;

if(pArray.direction>

360)pArray.direction-=360;

if(pArray.direction<

0)pArray.direction+=360;

dAngle=dAngle-pArray.direction;

if(dAngle>

180)dAngle=dAngle-360;

-180)dAngle=360+dAngle;

if(pArray.state==1)//自由活动

pArray.direction+=random(10)/50*dAngle;

if(pArray.state==2||pArray.state==3)//觅食或者追逐其它的鱼

pArray.direction+=random(20)/50*dAngle;

if(random

(2)==1){//鱼身体抖动pArray.direction+=random(pArray.vibration)-pArray.vibration/2;

if(frame%14>

=7)pArray.direction+=1*pArray.v;

//游泳时有规律的摆动

elsedirection-=1*pArray.v;

if(random(60)==1)//改变速度

pArray.v1=pArray.v+random(pArray.v);

pArray[0].x+=pArray.v1*Math.cos(pArray.direction*Math.PI/180)pArray[0].y+=pArray.v1*Math.sin(pArray.direction*Math.PI/180);

pArray[0].obj._rotation=pArray.direction+90;

//计算身体位置

for(vari=1;

varx0,y0,x1,y1,d;

x0=pArray[i-1].x;

y0=pArray[i-1].y;

x1=pArray[i].x;

y1=pArray[i].y;

d=Math.sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));

pArray[i].x=x0+pArray.dis/d*(x1-x0);

pArray[i].y=y0+pArray.dis/d*(y1-y0);

for(vari=0;

for(vari=num-1;

i>

=0;

i--){

pArray[i].obj._rotation=pArray[i-1].obj._rotation;

if(pArray.state==2&

pArray[0].obj.hitTest(seed)){//吃食物

if(random(5)==1){

seed._x=random(550);

seed._y=random(400);

seed.vx=0;

seed.vy=0;

pArray.vibration=0;

pArray.v=2;

}

else{

vardirect;

direct=pArray.direction+random(40)-20;

seed.vx=3*pArray.v1*Math.cos(direct/180*Math.PI);

seed.vy=3*pArray.v1*Math.sin(direct/180*Math.PI);

pArray.vibration=40;

pArray.v=4;

}//endif

}//endfunction

returnpArray;

}

varfishs;

functioninitFishs(){

varfishNumber;

fishs=newArray();

for(vari=1;

1000;

i++)

removeMovieClip("

+i);

fishNumber=int(comFishNum.getValue());

fishNumber;

varfish=initFish(i*31+1,fishColors[i]);

fishs[i]=fish;

for(varj=0;

j<

j++)

if(i!

=j)fishs[i].addTarget(fishs[j]);

//食物处理

varseed=this.attachMovie("

+2000,0);

seed._x=random(550);

seed._y=random(400);

seed._width=seed._height=6;

seed.vx=seed.vy=0;

this.onMouseDown=function(){

seed._x=_xmouse;

seed._y=_ymouse;

this.onEnterFrame=function(){

frame++;

seed._x+=seed.vx;

seed._y+=seed.vy;

if(seed._x<

0)seed.vx=-seed.vx;

if(seed._x>

550)seed.vx=-seed.vx;

if(seed._y<

0)seed.vy=-seed.vy;

if(seed._y>

400)seed.vy=-seed.vy;

seed.vx*=0.8;

seed.vy*=0.8;

fishs.length;

fishs[i].step();

initFishs();

四、总结

通过本次实训,掌握了如何利用flash的脚本命令完成各原件的定义实现各部件的动画。

使动画显示的效果更逼真。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2