【问题标题】:Create SKView programmatically?以编程方式创建 SKView?
【发布时间】:2015-04-15 19:43:41
【问题描述】:

我喜欢我的代码是明确的,所以我想删除storyboard 文件并以编程方式创建SKView

到目前为止我所尝试的:

  1. 我在 xcode 中创建了一个SpriteKit 游戏项目。
  2. 已删除情节提要文件。
  3. Info.plist 中删除了 sroryboard 属性
  4. 将示例中的代码添加到AppDelegate

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        AppViewController *viewController = [[AppViewController alloc] init];
        viewController.edgesForExtendedLayout = UIRectEdgeNone;
        _window.rootViewController = viewController;
        [_window makeKeyAndVisible];
        return YES;
    }
    
  5. 将此代码添加到AppViewController

    -(void) loadView
    {
        self.view = [[SKView alloc] init];
    } 
    

应用程序启动,但在创建第一个精灵时崩溃并出现以下警告

EXC_BAD_ACCESS

我认为应该有一些很好的例子来说明如何做到这一点,但我还没有找到SpriteKit 的任何例子。

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    我通过为视图设置一个框架解决了这个问题:

    - (void) loadView
    {
        self.view = [[SKView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
    }
    

    这是working example project in Swift

    【讨论】:

    • 你如何在 Swift 中做到这一点?我正在尝试view.frame = UIScreen.main.bounds,但它似乎不起作用
    • 我没有尝试过,因为我的项目在 Obj-c 中,但 Swift 等价物应该是:self.view = SKView.init(frame: UIScreen.main.bounds)
    • 我已经有了 SKView,所以没有机会初始化它。它不起作用。我正在尝试从头开始做一个 SK 项目,从无代码开始,以了解它。但我现在放弃了。回到模板。 呻吟
    • 这是重写 loadView 方法的确切目的 - 允许您以编程方式创建 SKView。
    • 你能不能像在和一个白痴说话一样写,并更全面地解释一下?
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 2013-07-25
    • 2013-07-22
    • 2018-06-04
    • 2015-03-17
    • 2013-11-24
    • 2016-01-01
    • 2011-03-04
    相关资源
    最近更新 更多