下面是播放视频的代码I代码。如果我点击一个按钮,它就会调用一个方法其中包含以下用于播放视频的代码片段:
if let urlStr = NSBundle.mainBundle().pathForResource("into_main_v3", ofType: "mp4")
{
let url = NSURL(fileURLWithPath: urlStr)
print(url)
player = AVPlayer(URL: url)
videoNode = SKVideoNode(AVPlayer: player!)
videoNode?.position = CGPointMake(frame.size.width/2, frame.size.height/2)
videoNode?.size = CGSize(width: self.size.width, height: self.size.height)
videoNode?.zPosition = 1
addChild(videoNode!)
videoNode!.play()
}
我得到这样的消息打印在我的控制台::调用-display没有效果。
当我单击按钮时,它会转到这个方法,但永远不会超出urlStr变量。我三次检查和资源是可用的在我的项目的mp4视频,但它仍然不会运行!它不在任何文件夹中,路径是正确的。它以前工作,但突然不工作,不知道为什么!
编辑:问题解决:问题是在构建阶段复制mp4文件以确保其复制到iPad中
所以,当我试图弄清楚这一点时,我有几件事错了…首先,我的URL不正确,所以我要检查它是否正确(文件名错误)。其次,当我加载视频时,我使用的是。mov扩展名,这对我不起作用。我把它改成。mp4,视频就加载了。第三,视频的显示与你在场景中的位置有很大关系。我不能从上面的代码示例中告诉你太多关于你的场景,但重要的是要确保你使用正确的坐标和大小正确地放置视频节点,否则它将不会显示。我试着把尺寸改成(1,1)看看能不能显示出来。
Swift 5的更新,因为CGPointMake和其他一些已经过时了:
if let urlStr = Bundle.main.path(forResource: "into_main_v3", ofType: "mp4")
{
let url = NSURL(fileURLWithPath: urlStr)
print(url)
let player = AVPlayer(url: url as URL)
let videoNode = SKVideoNode(avPlayer: player)
videoNode.position = CGPoint(x: frame.size.width/2, y: frame.size.height/2)
videoNode.size = CGSize(width: self.size.width, height: self.size.height)
videoNode.zPosition = 123
addChild(videoNode)
videoNode.play()
}