Интеграция представления SpriteKit в представление xib

У меня есть вид, который я уже создал с использованием файла XIB.

Теперь я хотел бы добавить несколько небольших элементов в это представление, которые бы использовали некоторые физические анимации из SpriteKit, так что теперь мне нужен SKView.

Можно ли добавить SKView в качестве подпредставления представления, соответствующего моему представлению xib? Я попробовал это, и это, кажется, ничего не показывает.

Следующее находится в ViewController, соответствующем моему представлению XIB:

this.myCustomSKView = new CustomSKView()
this.View.AddSubview( this.myCustomSKView );

и ViewController для моего пользовательского SKView имеет:

    public override void ViewWillLayoutSubviews ()
    {
        base.ViewWillLayoutSubviews ();
        if(this.SKView.Scene == null)
        {
            this.SKView.ShowsFPS = true;
            this.SKView.ShowsNodeCount = true;
            this.SKView.ShowsDrawCount = true;

            var scene = new MyCustomSKScene (this.SKView.Bounds.Size);
            this.SKView.PresentScene (scene);
        }
    }

2 ответа

Решение

Я не знаю, чего именно вы пытаетесь достичь, но я думаю, что вместо SpriteKit вы можете попробовать UIKitDynamics, который предоставляет "связанные с физикой возможности и анимацию для представлений и других динамических элементов". Я бы посоветовал вам сначала взглянуть на яблочный документ https://developer.apple.com/library/ios/samplecode/DynamicsCatalog/Introduction/Intro.html затем действительно хорошее руководство на raywenderlich.com http://www.raywenderlich.com/50197/uikit-dynamics-tutorial

Надеюсь это поможет...

Я только что попробовал и работал.

  1. Началось с одного приложения просмотра.
  2. Перетащите файл myScene.m / .h из другого приложения для набора спрайтов в мой проект.
  3. В раскадровке перетащите в UIView, и установите класс SKView в раскадровке.
  4. Создал выход из этого в класс VC (в моем случае это называется myGame)
  5. Добавлен #import в классе VC
  6. Также скопировано из демонстрационного проекта viewDidLoad

Это единственное изменение, которое я сделал

-(void)viewDidLoad {
   [super viewDidLoad];
   // Next line is all I changed...
   SKView * skView = (SKView *)self.view;
   skView.showsFPS = YES;
   skView.showsNodeCount = YES;

   // Create and configure the scene.
   SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
   scene.scaleMode = SKSceneScaleModeAspectFill;

   // Present the scene.
   [skView presentScene:scene];
}

Я добавил в какой-то другой UIKit, чтобы показать, как выглядит маленькая игра SK.

Не уверен, что это лучший способ, но я надеюсь, что я отвечу на ваш вопрос.

Я согласен с lionserdar, и вы должны вместо этого проверить UIKit Dynamics.

Другие вопросы по тегам