资源描述:
《多页动画技术研究论文 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、多页动画技术研究论文多页动画技术研究论文多页动画技术研究论文 动画设计中消除图像闪烁的一种方法是使用多页动画。多页动画是通过使用页切换技术实现的。页切换改变显示页以绘制出给定动画序列的相邻帧。由于图像通常绘制在不同的页上(不是当前可见页),用户不会看到图像被绘制或擦除。所以,这种技术能产生高质量的动画而没有图像闪烁。进行页切换的详细步骤如下。 1.选择一种至少有两个可用显示页的视频模式(示例中为EGA640×200,16色4页)。 2.使用-setvideomode()函数获取选择的视频模式。在当前显示页(0页)上绘制出序列中的第一帧。 3.在需要绘制出序列中
2、下一帧时,使用-setactivepage()函数设置激活页为备用显示项,仅仅改变激活页(不是可见页)。 4.绘制出下一帧。此帧将被绘制在备用显示页(页1)上,而当前页(页0)继续被显示。在以后重复这一步时在绘制新的一帧前擦除掉已有的帧。 5.绘制出新的一帧以后,使用-setvisualpage()函数将可见页设置为备用页。此时,备用页成为当前页。 6.重复步骤3到5直到完成了动画序列为止。 以下程序(采用VisualC++)演示了实际的多页动画,例子中的动画序列读者自行设计。 #include #include #include #defineLAS
3、T-FRAME4/*Totalframesinthesequence.*/ #defineDRAW1/*Codeforthedrawoperation.*/ #defineDELTA-X10/*Pixelsmovedperframechange.*/ #defineHALF-SECOND500/*500msecdelaybetweenframes .*/ #defineMAX-X600/*MaxXpositionbeforetermination. */ #defineSETUP-DISPLAYpar par-setvideomode(-HRES1
4、6COLOR);par #defineEXIT-TO-DOSpar 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: MultiplePageAnimati
5、on”);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-
6、frames() current-frame=0; px=0; py=85; page=0; while(px 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; ca
7、se2: 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();