【发布时间】:2015-03-12 22:58:48
【问题描述】:
我刚刚在我的游戏中实现了 iAd。当我运行游戏时,添加横幅出现在屏幕底部。唯一的问题是,一旦测试广告完成并重新开始,屏幕上会出现一个小抖动,会在瞬间禁用触摸。问题是该游戏是基于触摸的游戏,当发生此问题时,它会禁用触摸足够长的时间以使玩家输掉游戏。那么其他人是否有这个问题或过去有过这个问题,我可以做些什么来避免它?我已经包含了我用来实现以下广告的代码。
//
// GameViewController.swift
// Flappy Bird (swift)
//
import UIKit
import SpriteKit
import iAd
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}
class GameViewController: UIViewController, ADBannerViewDelegate {
var bannerView:ADBannerView?
override func viewDidLoad() {
super.viewDidLoad()
self.bannerView?.delegate = self
self.bannerView?.hidden = false
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view.
let skView = self.view as SKView
skView.showsFPS = true
skView.showsNodeCount = false
skView.showsPhysics = false
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
self.canDisplayBannerAds = true
}
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
} else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
func bannerViewDidLoadAd(banner: ADBannerView!) {
println("iAd did load: displaying iAd")
self.bannerView?.hidden = false
}
func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
println("iAd will leave")
return willLeave
}
func bannerView(banner: ADBannerView!, didFailToRecieveAdWithError error: NSError!){
println("iAd failed to load")
self.bannerView?.hidden = true
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
【问题讨论】:
标签: ios swift sprite-kit iad