设为首页|加为收藏|云南大学生论坛
今天是:
首页 | 风光 | 出国 | 论文 | 博客 | 房产 | 旅游 | 求职 | 考试 | 读书 | 咨讯 | 创业 | 校园
论坛 | 心灵 | 二手 | 帖图 | 灌水 | 音乐 | 新生 | 大学 | 风采 | 昆工 | 云大 | 师大 | 农大
云南大学生网 >> 您现在的位置: 论文频道 >> 计算机 >> 计算机理论 >> 论文正文
多页动画技术
来源:转载 时间:2006-12-13 11:35:28 编辑:七味南瓜
多页动画技术

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

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;
case 2:
frame-2(DRAW,x,y);
break;
case 3:
frame-3(DRAW,x,y);
break;
case 4:
frame-4(DRAW,x,y);
break;
create-delay(td)
/**同Borland C++中的delay(td)函数**/
int td;
time-t ts1,ts2;
ts2=ts1=clock();
while(ts1+td>ts2)
ts2=clock();
 

作者:黄向明

本文标题:多页动画技术
  • 上一篇论文:

  • 下一篇论文:
  •  
    最近更新
    ·浅谈计算机多媒体在教学中的作用
    ·计算机软件与理论
    ·论文:《数据库原理与设计》课程设
    ·PowerBuilder和MapInfo的集成开发技
    ·MIS 系统开发中的项目管理
    ·基于Web的多媒体CAI课件开发过程中
    ·VisualC++与Delphi/C++Builder之比
    ·只需三步封杀SQL Server注入漏洞方
    ·基于网格的面向专业内容的Web信息检
    ·寻找生存与发展的空间——谈邮政信
     
    广告专区
    关于我们 | 广告服务 | 联系我们 | 友情链接 |
    Copygight © 2003-2008 Yndxs.Com All Rights Reserved.
    版权所有·云南大学生网 滇ICP备05000405号