Cocos2d-x场景转换后局部变量值异常问题。
发布时间:2020-12-14 16:41:06 所属栏目:百科 来源:网络整理
导读:今天在按钮教程写一段程序后,发现在添加新场景前正常的局部变量,在添加了场景跳转后,变量的值工作不正常了。后来将他们转换为全局变量,正常工作了。 auto dot = DrawNode::create(); dot-setAnchorPoint(Vec2(1,1)); dot-setPosition(visibleSize/2); ad
今天在按钮教程写一段程序后,发现在添加新场景前正常的局部变量,在添加了场景跳转后,变量的值工作不正常了。后来将他们转换为全局变量,正常工作了。
auto dot = DrawNode::create(); dot->setAnchorPoint(Vec2(1,1)); dot->setPosition(visibleSize/2); addChild(dot); schedule([dot,this](float f){ if(_blue>200) { temp = -1.0f; } if(_blue <= 1) { temp = 1.0f; } _blue+=temp; dot->clear(); dot->drawDot(Vec2(0,0),_blue,Color4F(1,1,1)); },0.1,"test"); 这段中的temp和_blue原本是在init中的局部变量,在从场景A中跳转到本场景后,temp和_blue一直保持为1不变。后来调试发现,在进入加运算前_blue和temp的值是一个非常非常小的浮点数。此时我感觉到temp和_blue是不是被程序自身做了什么处理或者优化?而忽略掉了他们,改为在每次都重新去生成创建了。
后来按照这种思路 ,将他们放到成员变量中。
protected: float _blue = 0.0f; float temp = 1.0f;然后将schedule([dot,&_blue,&temp 直接修改为 this。程序工作正常了。这个dot可以按照预想的效果表现了,temp与_blue不在被重新初始化。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |