2015-05-31 7 views
0

Привет, я пытаюсь воспроизвести видео на SKVideoNode в swift это мой код, который работает, но он воспроизводится только один раз, если я нажимаю на VideoSprite, он не воспроизводится, а печатает дозу "Мы нажали видео»Я искал, но не могу найти ответ спасибо для поискаSwift SpriteKit SKVideoNode воспроизводится только один раз

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() 
      } 

     } 
    } 

} 
+0

Вы взглянули на http://stackoverflow.com/questions/27027648/how-do-i-control-playback-of-a-video-in-an-ios-sprite-kit- skvideonode – ABakerSmith

+0

привет спасибо за ответ я смотрел на эту нить я попытался 'если VideoSprite.paused == верно { Println («мы Приостановлено») //VideoSprite.removeFromParent() }', но Дон» t print – user2164327

+0

Вы хотите перезапустить видео при нажатии на видеоузел? Или вы хотите приостановить видео при нажатии? – ABakerSmith

ответ

2

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

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 
        } 

      } 
     } 
    } 



} 
+0

Это сработало. Спасибо! –

Смежные вопросы