2012-02-16 79 views
0

我想做一个小动画,一个交通灯的女巫警告桥会打开(黄灯),当桥是动画时红灯(只是向下移动)和绿色的灯光。现在我只是希望它重复着同样的动画及以上如果()似乎不工作 - C++ opengl闲置功能

在空闲功能我有这样的代码:

if(bridgeAnimating==0); 
{ 
    printf("\nwtf,%d\n",bridgeAnimating); 
    fflush(stdout); 
    startBridge=1; 
} 

animateBridge();

而这就是我得到的输出: 跆拳道,0 跆拳道,1名 跆拳道,1 ...等

bridgeAnimating是startBridge INT startBridge = 0的全局变量这样的; int bridgeAnimating = 0;

这里是功能:

void animateBridge() 
{ 
    float static speed=0.25; 
    int static upwards=1; 
    double static warnTime=teid; 

    warnTime-=dt; 

    if(startBridge==1) 
    { 
     upwards=1; 
     bridgeAnimating=1; 
     warnTime=teid; 
     startBridge=0; 
     //printf("Here:Animating=%d",bridgeAnimating); //if un-commented this gets printed!!! 
    } 
    if(bridgeAngle<30 && upwards==1 && warnTime<=0) 
    { 
     bridgeAngle+=speed; 
     red=2; 
     green=0.9; 
     orangeRed=0.9; 
     orangeGreen=0.6; 
     bridgeAnimating=1; 
     printf("Upwnwards"); 
    }else if(bridgeAngle>0 && upwards==0 && warnTime<=0) 
    { 
     bridgeAngle-=speed; 
     red=2; 
     green=0.9; 
     orangeRed=0.9; 
     orangeGreen=0.6; 
     bridgeAnimating=1; 
     printf("Downwards"); 
    }else if(warnTime>0) 
    { 
     orangeRed=2; 
     orangeGreen=1.19; 
     red=0.9; 
     green=0.9; 
     bridgeAnimating=1; 
     //printf("Here"); //This gets printed if "un-commented" 
    }else 
    { 
     red=0.9; 
     green=2; 
     orangeRed=0.9; 
     orangeGreen=0.6; 
     bridgeAnimating=0; 
     printf("anim 0");//this doesn't print out 
    } 

    if(bridgeAngle>=30) 
    { 
     upwards=0; 
    } 

} 

我检查了文件,这些2个变量的其他参考资料和有没有。 它一定是错误的算法,但我无法弄清楚。 我有很多全局变量,这是我添加的最后一个可能是堆栈已满? 这里有什么问题?

+0

是'startBridge'和'bridgeAngle'真的是数字吗? – Shaheer 2012-02-16 13:55:48

回答

7

你的问题是这样的

if(bridgeAnimating==0); 

上最后的分号表示空语句,这是所有由if语句控制。摆脱;它会像你期望的那样工作。

+0

洛尔兹谢谢,刚刚发现它,试图删除这个问题,但你们很快! :) – 2012-02-16 13:57:44

1

删除尾随分号:

if(bridgeAnimating==0);