Swift SpriteKit SKVideoNode воспроизводится только один раз

Привет, я пытаюсь воспроизвести видео на SKVideoNode в Swift, это мой код, который работает, но он воспроизводится только один раз, если я нажму на VideoSprite, он не воспроизводится, но печатает дозу «мы нажали на видео». Я искал, но не могу' похоже не нашел ответа спасибо за поиск

import SpriteKit
import AVFoundation

class GameScene: SKScene
{
    var VideoSprite = SKVideoNode()

    override func didMoveToView(view: SKView)
    {
        LoadVideo("9.mp4")
    }

    func LoadVideo(FileToPlay:String)
    {
        VideoSprite =  SKVideoNode (videoFileNamed:FileToPlay)
        VideoSprite.position = CGPointMake(size.width/2, size.height/2);
        VideoSprite.name = "VideoSprite"
        VideoSprite.zPosition = 2
        addChild(VideoSprite)
    }


    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
    {
        for touch in (touches as! Set<UITouch>)
        {
            var touch: UITouch = touches.first as! UITouch
            var location = touch.locationInNode(self)
            var node = self.nodeAtPoint(location)
            if (node.name == "VideoSprite")
            {
                println("we Clicked the video")
                VideoSprite.play()
            }

        }
    }

}

person user2164327    schedule 31.05.2015    source источник
comment
Вы смотрели stackoverflow.com/questions/27027648/   -  person ABakerSmith    schedule 31.05.2015
comment
привет, спасибо за ответ, я просмотрел эту тему, я пробовал if VideoSprite.paused == true { println("we are Paused") //VideoSprite.removeFromParent() } , но она не печатается   -  person user2164327    schedule 31.05.2015
comment
Вы хотите перезапустить видео при нажатии узла видео? Или вы хотели поставить видео на паузу при нажатии?   -  person ABakerSmith    schedule 31.05.2015
comment
привет, спасибо за ваш ответ, я пытаюсь перезапустить, спасибо   -  person user2164327    schedule 31.05.2015


Ответы (1)


Привет, я думаю, что взломал его, я добавляю еще один videoSKnode сверху и переименовываю его, чтобы пользователь не мог щелкнуть исходное видео, затем после задержки я удаляю его, эта задержка должна быть временем запуска видео, я использую классную функцию из-за задержки, которую я нашел в Интернете, не могу вспомнить, откуда, поэтому спасибо тому, кто когда-либо писал это, я надеюсь, что это может помочь кому-то еще, я попробовал приостановить логическое значение в функции обновления, но не повезло?

import SpriteKit
import AVFoundation
import AVKit
class GameScene: SKScene
{

 var VideoSprite = SKVideoNode()// emptey Videonode

    func delay(delay:Double, closure:()->())// function for delay
    {
        dispatch_after(
            dispatch_time(
                DISPATCH_TIME_NOW,
                Int64(delay * Double(NSEC_PER_SEC))
            ),
            dispatch_get_main_queue(), closure)
    }


    override func didMoveToView(view: SKView)
    {

    LoadVideo("9.mp4") // run function to load video
    VideoSprite.pause()// pauses video ready to play
    }

    func LoadVideo(FileToPlay:String)
    {

        VideoSprite =  SKVideoNode (videoFileNamed:FileToPlay)// fill spritenode with video file
        VideoSprite.position = CGPointMake(size.width/2, size.height/2);  // set size
        VideoSprite.name = "VideoSprite" // give it a name
        VideoSprite.zPosition = 1 // set its z position
        VideoSprite.play()// play video
        addChild(VideoSprite)// add video node to the sceene
    }


    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
    {
        for touch in (touches as! Set<UITouch>)
        {
            var touch: UITouch = touches.first as! UITouch
            var location = touch.locationInNode(self)
            var node = self.nodeAtPoint(location)
    println(node.name)

            if (node.name == "VideoSprite")// we click on video
            {

                LoadVideo("9.mp4") /// load another video ontop
                VideoSprite.name = "temp" //name it temp so user cant click to add more videonodes
                delay(1.8 )// wait for time
                    {
                     self.VideoSprite.removeFromParent()// then remove
                     }

            }
        }
    }



}
person user2164327    schedule 31.05.2015