用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧计算机理论

○多页动画技术

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 12:04:31
【本文由PB创新网为您整理】
动画设计中消除图像闪烁的一种方法是使用多页动画。多页动画是通过使用页切换技术实现的。页切换改变显示页以绘制出给定动画序列的相邻帧。由于图像通常绘制在不同的页上(不是当前可见页),用户不会看到图像被绘制或擦除。所以,这种技术能产生高质量的动画而没有图像闪烁。进行页切换的详细步骤如下。



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



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



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



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



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



6.重复步骤3到5直到完成了动画序列为止。

以下程序(采用Visual C++)演示了实际的多页动画,例子中的动画序列读者自行设计。

#include

#include 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();





作者:黄向明
   
     
     


转自: 仅仅学术交流与学习之用,非商业之目的.

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:24,109.38000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号