2016-01-25 226 views
0

所以我試圖調用從我的得分類的功能,將增加一到比分:不能從其他類調用函數

Score.addOneToScore(1) 

,但我最終得到這個錯誤:

cannot convert value of type 'Int' to expected argument type 'Score'

我敢肯定,我忽略了什麼,但我似乎無法看到它。

這裏是我的分數等級:

import Foundation 
import SpriteKit 
import UIKit 


class Score: SKLabelNode { 

var number = 0 

init (num: Int) { 

    super.init() 

    fontColor = UIColor.whiteColor() 
    fontName = "Helvetica" 
    fontSize = 75.0 


    number = num 
    text = "\(num)" 

} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

func addOneToScore() { 

    number++ 
    text = "\(number)" 

    } 

} 
+1

'func addOneToScore()'在定義中不帶任何參數。但你通過它1? – NSNoob

+0

如果我拿出一個,只是沒有它,然後它只是給我另一個錯誤,說它是缺少參數#1調用參數,我不能真正弄清楚爲什麼要麼。 – Astrum

+0

@Astrum因爲你使用它就像你不應該(像它是一個靜態函數)。 addOneToScore()是一個實例方法。看看格雷格的答案,看看你應該如何使用你的代碼。 – Whirlwind

回答

3

有你做幾個錯誤: 您試圖調用 addOneToScore()作爲一個類(靜態)功能,但它是一個實例之一,而你傳遞參數但函數不需要一個,請試試這個:

let score = Score(num: 0) // Initialise score with the value of 1 
score.addOneToScore() // add one to the score 
print("\(score.number)") // print the value (1) 
+0

是的,這固定它,但由於某種原因,它不添加到您 – Astrum

+0

應該加一個常數類級別在你需要它的得分:讓分數=分數(NUM:0)(剛剛下課加入這行「你類名「),並在需要的地方調用score.addOneToScore()。 – Greg

+0

你的答案奏效,但它似乎並沒有改變分數標籤顯示數字1,它只是一直顯示0 – Astrum