-12

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

1.在.H文件中,我声明了一个浮点变量“currentPer”和一个CCProgressTime变量“_strengthBar”

2.在UIPanGestureRecognizer的回调函数“processPanGesture()”中,我计算了手指的移动距离,然后更新了CCProgressTime的百分比属性。但是在屏幕上,CCProgressTime的可见部分没有更新,所以我的第一个问题是为什么CCProgressTime在屏幕上没有更新百分比属性改变了

3.最后,我在回调函数 processPanGesture() 中用手指的移动距离更新了变量“currentPer”。然后在“update”方法中,我打印currentPer,但结果总是“0”,(如果打印_stregnthBar的百分比,即使我在processPanGesture中改变了它的值,它也是“0”)为什么?我的意思是我已经改变了processPanGesture() 中 currentPer 的值。但为什么它不起作用?如果您仍然不清楚我说的内容,请看屏幕截图。任何帮助对我来说都是非常宝贵的,感谢您的关注!

图1.AppDelegate.appFinishDidLaunchOption(),注册PanGestureRecognizer

图2.GameLayer.H文件

图3.GameLayer.mm ,init(),初始化相关变量

图4.GameLayer.processPanGesture(),手势识别器的回调函数

图 5.GameLayer.update()

在 AppDelegate 中注册手势内容 声明浮点变量

初始化 CCProgressTime 变量

GameLayer 中的 UIPanGestureRecognizer 回调函数

GameLayer 的 update(),print

4

2 回答 2

0

尝试制作它;

NSNumber * currentPer;

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

并在使用时

[currentPer floatValue];

这里简要解释一下为什么要使用 NSNumber。

于 2012-11-14T16:55:30.330 回答
0

终于找到原因了:是因为注册PanGestureRecognizer的GameLayer实例A和显示屏幕的GameLayer实例B不是同一个实例。这样processPanGesture()函数只是改变实例A的currentPer,虽然我打印的是实例 B 的 currentPe

于 2012-11-18T13:17:05.880 回答