小编Sez*_*Sez的帖子

如何让SKAction(名称:)可靠地工作?

我一直在研究DemoBots示例,并且很难让它在所有设备上运行.

https://developer.apple.com/library/prerelease/ios/samplecode/DemoBots/Introduction/Intro.html

我目前遇到的问题是,在iPad Mini上,应用程序启动但在加载动画时崩溃.它在从一个文件加载动作的行上的AnimationComponent.swift中崩溃:

let bodyAction: SKAction?  
if let name = bodyActionName {
    // crash here  
    bodyAction = SKAction(named: name)  
}  
else {  
    bodyAction = nil  
}  
Run Code Online (Sandbox Code Playgroud)

调试应用程序显示它试图加载一个名为"ZappedShake"的SKAction,但是在数组超出范围异常时崩溃.

在iPhone 5S上运行正常.我最好的猜测是它的竞争状态,速度较快的iPhone 5S正在加载文件,并在其中序列化动作,并且到执行时到达此时动作可用.但在单核较旧的iPad上,文件尚未加载,呼叫失败.

两者都是运行iOS9 13A4325c的真实硬件,在XCode Version 7.0 beta 4(7A165t)上编译.

使问题更加困难的是我无法看到显然创建"ZappedShake"的文件 - ReferenceActions.sks - 实际上已加载.它引用的是ReferenceScene.sks,但在任何代码或项目的任何其他地方都没有,我可以看到该文件被引用.

SKActions是否有某种名称约定魔法文件加载机制?为什么它适用于iPhone 5S而不适用于iPad?

更新:在此处找到更多信息:http://asciiwwdc.com/2015/sessions/604

今年我们也专注于参考和实例化.我们知道您花了很多时间为您的游戏设计高质量的内容和动画,我们希望您能够在任何您想要的地方重复使用该内容.

我们允许您为节点和操作创建序列化数据文件,然后将它们添加为参考,而不是仅将它们加载到场景中.

这样,每次您对源资产进行更改时,都会自动反映在游戏内容中.

我如何为节点执行此操作?对于节点,我设计了我的场景的一部分,也许是背景元素,或者在我们的编辑器中使用Xcode的一些场景,然后我可以将这些文件拖放到Xcode中的主场景中,它将自动创建一个引用,它都是为你准备好的.

如果你想在代码中也这样做,你可以手动构建一个SKReferenceNode,为它分配一个文件名甚至一个URL,当你的游戏中首次出现该内容时,我们将根据最新内容加载该内容.捆绑包中的文件版本.我们也可以为行动做同样的事情.通过操作,查看我们出色的新动作编辑器,除了在Xcode中创建和编写动作之外,您还可以为它们命名.

这些名称是在游戏中使用它们的关键.我们在SKAction中添加了一个名为actionNamed的选择器.这就像它对SKTexture和textureNamed一样.

您传递所需操作的名称.我们将自动查看所有序列化操作文件中的应用程序包内部,找到具有相应名称的文件,然后将其显示给应用程序.

这看起来不错,但我找不到任何文档,或者在出错时弄清楚如何调试它.

xcode ios sprite-kit skaction ios9

5
推荐指数
1
解决办法
660
查看次数

MPMoviePlayerController在Cocos2D中导致约束警告

我正在使用Cocos2D for iOS中的游戏,并在控制台中看到许多与约束相关的警告.我已在SO和其他网站上阅读了许多与约束相关的帖子,但未能解决此问题.

没有 NIB文件,也没有在此项目中使用过XCodes用户界面构建器.Cocos2D只使用以编程方式创建的全屏GLView.据我所知,所有这些约束来自MPMoviePlayerController与UIView本身的交互.

我正在使用此代码进行MPMoviePlayerController集成:https://github.com/cocos2d/cocos2d-iphone-extensions/blob/master/Extensions/CCVideoPlayer/iOS/CCVideoPlayerImpliOS.m

稍微改变一下,以显示视频非全屏,并让它在iOS8上编译:

- (void) setupViewAndPlay
{
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];    

    CGSize viewSize = [[CCDirector sharedDirector] viewSizeInPixels];

    // We want to show these animations windowed - not full screen
    // Native resolution of the movie is 480p = 640x360
    CGRect videoFrame = CGRectMake( 0, 0, 640, 360);
    if (viewSize.height < 768)
    {
        // On the iphone play at 1/2 size
        videoFrame = CGRectMake(0, 0, 320, 180);
    }
    videoFrame.origin.x = (viewSize.width …
Run Code Online (Sandbox Code Playgroud)

objective-c cocos2d-iphone ios nslayoutconstraint

3
推荐指数
2
解决办法
2712
查看次数