2014-08-29 86 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

相关问题