在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

多頁(yè)動(dòng)畫(huà)技術(shù)

前言:本站為你精心整理了多頁(yè)動(dòng)畫(huà)技術(shù)范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢(xún)。

多頁(yè)動(dòng)畫(huà)技術(shù)

動(dòng)畫(huà)設(shè)計(jì)中消除圖像閃爍的一種方法是使用多頁(yè)動(dòng)畫(huà)。多頁(yè)動(dòng)畫(huà)是通過(guò)使用頁(yè)切換技術(shù)實(shí)現(xiàn)的。頁(yè)切換改變顯示頁(yè)以繪制出給定動(dòng)畫(huà)序列的相鄰幀。由于圖像通常繪制在不同的頁(yè)上(不是當(dāng)前可見(jiàn)頁(yè)),用戶不會(huì)看到圖像被繪制或擦除。所以,這種技術(shù)能產(chǎn)生高質(zhì)量的動(dòng)畫(huà)而沒(méi)有圖像閃爍。進(jìn)行頁(yè)切換的詳細(xì)步驟如下。

1.選擇一種至少有兩個(gè)可用顯示頁(yè)的視頻模式(示例中為EGA640×200,16色4頁(yè))。

2.使用-setvideomode()函數(shù)獲取選擇的視頻模式。在當(dāng)前顯示頁(yè)(0頁(yè))上繪制出序列中的第一幀。

3.在需要繪制出序列中下一幀時(shí),使用-setactivepage()函數(shù)設(shè)置激活頁(yè)為備用顯示項(xiàng),僅僅改變激活頁(yè)(不是可見(jiàn)頁(yè))。

4.繪制出下一幀。此幀將被繪制在備用顯示頁(yè)(頁(yè)1)上,而當(dāng)前頁(yè)(頁(yè)0)繼續(xù)被顯示。在以后重復(fù)這一步時(shí)在繪制新的一幀前擦除掉已有的幀。

5.繪制出新的一幀以后,使用-setvisualpage()函數(shù)將可見(jiàn)頁(yè)設(shè)置為備用頁(yè)。此時(shí),備用頁(yè)成為當(dāng)前頁(yè)。

6.重復(fù)步驟3到5直到完成了動(dòng)畫(huà)序列為止。

以下程序(采用VisualC++)演示了實(shí)際的多頁(yè)動(dòng)畫(huà),例子中的動(dòng)畫(huà)序列讀者自行設(shè)計(jì)。

#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

/****頁(yè)切換和繪制動(dòng)畫(huà)序列****/

#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)函數(shù)**/

inttd;

time-tts1,ts2;

ts2=ts1=clock();

while(ts1+td>ts2)

ts2=clock();

太白县| 武宣县| 梁河县| 高雄县| 遵义县| 尉氏县| 伊金霍洛旗| 富蕴县| 洪湖市| 苍梧县| 开平市| 灯塔市| 健康| 芷江| 宁强县| 嘉义县| 金昌市| 岫岩| 沐川县| 比如县| 呼伦贝尔市| 射洪县| 勃利县| 霞浦县| 南皮县| 博湖县| 蒲江县| 新绛县| 武乡县| 宁城县| 景德镇市| 临江市| 康保县| 卓资县| 隆化县| 黔西县| 本溪市| 慈利县| 中阳县| 三门峡市| 明光市|