我今天遇到了两个有趣的问题。下面是我在编码中所做的事情
1.在.H文件中,我声明了一个浮点变量“currentPer”和一个CCProgressTime变量“_strengthBar”
2.在UIPanGestureRecognizer的回调函数“processPanGesture()”中,我计算了手指的移动距离,然后更新了CCProgressTime的百分比属性。但是在屏幕上,CCProgressTime的可见部分没有更新,所以我的第一个问题是为什么CCProgressTime百分比属性更改时屏幕上未更新?
3.最后我在回调函数processPanGesture()中用手指的移动距离更新变量“currentPer”。然后在“update”方法中,我打印currentPer,但结果总是“0”,(如果print _stregnthBar的百分比,即使我在processPanGesture中更改了它的值也是“0”)为什么?我的意思是我在processPanGesture()中更改了currentPer的值。但是为什么它不起作用? 如果你还不清楚我说的话,请看屏幕截图。任何帮助对我来说都很珍贵,谢谢你的关注!
图片1.AppDelegate.appFinishDidLaunchOption(),注册PanGestureRecognizer
图片2.GameLayer.H文件
图3.GameLayer.mm,init(),初始化相关变量
图片4.GameLayer.processPanGesture(),手势识别器的回调函数
图片5.GameLayer.update()
答案 0 :(得分:0)
尝试制作;
NSNumber * currentPer;
并使用NSNumber的 numberWithFloat:(float)value 将浮点值赋给NSNumber。
并在使用时
[currentPer floatValue];
Here简要解释了为什么要使用NSNumber。
答案 1 :(得分:0)
我最终弄清楚原因:这是因为用于注册PanGestureRecognizer的GameLayer实例A和用于显示屏幕的GameLayer实例B不是同一个实例。这样的processPanGesture()函数只是更改实例A的当前版本,而我打印的是实例B的currentPe