首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift SpriteKit SKVideoNode仅播放一次

Swift SpriteKit SKVideoNode仅播放一次
EN

Stack Overflow用户
提问于 2015-05-31 17:27:45
回答 1查看 1.5K关注 0票数 0

嗨,我正在尝试在SKVideoNode上播放视频swift这是我的代码,但它只播放一次,如果我点击VideoSprite它不播放,但打印“我们点击了视频”我已经搜索过,但似乎找不到答案谢谢查看

代码语言:javascript
复制
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()
            }

        }
    }

}
EN

回答 1

Stack Overflow用户

发布于 2015-06-01 02:01:43

嗨,我想我已经破解了,我在上面添加了另一个videoSKnode并重命名它,这样用户就不能点击原始视频,然后在延迟后我删除它,延迟需要是视频运行的时间我使用了一个很酷的延迟功能,我在互联网上发现不记得是从哪里来的,所以感谢曾经写过它的人,我希望这可以帮助其他人我在更新功能中尝试了暂停的bool,但没有运气?

代码语言:javascript
复制
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
                     }

            }
        }
    }



}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30555856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档