【问题标题】:during Spritenode animation and movement appear red large x在 Spritenode 动画和移动过程中出现红色大 x
【发布时间】:2015-11-10 11:22:26
【问题描述】:

这是我每隔一秒向场景添加缩放精灵的问题。当我在 zoombie 节点中添加另一个子动画 zoombie 时,有时会加载动画纹理,有时会出现红色大 X.

func addMonster() {

        let zoombieSprite = SKSpriteNode(color: SKColor.greenColor(), size: CGSizeMake(40, 60))

        // Determine where to spawn the monster along the Y axis
        let actualY = randRange(lower: zoombieSprite.size.height, upper: size.height - zoombieSprite.size.height)
        // Position the monster slightly off-screen along the right edge,
        // and along a random position along the Y axis as calculated above
        zoombieSprite.position = CGPoint(x: size.width + zoombieSprite.size.width/2, y: actualY)
        zoombieSprite.physicsBody = SKPhysicsBody(rectangleOfSize: zoombieSprite.size) // 1
        zoombieSprite.physicsBody?.dynamic = true // 2
        zoombieSprite.physicsBody?.categoryBitMask = PhysicsCategory.Monster // 3
        zoombieSprite.physicsBody?.contactTestBitMask = PhysicsCategory.Projectile // 4
        zoombieSprite.physicsBody?.collisionBitMask = PhysicsCategory.None // 5

        addChild(zoombieSprite)


        //zoombieSprite.addChild(createAnimatedZoombie())

        let zoombieAnimation = SKAction.runBlock({
            zoombieSprite.addChild(self.createAnimatedZoombie())

        })



        // Determine speed of the monster
        let actualDuration = randRange(lower: 6.0, upper: 10.0)
        //print("actualDuration = \(actualDuration)")

        let actionMove = SKAction.moveTo(CGPoint(x: -zoombieSprite.size.width/2, y: actualY), duration: NSTimeInterval(actualDuration))

        // Create the actions
        let actionMoveDone = SKAction.removeFromParent()


        zoombieSprite.runAction(SKAction.sequence([zoombieAnimation ,actionMove,actionMoveDone]))
    }


 //MARK: - ANIMATE FRAME AND MOVE ZOOMBIE
    func createAnimatedZoombie () -> SKSpriteNode {

        let animatedZoobieNode = SKSpriteNode(texture: spriteArray[0])

        let animationFrameAction = SKAction.animateWithTextures(spriteArray, timePerFrame: 0.2)

        let durationTime = SKAction.waitForDuration(0.1)

        let repeatAction = SKAction.repeatActionForever(animationFrameAction)

        let quenceAction = SKAction.sequence([durationTime, repeatAction])

        animatedZoobieNode.runAction(quenceAction)

        return animatedZoobieNode
    }

【问题讨论】:

  • 我猜纹理没有正确加载。您是否检查过所有精灵都正常并包含在捆绑包中。
  • 非常感谢您的回复 zoombie 节点是临时的,这意味着这些节点将在离开屏幕时被删除。因此,每隔一秒调用 addMonster() 方法,该方法创建具有随机速度和动画纹理的怪物。所以上面所有的 zoombie 显示 2 秒,然后重复显示红色大 x。
  • 更多问题解释

标签: skspritenode sktextureatlas


【解决方案1】:

非常感谢我尊敬的兄弟约瑟夫勋爵,感谢上帝,我通过将 sprite kit atlas 数组计数属性除以 2 解决了我的问题,因为在这个文件夹中我同时放置了 @2x 和 @3x 图像所以当我从这个 atlas 文件夹中获取图像数量时,它会返回添加了 @2x 和 @3x 图像的数量。

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2012-07-03
    • 2017-11-27
    相关资源
    最近更新 更多