多媒体课程实训报告.docx

上传人:b****8 文档编号:10220225 上传时间:2023-02-09 格式:DOCX 页数:15 大小:58.33KB
下载 相关 举报
多媒体课程实训报告.docx_第1页
第1页 / 共15页
多媒体课程实训报告.docx_第2页
第2页 / 共15页
多媒体课程实训报告.docx_第3页
第3页 / 共15页
多媒体课程实训报告.docx_第4页
第4页 / 共15页
多媒体课程实训报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

多媒体课程实训报告.docx

《多媒体课程实训报告.docx》由会员分享,可在线阅读,更多相关《多媒体课程实训报告.docx(15页珍藏版)》请在冰豆网上搜索。

多媒体课程实训报告.docx

多媒体课程实训报告

CENTALSOUTHUNIVERSITYOFFORESTRYANDTECHNOLOGY

中南林业科技大学

课程实训报告

课程:

多媒体技术及应用

姓名:

朱军

学号:

20094204

专业:

计算机科学与技术

指导教师:

陈宇拓

 

日期:

2011年6月21日

 

实训题目一

利用编程实现动画时钟

一.课程设计目的:

希望通过本次课程实训设计能够对多媒体编程有个大致了解熟悉使用一些常用的多媒体编程中常用到的函数插件等等

二.设计方法:

1.主要采用vb6.0在windows平台下实现编程。

三.实训步骤

1.打开vb6.0新建一个项目选择标准EXE.

2.新建一个窗体在窗体中加入timer控件设定interval900.

3.双击进入代码编辑区输入以下代码编写时钟表盘效果。

4.整体效果运行预览。

四、算法

用Load命令建立原始Line控制的14个拷贝(因为表盘有12个点和时、分、秒共15个Line),该控制数组每一个实例的端点坐标属性设置为每条线在时钟表盘上的适当位置。

这些拷贝中大多数只放置一次,而3个Line控制每秒钟更新一次,产生时钟指针移动的感觉。

五、程序代码如下

OptionExplicit

ConstPI=3.1415926

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.DrawWidth=2

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",Time)

Hours=DatePart("h",Time)

IfHours>12Then

Hours=Hours-12

EndIf

Me.DrawWidth=1

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

EndSub

'画线函数

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

StaticOldSX1AsInteger,OldSX2AsInteger,OldSY1AsInteger,OldSY2AsInteger

StaticOldMX1AsInteger,OldMX2AsInteger,OldMY1AsInteger,OldMY2AsInteger

StaticOldHX1AsInteger,OldHX2AsInteger,OldHY1AsInteger,OldHY2AsInteger

SelectCaseFlag

Case0

Me.DrawWidth=1

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

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

OldSX1=x1

OldSX2=x2

OldSY1=y1

OldSY2=y2

Case1

Me.DrawWidth=2

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

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

OldMX1=x1

OldMX2=x2

OldMY1=y1

OldMY2=y2

Case2

Me.DrawWidth=3

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

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

OldHX1=x1

OldHX2=x2

OldHY1=y1

OldHY2=y2

CaseElse

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

EndSelect

EndSub

PrivateSubForm_Resize()

Me.Cls

CallInit

EndSub

PrivateSubTimer1_Timer()

CallDrawClock

EndSub

六、总结

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

实训题目二

金鱼游水逐食

一.课程设计目的:

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

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

二.设计方法:

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

三.实训步骤

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

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

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

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

4.整体效果运行预览。

脚本动画代码如下

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

varobj=newObject;

obj.x=randX;

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

pArray[i]=obj;

}

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

for(vari=0;i

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{

c=this.attachMovie("body","c"+(level+i),level+i);

c._alpha=50;

c._xscale=c._yscale=20;

myColor=newColor(c);

myColor.setRGB(fishColor);

}

c._x=pArray[i].x;

c._y=pArray[i].y;

c.gotoAndStop(i+1);

pArray[i].obj=c;

}

for(vari=0;i

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;

break;

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&&d<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);

if(x2-x1<0&&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;

if(dAngle<-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;i

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;i

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

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

}

for(vari=num-1;i>=0;i--){

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

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

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;i<1000;i++)

removeMovieClip("c"+i);

fishNumber=int(comFishNum.getValue());

for(vari=0;i

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

fishs[i]=fish;

}

for(vari=0;i

for(varj=0;j

if(i!

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

}

//食物处理

varseed=this.attachMovie("c","c"+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;

for(vari=0;i

fishs[i].step();

}

initFishs();

四、总结

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

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

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1