2015-01-03 2 views
0

Я пытаюсь бесконечно прокручивать фон в своей игре. Мое приложение падает, когда я пытаюсь сделать это следующим образом:Как достичь бесконечных прокручиваемых фонов в swift

@IBAction func levelClicked(sender: AnyObject) { 
    let screenSize: CGRect = UIScreen.mainScreen().bounds 
    let screenHeight = screenSize.height 
    let imageName = "levelBackground" 
    let image = UIImage(named: imageName) 
    imageView = UIImageView(image: image!) 

    imageView.frame = CGRect (x: 0, y: 0, width: 5500, height: screenHeight) 
    view.addSubview(imageView) 

    timer = NSTimer.scheduledTimerWithTimeInterval(0.5, 
             target: self, 
             selector: Selector("moveBackground"), 
             userInfo: nil, 
             repeats: true) 
} 

func moveBackground() { 
    imageView.frame = CGRect(x: imageView.frame.origin.x - 5, 
          y: imageView.origin.y, 
         width: 5500, 
         height: UIScreen.mainScreen().bounds.height) 
} 

Вот мой краш журнал:

2015-01-03 15:57:56.579 zombieSurvival[3395:708290] -[zombieSurvival.firstBuildingViewController moveBackground]: unrecognized selector sent to instance 0x15e7e150

2015-01-03 15:57:56.585 zombieSurvival[3395:708290] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[zombieSurvival.firstBuildingViewController moveBackground]: unrecognized selector sent to instance 0x15e7e150'

*** First throw call stack:

(0x29dad5f7 0x374e7c77 0x29db2abd 0x29db0999 0x29ce1b88 0x2aac1a45 0x29d73f07 0x29d73a89 0x29d71cf3 0x29cbeb31 0x29cbe943 0x31077051 0x2d2b46f1 0xccc04 0xccc40 0x37a83aaf)

libc++abi.dylib: terminating with uncaught exception of type NSException

+0

у вас есть какой-то краш-лог? –

+0

Распечатайте zombieSurvival.firstBuildingViewController.class (где-то) и self.class (прямо перед 'timer ='). –

+0

Это просто дало мне больше ошибок. – Wiem

ответ

1

Я не эксперт по быстры, но кажется, что это не работают из :

Вы объявляете moveBackground как функцию внутри levelClicked, но на вашем таймере вы указываете self как цель. Сам класс не имеет метода moveBackground. Это видно только внутри вашей функции levelClicked.

Попробуйте переместить целый moveBackground из levelClicked.

Для того, чтобы сделать работу moveBackground, я думаю, вы должны указать imageView недвижимость.

@IBAction func levelClicked(sender: AnyObject) { 
    let screenSize: CGRect = UIScreen.mainScreen().bounds 
    let screenHeight = screenSize.height 
    let imageName = "levelBackground" 
    let image = UIImage(named: imageName) 
    self.imageView = UIImageView(image: image!) 

    self.imageView.frame = CGRect (x: 0, y: 0, width: 5500, height: screenHeight) 
    view.addSubview(self.imageView) 

    timer = NSTimer.scheduledTimerWithTimeInterval(0.5, 
             target: self, 
             selector: Selector("moveBackground"), 
             userInfo: nil, 
             repeats: true) 
} 

func moveBackground() { 
    self.imageView.frame = CGRect(x: self.imageView.frame.origin.x - 5, 
            y: self.imageView.origin.y, 
           width: 5500, 
          height: UIScreen.mainScreen().bounds.height) 
} 
+0

Приложение по-прежнему сбой, но на этот раз он дал мне эту ошибку: 'EXC_BAD_ACCESS (code = 1, address = 0x0)' – Wiem

+0

можете ли вы обновить раздел кода? –

+0

Я обновил свой код выше. – Wiem