2017-08-19 91 views
0

我想在遊戲結束時製作遊戲,出現橫幅廣告,但我發現視圖至少需要花費一分鐘才能加載。我試着在不同的線程上做這件事,但沒有奏效。我在GameViewController.swift中創建了視圖,並在GameScene.swift中添加了子視圖。另外Game Over Pop up是一組SKSpriteNodes和SKLabelNodes。UIView花費很長時間加載(Spritekit和AdMob)

GameViewController.swift

class GameViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("READY__$$$$$$$$$$$$$$$$$$$_________________.") 

     banner = GADBannerView(adSize: kGADAdSizeFullBanner) 
     banner.adUnitID = "ca-app-pub-3940256099942544/2934735716" 

     let request = GADRequest() 
     banner.load(request) 

     banner.frame = CGRect(x: 0, y: (view?.bounds.height)! - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height) 

     banner.rootViewController = self 

     if let view = self.view as! SKView? { 
      // Load the SKScene from 'GameScene.sks' 
      if let scene = SKScene(fileNamed: "IntroScene") { 
       // Set the scale mode to scale to fit the window 
       scene.scaleMode = .aspectFill 

       // Present the scene 
       view.presentScene(scene) 
      } 

      view.ignoresSiblingOrder = true 

      view.showsFPS = true 
      view.showsNodeCount = true 
     } 
    } 

    override var shouldAutorotate: Bool { 
     return true 
    } 

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 
     if UIDevice.current.userInterfaceIdiom == .phone { 
      return .allButUpsideDown 
     } else { 
      return .all 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Release any cached data, images, etc that aren't in use. 
    } 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 
} 

GameScene.swift

func spawnAd() { 

    print("READY___________________.") 
    DispatchQueue.main.async(execute: { 
     self.view?.addSubview(banner) 
    }) 




    //  DispatchQueue.global(qos: .userInteractive).async { 
    //   DispatchQueue.main.async { 
    //    self.view?.addSubview(banner) 
    //   } 
    // 
    //  } 

} 

遊戲結束屏幕彈出

func spawnGameOverMenu() { 

    let dimPanel = SKSpriteNode(color: UIColor.brown, size: self.size) 
    dimPanel.alpha = 0.0 
    dimPanel.zPosition = 9 
    dimPanel.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
    self.addChild(dimPanel) 

    let fadeAlpha = SKAction.fadeAlpha(by: 0.5, duration: 0.6) 
    dimPanel.run(fadeAlpha) 

    gameOverMenu = SKSpriteNode(color: bgColor, size: CGSize(width: self.frame.width - 5, height: self.frame.height/2)) 
    gameOverMenu.position = CGPoint(x: self.frame.midX, y: self.frame.minY - self.frame.height) 
    gameOverMenu.name = "gameOverMenu" 
    gameOverMenu.zPosition = 10 
    self.addChild(gameOverMenu) 
    spawnGameOverLabel() 
    spawnResetLbl() 

    spawnAd() 

    let moveUp = SKAction.moveTo(y: self.frame.midY, duration: 1.0) 

    gameOverMenu.run(moveUp) 

} 
+0

什麼需要很長的時間來加載,橫幅或應用程序的開始? – Knight0fDragon

+0

的橫幅,但我修好了。 – Smilez

回答

0

我想通了,爲什麼它不工作,我設定了我加載請求後的根視圖控制器。

旗幟=的GADBannerView(adSize時:kGADAdSizeFullBanner) banner.adUnitID = 「爲ca-app-PUB-2934735716分之3940256099942544」

banner.rootViewController =自

let request = GADRequest() 
    banner.load(request) 

    banner.frame = CGRect(x: 0, y: (view?.bounds.height)! - banner.frame.size.height, width: banner.frame.size.width, height: banner.frame.size.height)