新程序员需要帮助增加整数。 Visual C ++

时间:2012-08-20 17:39:28

标签: visual-c++ c++-cli opacity

我目前仍然坚持为我一直在筹划的游戏制作标题画面。

表单加载和TMRopI(计时器)开始滴答,增加表单的不透明度,创建淡入淡出效果,并在表单上显示徽标。每当计时器滴答时,整数增加1(或至少它应该)。在整数达到150之后,图片框应该变为可见(当整数等于100时,表格处于完全不透明度)在图片更改之前创建暂停。唯一的问题是,似乎是Comepleteley无视我的整数。

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {

             TMRopI->Enabled=true;
         }
private: System::Void TMRopI_Tick(System::Object^  sender, System::EventArgs^  e) {

             int num=0;
             num+=1;
             this->Opacity+=0.01;

             if (num >= 150)
                 PBXtitle->Visible=true;
         }

3 个答案:

答案 0 :(得分:4)

另一种选择是将num的定义更改为static。但是,使num成为该类的成员变量是C++更多的方法。

static int num=0;
num+=1;
this->Opacity+=0.01;

if (num >= 150)
    PBXtitle->Visible=true;

这样,num在第一次调用函数时被设置为0,并且它的值在后续调用之间保存。

答案 1 :(得分:1)

正如所写,num方法中TMRopI_Tick始终为1。您应该在调用方法中声明它并通过引用将其作为参数传递。或者,正如@Matt在评论中指出的那样,将其声明为该类的成员。

编辑您当前的num声明会将其创建为本地变量。每次调用方法时“创建”它,并在方法结束时“销毁”。因此,每次调用该方法时,它都会从零开始,然后增加到1。例如,如果在另一个方法的循环内重复调用TMRopI_Tick,则可以将该调用方法中的num定义为局部变量。然后它将在该方法的持续时间内存在。然后,如果你将它传递给TMRopI_Tick(通过引用),那么它将会递增,并且其范围(将其视为“生命”)将在每次调用的整个过程中(以及之后)存在。

答案 2 :(得分:1)

int num=0 

每次都将num设置为0,不是吗?