【问题标题】:error: missing argument for parameter #1 in call (swift)错误:在调用中缺少参数 #1 的参数(swift)
【发布时间】:2015-01-15 17:26:29
【问题描述】:

我正在尝试从GameViewController.swift 调用GameScene.swift 中的函数,但无论我尝试了什么,我都不断收到“调用中参数#1 缺少参数”错误。

我做错了什么?

//GameViewController.swift file

import UIKit
import SpriteKit
import AVFoundation


class GameViewController: UIViewController, UITextFieldDelegate{


var backgroundMusicPlayer:AVAudioPlayer = AVAudioPlayer()
var scene:GameScene!



//This function gives the error:
func swipedRight(sender: UISwipeGestureRecognizer){ 
    scene.swipedRight1() //error: Missing argument for parameter #1 in call
}



override func viewDidLoad() {
    super.viewDidLoad()

    let skView = view as SKView
    skView.multipleTouchEnabled = false

    scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill

    skView.presentScene(scene)

    let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
    swipeRight.direction = .Right
    view.addGestureRecognizer(swipeRight)

}


override func viewDidLayoutSubviews() {

    var bgMusicURL:NSURL=NSBundle.mainBundle().URLForResource("bgMusic",withExtension:"mp3")!
    backgroundMusicPlayer = AVAudioPlayer(contentsOfURL: bgMusicURL, error:nil)
    backgroundMusicPlayer.numberOfLoops = -1
    backgroundMusicPlayer.prepareToPlay()
    backgroundMusicPlayer.play()
    println("music playing")
}

override func prefersStatusBarHidden() -> Bool {
    return true
}
}

Gamescene.swift 文件

import SpriteKit



class GameScene: SKScene, SKPhysicsContactDelegate {

var player:SKSpriteNode = SKSpriteNode()

required init(coder aDecoder:NSCoder) {
    fatalError("NSCoder not supported")
}

override init(size:CGSize) {
    super.init(size:size)
   anchorPoint = CGPoint(x:0, y:1.0)

    let background = SKSpriteNode(imageNamed: "bg3")

   background.position = CGPoint(x:0, y:0)
   background.anchorPoint=CGPoint(x:0,y:1.0)

     addChild(background)

    player = SKSpriteNode(imageNamed:"kikker1")

    player.xScale = 0.22
   player.yScale = 0.22

    self.physicsWorld.gravity = CGVectorMake(0,0)
    self.physicsWorld.contactDelegate = self

   player.position = CGPointMake(self.frame.size.width/2, -610)
    addChild(player)

    println("klaar")
    println(player.position)
}


//This is the function I am trying to call
  func swipedRight1(sender:UISwipeGestureRecognizer){
    println("swipe right")

}


override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}

}

【问题讨论】:

  • 最好知道哪个函数有问题,以及您尝试调用哪个函数
  • 谢谢,添加到代码中(见 //)

标签: swift parameters arguments


【解决方案1】:

您尝试调用的函数具有以下签名:

func swipedRight1(sender:UISwipeGestureRecognizer)

但是你调用它时不带参数:

scene.swipedRight1()

只需将预期的参数传递给它,在这种情况下,它与调用方法中的发送者相同:

scene.swipedRight1(sender)

【讨论】:

    【解决方案2】:

    函数 swipedRight1(sender : ...) 需要一个类型为 sender 的参数,因此您可能应该尝试像这样提供周界:

     func swipedRight(sender: UISwipeGestureRecognizer){ 
     scene.swipedRight1(sender: UISwipeGestureRecognizer) 
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2019-11-25
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多