VB中播放三维动画编程一例
2006-02-27 11:54:20 来源:WEB开发网核心提示:用三维动画做多媒体应用程序中的动画界面,由于画面效果良好逼真,VB中播放三维动画编程一例,已越来越多地被程序员们采用,在VB中播放三维动画的方法,这样一个循环和另一个循环之间才能衔接好,如不需循环播放则无此问题,刊物中已有介绍,常见的有:1利用Autodesk公司提供的Aaplay.VBX控件
用三维动画做多媒体应用程序中的动画界面,由于画面效果良好逼真,已越来越多地被程序员们采用。在VB中播放三维动画的方法,刊物中已有介绍。常见的有:1利用Autodesk公司提供的Aaplay.VBX控件,可方便实现,但正版Aaplay.VBX很难见到,且在VB4.0以上版本中,已不再支持VBX控件而改用OCX。2利用MCI(VB4.0中为MMContral)控件或调用动态链接库AAPLAY.DDL,但MCI控件只能播放AVI格式的动画却对FLC无能为力,调用DDL库的详细方法又未被普遍掌握。本文介绍另一途径可方便实现对三维动画的灵活播放,供大家参考。
首先,用3DS软件制作三维动画,制作过程本文不再详述,注意在生成动画文件时不生成FLC或FLI文件而要生成连续多幅BMP格式图象,以供VB中使用。图象的大小最好和播放时动画窗口的大小一致,这样在VB中就不用再专门改变图象的大小了。文件名可起成类似“DH2”这样的名称,如制作一个60幅的动画,在生成时就会自动生成DH20000.BMP至DH20059.BMP一系列图形文件。将它们放在预定目录如“c:\bmp”中。
第二,在播放动画的窗体中设置Picture控件数组,如:“Picture1(60)",下标为0至59。将其属性Autosize置为true。这样Picture的大小将自动与BMP图象的大小一致,如想改变播放时图形的尺寸,可以使用Image控件数组,将其Stretch属性置为True。(使用Image控件播放时画面比Picture控件略为流畅,因其显示速度较快)
第三,编程播放。
在Form_load()过程中加入以下代码:
FORI=0TO59
PICTURE1(I).LEFT=NN'NN、HH为常数,设定PICTUREPICTURE1(I).TOP=HH'在窗体中的位置 '以下为装入图象
FILENAME="C:\BMP\DH"&STR(20000 I)
FILENAME=FILENAME&".BMP"
PICTURE1(I).PICTURE=LOADPICTURE(FILENAME)
NEXT
在窗体中加入时钟控件Timer1,其Interval属性置为56。在Timer事件函数中加入以下代码:
TIMER1_TIMER()
I=I 1
IFI=60THEN
I=0
PICTURE1(0).VISIBLE=TRUE
PICTURE1(59).VISIBLE=FALSE
ELSE
PICTURE1(I).VISIBLE=TRUE
PICTURE1(I-1).VISIBLE=FALSE
ENDIF
ENDSUB
以上程序为每1/18秒变换一幅图象,构成循环播放,注意三维动画要设计成首尾相接的,这样一个循环和另一个循环之间才能衔接好。如不需循环播放则无此问题,把程序中控制循环的语句去掉即可。->
首先,用3DS软件制作三维动画,制作过程本文不再详述,注意在生成动画文件时不生成FLC或FLI文件而要生成连续多幅BMP格式图象,以供VB中使用。图象的大小最好和播放时动画窗口的大小一致,这样在VB中就不用再专门改变图象的大小了。文件名可起成类似“DH2”这样的名称,如制作一个60幅的动画,在生成时就会自动生成DH20000.BMP至DH20059.BMP一系列图形文件。将它们放在预定目录如“c:\bmp”中。
第二,在播放动画的窗体中设置Picture控件数组,如:“Picture1(60)",下标为0至59。将其属性Autosize置为true。这样Picture的大小将自动与BMP图象的大小一致,如想改变播放时图形的尺寸,可以使用Image控件数组,将其Stretch属性置为True。(使用Image控件播放时画面比Picture控件略为流畅,因其显示速度较快)
第三,编程播放。
在Form_load()过程中加入以下代码:
FORI=0TO59
PICTURE1(I).LEFT=NN'NN、HH为常数,设定PICTUREPICTURE1(I).TOP=HH'在窗体中的位置 '以下为装入图象
FILENAME="C:\BMP\DH"&STR(20000 I)
FILENAME=FILENAME&".BMP"
PICTURE1(I).PICTURE=LOADPICTURE(FILENAME)
NEXT
在窗体中加入时钟控件Timer1,其Interval属性置为56。在Timer事件函数中加入以下代码:
TIMER1_TIMER()
I=I 1
IFI=60THEN
I=0
PICTURE1(0).VISIBLE=TRUE
PICTURE1(59).VISIBLE=FALSE
ELSE
PICTURE1(I).VISIBLE=TRUE
PICTURE1(I-1).VISIBLE=FALSE
ENDIF
ENDSUB
以上程序为每1/18秒变换一幅图象,构成循环播放,注意三维动画要设计成首尾相接的,这样一个循环和另一个循环之间才能衔接好。如不需循环播放则无此问题,把程序中控制循环的语句去掉即可。->
更多精彩
赞助商链接