use*_*886 5 objective-c uiview uiimageview ios sprite-kit
我做了一些搜索,但没有发现任何直接解决我的问题:我有一个SKScene几个SKNodes,每个SKSpriteNode为我的游戏对象,和我使用的是背景UIImageView(有一些事情我需要的背景下,不能是合理的做法使用精灵套件完成 - 至少据我所知);我遇到的问题是UIImageView出现在一切之上,我看不到我的游戏对象。
在我的视图控制器(.m 文件)中,我有以下代码来调用我的场景
@implementation GameViewController
- (void)viewDidLoad
{
[super viewDidLoad];
SKView * skView = (SKView *)self.view;
SKScene * scene = [GameScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];
}
Run Code Online (Sandbox Code Playgroud)
在GameScene上面的,我有几个SKNodes地方我所有的游戏对象(例如儿童nodeHDU,nodePlay,nodePauseMenu...),而我使用的是UIImageView作为我的背景(我的背景场景之间随着时间的推移和开关电源采用了一些不错的过渡,例如我UIViewAnimationOptionTransitionCrossDissolve;如果不SKSpriteNode使用多个SKSpriteNodes和复杂的数组,就无法使用as 背景完成此操作,SKActions所以我正在使用UIImageView)
UIView *backgrounds = [[UIView alloc] init];
[self.view insertSubview:backgrounds belowSubview:self.view];
UIImageView *imageBackground = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
[backgrounds addSubview:imageBackground];
[backgrounds sendSubviewToBack:imageBackground];
[imageBackground setImage:[UIImage imageNamed:@"1-A.png"]];
imageBackground.alpha=1.0;
Run Code Online (Sandbox Code Playgroud)
但是,ImageBackground以上是我在 Xcode 中运行应用程序时唯一看到的内容。我的游戏中的其他对象(其他节点的子节点)存在,并且NSLog正在调用各种语句,但它们似乎出现在ImageBackgroundI have 之后。“belowSubview”和“sendSubviewToBack”上面的代码没有帮助。
那么我怎样才能发送imageBackground实际上是背景呢?
您的问题在于您直接设置SKView为控制器视图。要克服这个问题,不要self.view创建SKView. 在故事板或 Xib 中执行以下步骤:
UIImageView首先在控制器的视图上添加一个。也设置图像。SKView并UIImageView设置UIClearColor为背景颜色。所以完整的层次结构就像UIViewController-> UIView-> UIImageView->SKView
| 归档时间: |
|
| 查看次数: |
2190 次 |
| 最近记录: |