0

我目前正忙于为我一直在计划的游戏制作标题屏幕。

表单加载和 TMRopI(计时器)开始计时,增加表单的不透明度,创建淡入效果,并在表单上显示徽标。每次计时器滴答作响,一个整数都会增加 1(或者至少应该如此)。图片框应该在整数达到 150 后变得可见(当整数等于 100 时,表单处于完全不透明状态),在图片更改之前创建一个暂停。唯一的问题是,它似乎完全忽略了我的整数。

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;
         }
4

3 回答 3

4

另一种选择是更改 to 的num定义static。但是,制作num类的成员变量是更多的C++方法。

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

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

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

于 2012-08-20T19:52:23.120 回答
1

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

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

于 2012-08-20T17:41:37.710 回答
1
int num=0 

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

于 2012-08-20T17:43:42.690 回答