2014-08-29 90 views
0

我已經建立在createScene函數使用display.newRoundRect()一些對象然後在enterScene調用我調用此函數試圖調用 '的addEventListener'(一個零值)

function generate_bonus_star() 
    tiles = {A1, A2, A3, A4, A5, A6, B1, B2, B5, B6, C1, C6, 
    D1, D6, E1, E2, E5, E6, F1, F2, F3, F4, F5, F6} 

    math. randomseed(os.clock()) 
    index = math.random(1,23) 
    index_bonus_score = math.random(1,23) 
    print("bonus star generated at "..index) 
    print("bonus score generated at "..index_bonus_score) 
end 

注: A1,A2 .....是我使用display.newRoundRect創建的對象()

所以在進入環境中,我添加了這些的addEventListener。但我得到的錯誤「試圖調用方法‘的addEventListener’(一個零值)在這行代碼

function scene:enterScene(event) 
    storyboard.purgeScene("levels")--remove previuos screens 
    storyboard.purgeScene("level2result") 
    generate_bonus_star() 

    A1:addEventListener("touch", simple(A1))--event listeners 
    A2:addEventListener("touch", simple(A2)) 
    A3:addEventListener("touch", simple(A3)) 
. 
. 
. 
. 
     tiles[index]:addEventListener("touch", bonus_star) //line 503 
     tiles[index_bonus_score]:addEventListener("touch", bonus_score) 

編輯 我有注意,我當我第一次運行它並沒有得到這個錯誤一次,我得到它的第二,第三,四個時間

+0

你能打印確切的回溯?並顯示循環索引的代碼 – Schollii 2014-08-31 04:43:12

回答

0

addEventLister的第二argumet可以爲空。

simple(A1) 

在你的代碼sololy出現(不定義)。

+0

我正在面對這行代碼瓷磚[index]:addEventListener(「touch」,bonus_star),我的代碼也有簡單的功能。 – user2934930 2014-08-29 07:16:46

0

確保在瓷磚創建之前不設置/運行瓷磚表。 在創建對象之前,您正在運行generate_bonus_star(),這是不可能的。爲了使所有的工作都能正常工作,只需在創建所有對象的時候將generate_bonus_star()移動。

function scene:enterScene(event) 
    storyboard.purgeScene("levels")--remove previuos screens 
    storyboard.purgeScene("level2result") 
    -- generate_bonus_star() this shouldn't be here. 

    A1:addEventListener("touch", simple(A1))--event listeners 
    A2:addEventListener("touch", simple(A2)) 
    A3:addEventListener("touch", simple(A3)) 

    ... 
    ... 
    -- After all objects are created (A1, A2 ... F5, F6) 
    generate_bonus_star() 
+0

感謝您的回覆。但這仍然不起作用 – user2934930 2014-08-29 11:48:57

+0

@ user2934930嘗試進行一些調試,嘗試「打印」您的值或「打印(鍵入(tiles [index]))」並查看它是什麼。你的瓷磚可能是一個「無」對象。如果你在tile選項卡上有一個無對象,試着首先使用'if tiles [index] then'並在這個塊內部做代碼來檢查。記住,我在談論你的錯誤路線,把這些放在你的錯誤路線上。 – 111WARLOCK111 2014-08-29 11:58:38

+0

我做了一個零的檢查,但沒關係,我一直有一個有效的參考 – user2934930 2014-08-29 12:06:44

相關問題