2016-04-13 15 views
0

私はテクスチャアトラスをプリロードすることができるように、ユーザが見るためのUIImageViewを持っています(ほぼスプラッシュ画面のように見えます)。プリロードテクスチャアトラス完了ハンドラが動作しない

しかし、完成ブロックでは、「removefromsuperview」と言ってもそうはしません。

私は、画面をタップするとUIImageViewが消えてゲームが始まりますが、何らかの奇妙な理由でそれ自体が離れないので、テクスチャの読み込みが完了したことが分かります。ここで

は私GameViewController内部の私のviewDidLoadです:

//Configure the View 
    let skView = view as! SKView 

    skView.multipleTouchEnabled = false 
    self.view.exclusiveTouch = false 

    //Create and Configure the scene 
    scene = GameScene(size: skView.bounds.size) 

    scene.scaleMode = .AspectFill 

    //Load "SPLASH SCREEN" 
    let image: UIImage = UIImage(named: "ViewControllerImage")! 
    GameViewController.splashView = UIImageView(image: image) 
    GameViewController.splashView!.frame = CGRectMake(0,0,self.view.bounds.width,self.view.bounds.height) 
    self.view.addSubview(GameViewController.splashView!) 




SKTextureAtlas.preloadTextureAtlases([GameViewController.diploTextureAtlas,GameViewController.bieberTextureAtlas,GameViewController.skrillexTextureAtlas,GameViewController.sunTextureAtlas], withCompletionHandler: {() -> Void in 

     print("Completo") 
     GameViewController.splashView?.removeFromSuperview() 
     skView.presentScene(self.scene) 

    }) 

答えて

0

は、このコードを試してみてください。

//Configure the View 
    let skView = view as! SKView 

    skView.multipleTouchEnabled = false 
    self.view.exclusiveTouch = false 

    //Create and Configure the scene 
    scene = GameScene(size: skView.bounds.size) 

    scene.scaleMode = .AspectFill 

    //Load "SPLASH SCREEN" 
    let image: UIImage = UIImage(named: "ViewControllerImage")! 
    GameViewController.splashView = UIImageView(image: image) 
    GameViewController.splashView.tag = 666 
    GameViewController.splashView!.frame = CGRectMake(0,0,self.view.bounds.width,self.view.bounds.height) 
    self.view.addSubview(GameViewController.splashView!) 




SKTextureAtlas.preloadTextureAtlases([GameViewController.diploTextureAtlas,GameViewController.bieberTextureAtlas,GameViewController.skrillexTextureAtlas,GameViewController.sunTextureAtlas], withCompletionHandler: {() -> Void in 

     print("Completo") 
     for view in self.view!.subviews { 
      if view.tag == 666 { 
       view.removeFromSuperview() 
      } 
     } 
     skView.presentScene(self.scene) 

    }) 

あなたがしても、サイクルのために変更することができます。

if let viewWithTag = self.view.viewWithTag(666) { 
     viewWithTag.removeFromSuperview() 
} 
+0

なしああ、これはしませんでした動作するようです。画面からスプラッシュビューを削除するには、何らかの理由で画面をタップする必要があります。なぜなら、何らかの理由でテクスチャが読み込まれてから離れないからです。スプラッシュ画面を取り除くためにタップすると、これもゲームを開始します。スプラッシュ画面がGameSceneにあるかのようです。非常に奇妙な – OriginalAlchemist

関連する問題