我目前仍然坚持为我一直在筹划的游戏制作标题画面。
表单加载和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;
}
答案 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,不是吗?