为什么浮点变量总是为0,即使我已经改变了它的值

时间:2012-11-13 14:45:25

标签: objective-c ios cocos2d-iphone box2d-iphone

我今天遇到了两个有趣的问题。下面是我在编码中所做的事情

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()

Regist gesture stuff in AppDelegate Declare float variable "currentPer" and CCProgressTime variable "_stregnthBar"

Initialize  CCProgressTime variable "_stregnthBar" in GameLayer.init()

UIPanGestureRecognizer callback function in GameLayer

GameLayer's update(),print "currentCur",But it is always "0"

2 个答案:

答案 0 :(得分:0)

尝试制作;

NSNumber * currentPer;

并使用NSNumber的 numberWithFloat:(float)value 将浮点值赋给NSNumber。

并在使用时

[currentPer floatValue];

Here简要解释了为什么要使用NSNumber。

答案 1 :(得分:0)

我最终弄清楚原因:这是因为用于注册PanGestureRecognizer的GameLayer实例A和用于显示屏幕的GameLayer实例B不是同一个实例。这样的processPanGesture()函数只是更改实例A的当前版本,而我打印的是实例B的currentPe