首页 > 免费论文 > 计算机论文 > 多页动画技术
 

多页动画技术

日期:2006-06-10 04:12:01  来源:
请您记住思索网的网址: http://www.4so.net  [加入收藏夹]


     动画设计中消除图像闪烁的一种方法是使用多页动画。多页动画是通过使用页切换技术实现的。页切换改变显示页以绘制出给定动画序列的相邻帧。由于图像通常绘制在不同的页上(不是当前可见页),用户不会看到图像被绘制或擦除。所以,这种技术能产生高质量的动画而没有图像闪烁。进行页切换的详细步骤如下。

1.选择一种至少有两个可用显示页的视频模式(示例中为EGA640×200,16色4页)。

2.使用-setvideomode()函数获取选择的视频模式。在当前显示页(0页)上绘制出序列中的第一帧。

3.在需要绘制出序列中下一帧时,使用-setactivepage()函数设置激活页为备用显示项,仅仅改变激活页(不是可见页)。

4.绘制出下一帧。此帧将被绘制在备用显示页(页1)上,而当前页(页0)继续被显示。在以后重复这一步时在绘制新的一帧前擦除掉已有的帧。

5.绘制出新的一帧以后,使用-setvisualpage()函数将可见页设置为备用页。此时,备用页成为当前页。

6.重复步骤3到5直到完成了动画序列为止。
以下程序(采用VisualC++)演示了实际的多页动画,例子中的动画序列读者自行设计。
#include<conio.h>
#include<graph.h}
#include<time.h}
#defineLAST-FRAME4/*Totalframesinthesequence.*/
#defineDRAW1/*Codeforthedrawoperation.*/
#defineDELTA-X10/*Pixelsmovedperframechange.*/
#defineHALF-SECOND500/*500msecdelaybetweenframes
.*/
#defineMAX-X600/*MaxXpositionbeforetermination.
*/
#defineSETUP-DISPLAY/par
/par-setvideomode(-HRES16COLOR);/par
#defineEXIT-TO-DOS/par
/par-setvideomode(-DEFAULTMODE);/par
/****页切换和绘制动画序列****/
#definePAGE-FLIP(v)/par
/parif(v==0)v=1;/par
elsev=0;/par
-setactivepage(v);/par
-clearscreen(-GCLEARSCREEN);/par
-settextposition(1,16);/par
-outtext(/par"Example:
MultiplePageAnimation");/par
draw-frame(current-frame,px,py);/par
-setvisualpage(page);/par
create-delay(HALF-SECOND);/par
intpx,py;/*Currentcharacterposition.*/
intpage;/*Currentpagedisplayed.*/
intcurrent-frame;/*Currentframedisplayed.*/
main()
SETUP-DISPLAY
cycle-frames();
EXIT-TO-DOS
cycle-frames()
current-frame=0;
px=0;
py=85;
page=0;
while(px<=MAX-X)
current-frame++;
if(current-frame>LAST-FRAME)
current-frame=2;
PAGE-FLIP(page)
px=px+DELTA-X;
current-frame=1;
PAGE-FLIP(page)
draw-frame(frame,x,y)
intframe,x,y;
switch(frame)
case1:
frame-1(DRAW,x,y);
break;
case2:
frame-2(DRAW,x,y);
break;
case3:
frame-3(DRAW,x,y);
break;
case4:
frame-4(DRAW,x,y);
break;
create-delay(td)
/**同BorlandC++中的delay(td)函数**/
inttd;
time-tts1,ts2;
ts2=ts1=clock();
while(ts1+td>ts2)
ts2=clock();



 
 
热门信息
 
相关文章
 
    无相关信息