| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1238 人关注过本帖
标题:时钟中断与控制动画速度问题
只看楼主 加入收藏
Iam070
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-25
收藏
 问题点数:0 回复次数:4 
时钟中断与控制动画速度问题
我在djjgpp里,用allegro库。
主体代码差不多是这样。
程序代码:
#include ...
#include ...

int timer = 0;

void myfunc()
{
     timer ? 0 : 1;
}

int main()
{
      int flag;
      ..... 
      .....

      allegro_init();
      install_keyboard();
      install_timer();

      install_init_ex(myfunc, BPS_TO_TIMER(30))       //每秒钟触发30次
      
      while(1)
      {
           if (key[KEY_A])
           {
                  if (flag != timer)
                  {
                        //动画移动
                        .............
                        flag = timer;
                  }                  
            }
            else if (key[KEY_ALT] & key[KEY_F4])
            {
                   //动画结束
                   .............
            }
      }
      ...........
      ...........
}            

就像《Allegro - 游戏程序设计库中文手册》所说的,不要在时钟处理程序里写太多的复杂代码: 一个基本的规则是你应该设置 一些标志然后在你的主控制循环里来回应它们.

那在我的主控循环里检测那些标志的方法,像我这样是不是就可以了。还有没有更有效,更好的方法?

[[it] 本帖最后由 Iam070 于 2008-4-27 18:21 编辑 [/it]]
搜索更多相关主题的帖子: 时钟 动画 速度 
2008-04-27 18:13
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
方法有一些,你这种以计时变量为刷新基数的也是一种。不过如果我没记错,全局变量timer应该要加“锁”的吧。时钟函数myfunc 也要锁住的吧。另外我没发现你的timer有被改变的地方啊,我觉得你是想让timer交替等于0或1吧,但没见着给它赋值的地方。
2008-04-27 23:15
Iam070
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-25
收藏
得分:0 
timer ? 0 : 1; 就已经让它自动变化了

其他的方法呢,或者我目前这种方法的例子哪里有啊。学习一下。


“锁”住,目前能力不够,还没有考虑
2008-04-28 20:06
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
ALLEGRO提供了锁住变量内存及函数的宏,可直接使用。
2008-04-30 19:29
Iam070
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-25
收藏
得分:0 
也不说详细点,苦死我这个菜鸟了
2008-05-01 00:17
快速回复:时钟中断与控制动画速度问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018860 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved