时钟中断与控制动画速度问题
我在djjgpp里,用allegro库。主体代码差不多是这样。
[code]
#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])
{
//动画结束
.............
}
}
...........
...........
}
[/code]
就像《Allegro - 游戏程序设计库中文手册》所说的,不要在时钟处理程序里写太多的复杂代码: 一个基本的规则是你应该设置 一些标志然后在你的主控制循环里来回应它们.
[color=Red]那在我的主控循环里检测那些标志的方法,像我这样是不是就可以了。还有没有更有效,更好的方法?[/color]
[[it] 本帖最后由 Iam070 于 2008-4-27 18:21 编辑 [/it]] 方法有一些,你这种以计时变量为刷新基数的也是一种。不过如果我没记错,全局变量timer应该要加“锁”的吧。时钟函数myfunc 也要锁住的吧。另外我没发现你的timer有被改变的地方啊,我觉得你是想让timer交替等于0或1吧,但没见着给它赋值的地方。 timer ? 0 : 1; 就已经让它自动变化了
其他的方法呢,或者我目前这种方法的例子哪里有啊。学习一下。
“锁”住,目前能力不够,还没有考虑[tk01] ALLEGRO提供了锁住变量内存及函数的宏,可直接使用。 也不说详细点,苦死我这个菜鸟了[tk09]
页:
[1]
