Swift SpriteKit SKVideoNode воспроизводится только один раз
Привет, я пытаюсь быстро воспроизвести видео на SKVideoNode. Это мой код, который работает, но он воспроизводится только один раз, если я нажимаю на 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()
}
}
}
}
1 ответ
Привет, я думаю, что я взломал его, я добавляю еще один videoSKnode сверху и переименовываю его, чтобы пользователь не мог щелкнуть оригинальное видео, а затем, после задержки, я удаляю его, эта задержка должна быть временем запуска видео, я использую классную функцию из-за задержки, которую я нашел в интернете, я не могу вспомнить, откуда, так что, благодаря тому, кто когда-либо написал это, я надеюсь, что это может помочь кому-то еще, я попробовал приостановленный 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
}
}
}
}
}