gpt4 book ai didi

Swift SpriteKit SKVideoNode 只播放一次

转载 作者:行者123 更新时间:2023-11-28 13:13:03 25 4
gpt4 key购买 nike

您好,我正在尝试在 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()
}

}
}

}

最佳答案

嗨,我想我已经破解了它我在顶部添加另一个 videoSKnode 并重命名它,这样用户就不能点击原始视频,然后在延迟后我将其删除这个延迟需要是视频运行的时间我使用了一个很酷的延迟功能,我在互联网上发现不记得从哪里来了所以感谢谁写的 我希望这可以帮助别人我在更新函数中尝试了 paused 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
}

}
}
}



}

关于Swift SpriteKit SKVideoNode 只播放一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com