-12

今日、2 つの興味深い問題に遭遇しました。以下は、コーディングで行ったことです。

1..H ファイルで、float 変数「currentPer」と CCProgressTime 変数「_strengthBar」を宣言しました。

2.UIPanGestureRecognizerのコールバック関数「processPanGesture()」で、指の移動距離を計算し、CCProgressTimeのパーセンテージ属性を更新しましたが、画面では、CCProgressTimeの可視部分が更新されていないので、最初の質問は、なぜCCProgressTimeが画面上で更新されないのかということです。パーセンテージ属性が変更されましたか?

3.最後に、コールバック関数 processPanGesture() で変数「currentPer」を指の移動距離で更新しました。次に、「update」メソッドで、currentPer を出力しますが、結果は常に「0」です (_stregnthBar のパーセンテージを出力する場合、processPanGesture で値を変更したのに、それも「0」です)。 processPanGesture() の currentPer の値。しかし、なぜ機能しないのですか? 私が言ったことについてまだ明確でない場合は、スクリーン ショットを参照してください。

図1.AppDelegate.appFinishDidLaunchOption(),Regist PanGestureRecognizer

図2.GameLayer.Hファイル

図3.GameLayer.mm ,init(),関連変数の初期化

図4.GameLayer.processPanGesture()、ジェスチャーレコグナイザーのコールバック関数

図5.GameLayer.update()

AppDelegate にジェスチャを登録する float 変数を宣言する

CCProgressTime 変数の初期化

GameLayer の UIPanGestureRecognizer コールバック関数

GameLayer の update(),print

4

2 に答える 2

0

最終的に理由がわかります:PanGestureRecognizerを登録するために使用されたGameLayerインスタンスAと、画面を表示するために使用されたGameLayerインスタンスBが同じインスタンスではないためです。このようなprocessPanGesture()関数は、インスタンスAのcurrentPerを変更するだけです。私が印刷するのはインスタンスBのcurrentPeですが

于 2012-11-18T13:17:05.880 に答える
0

作ってみてください。

NSNumber * currentPer;

numberWithFloat:(float)value of NSNumber を使用して、float 値を NSNumber に割り当てます。

そして、それを使用するとき

[currentPer floatValue];

NSNumber を使用する理由を簡単に説明します

于 2012-11-14T16:55:30.330 に答える