Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift SpriteKit纹理持续时间_Swift_Sprite Kit_Skspritenode_Skaction_Sktexture - Fatal编程技术网

Swift SpriteKit纹理持续时间

Swift SpriteKit纹理持续时间,swift,sprite-kit,skspritenode,skaction,sktexture,Swift,Sprite Kit,Skspritenode,Skaction,Sktexture,我正在制作一个游戏,我有一个在两种纹理之间来回切换的节点。我想知道如何为每个纹理添加0.5秒的持续时间,然后再切换回上一个纹理。现在当我运行游戏时,纹理会立即切换,所以我想将其延迟0.5秒 我当前的代码: func move(){ let recursive = SKAction.sequence([ SKAction.setTexture(SKTexture(imageNamed: "D2")), SKAction.setTexture(SKText

我正在制作一个游戏,我有一个在两种纹理之间来回切换的节点。我想知道如何为每个纹理添加0.5秒的持续时间,然后再切换回上一个纹理。现在当我运行游戏时,纹理会立即切换,所以我想将其延迟0.5秒

我当前的代码:

func move(){

    let recursive = SKAction.sequence([

        SKAction.setTexture(SKTexture(imageNamed: "D2")),
        SKAction.setTexture(SKTexture(imageNamed: "DWalkRight")),
        SKAction.moveByX(frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())),
        SKAction.setTexture(SKTexture(imageNamed: "D1")),
        SKAction.setTexture(SKTexture(imageNamed: "DWalkLeft")),
        SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())),
        SKAction.runBlock({self.move()})])

        Drake1.runAction(recursive, withKey: "move")
}
您可以使用一个包含您的图像的文件夹

然后,您可以将该图集加载到一个数组中,该数组可用于
SKAction.animateWithTextures:timePerFrame:

有关
SKTextureAtlas
的详细介绍,请参阅


希望这是有用的

这在SKSpriteNode中有解释


运行将等待0.5秒的序列,然后更改纹理。你是否需要将其与某个事件同步,例如,当节点在其他动作后到达某个点,或者你只是想让某个节点在一定时间后改变其纹理,不管发生什么?基本上,我有一个节点从屏幕的左侧移动到右侧,我有两种纹理,让它看起来像是在行走。当它移动时,我想在两个纹理之间切换(前后),每个纹理持续0.5秒。在这种情况下,你可以使用你喜欢的任何东西。只要运行一个有延迟的序列。为了更改纹理,您可以按照Sangony的答案,或者在所需节点上使用setTexture方法(您将在块内执行此操作),或者不使用块并使用动作,就像您已经在做的那样。你也可以使用pbodsk的方法,但因为它只是两个图像交换,我建议你自己尝试这两种方法,看看什么更适合你。当有很多纹理需要设置动画时,使用纹理设置动画非常有用,但它需要一个包含纹理的数组,因此它增加了一点“复杂性”:)感谢您的响应。我用当前代码更新了我的问题。您能告诉我如何在代码中添加延迟,以便“D2”和“DWalkRight”纹理可以在运行MoveByX操作时来回切换吗?我不知道该把序列和延迟放在哪里。
myNode.texture = SKTexture(imageNamed: "imageName")