- 相關推薦
多頁動畫技術
動畫設計中消除圖像閃爍的一種方法是使用多頁動畫。多頁動畫是通過使用頁切換技術實現的。頁切換改變顯示頁以繪制出給定動畫序列的相鄰幀。由于圖像通常繪制在不同的頁上(不是當前可見頁),用戶不會看到圖像被繪制或擦除。所以,這種技術能產生高質量的動畫而沒有圖像閃爍。進行頁切換的詳細步驟如下。
1.選擇一種至少有兩個可用顯示頁的視頻模式(示例中為EGA640×200,16色4頁)。
2.使用-setvideomode()函數獲取選擇的視頻模式。在當前顯示頁(0頁)上繪制出序列中的第一幀。
3.在需要繪制出序列中下一幀時,使用-setactivepage()函數設置激活頁為備用顯示項,僅僅改變激活頁(不是可見頁)。
4.繪制出下一幀。此幀將被繪制在備用顯示頁(頁1)上,而當前頁(頁0)繼續被顯示。在以后重復這一步時在繪制新的一幀前擦除掉已有的幀。
5.繪制出新的一幀以后,使用-setvisualpage()函數將可見頁設置為備用頁。此時,備用頁成為當前頁。
6.重復步驟3到5直到完成了動畫序列為止。
以下程序(采用Visual C )演示了實際的多頁動畫,例子中的動畫序列讀者自行設計。
#include <conio.h>
#include <graph.h}
#include <time.h}
#define LAST-FRAME 4/* Total frames in the sequence. */
#define DRAW 1 /* Code for the draw operation. */
#define DELTA-X 10 /* Pixels moved per frame change. */
#define HALF-SECOND 500 /* 500 msec delay between frames
. */
#define MAX-X 600 /* Max X position before termination.
*/
#define SETUP-DISPLAY \par
\par -setvideomode(-HRES16COLOR); \par
#define EXIT-TO-DOS \par
\par -setvideomode (-DEFAULTMODE); \par
/****頁切換和繪制動畫序列****/
#define PAGE-FLIP(v) \par
\par if(v==0) v=1; \par
else v=0; \par
-setactivepage(v); \par
-clearscreen(-GCLEARSCREEN); \par
-settextposition(1,16); \par
-outtext( \par "Example:
Multiple Page Animation"); \par
draw-frame(current-frame,px,py); \par
-setvisualpage(page); \par
create-delay(HALF-SECOND); \par
int px,py; /* Current character position. */
int page; /* Current page displayed. */
int current-frame; /* Current frame displayed. */
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)
int frame,x,y;
switch(frame)
case 1:
frame-1(DRAW,x,y);
break;
ca
[1] [2]
【多頁動畫技術】相關文章:
版權頁的意思, 版權頁的解釋04-30
信息技術設置動畫效果教學反思范文04-27
使用KML實現多細節層次技術04-28
嵌補式多塊網格技術04-28
試論大力發展多熟種植技術05-02
一頁秋作文10-27
《創造宣言》工作頁104-30
翻開新的一頁04-29
多傳感器信息融合技術的研究與進展04-26