0

iPhone 5S を開発対象(シミュレーターと実機)として使用している際に、挙動がおかしくなっているのを発見しました。

SKSpriteNodeを でスケーリングしたいと思いSKAction.scaleToます。これは、iPhone 4S および iPhone 5 シミュレーター (iOS 7.0.3 および iOS 8 でテスト済み) で正常に動作します。

しかし、iPhone 5S シミュレーターでは、ノードはスケーリングしません。また、私の実際のiPhone 5Sでは、スケーリングしません。

これが私のコードです:

for tile in tileArray{
            if(tile.color == searchColor){
                var action = SKAction.scaleTo(0.5, duration: 0.5)
                var action2 = SKAction.scaleTo(1, duration: 0.5)
                tile.runAction(SKAction.repeatActionForever(SKAction.sequence([action, action2])))

            }
        }

編集:

iPhone 5S では if ブロックが呼び出されないことがわかりました。どうしてか分かりません。他のiPhoneでは動作します。

しかし、ご覧のとおり、2 つの色は同じです。

UIDeviceRGBColorSpace 0.203922 0.286275 0.368627 1
UIDeviceRGBColorSpace 0.203922 0.286275 0.368627 1

そんなことがあるものか?

重要: 他の SKaction.scaleTo アクションは問題なく動作しています。

4

2 に答える 2

0

色を比較しているのではなく、ポインター値を比較しています。

if(tile.color == searchColor)

tile.color と searchColor の両方が同じメモリ アドレスを指しているかどうかをテストします。色がどのように作成されるかによって、これらのアドレスは異なる場合があります。次のように、個々の色コンポーネントをテストしてみてください。

if (tile.color.r == seachColor.r && tile.color.g == searchColor.b && etc ..)

浮動小数点値の等価性は "relative" であることに注意してください。

于 2014-09-16T08:01:40.730 に答える