0
votes

i have created some object using display.newRoundRect() in createScene function then in enterScene call i call this function

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

Note: A1, A2..... are my object created using display.newRoundRect()

So in enterscene i added addEventListener of these. But i get the error "attempt to call method 'addEventListener' (a nil value) on this line of code

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 )

EDIT i have notice that i didn't get this error when i run it first time i get it second, third, or four time

2
can you print the exact traceback? and show the code that loops over index - Oliver

2 Answers

0
votes

Second argumet of addEventLister may be null.

simple(A1)

is appeared sololy (without definition) in you code.

0
votes

Make sure you don't set/run the tiles table before your tiles get created. You are running generate_bonus_star() before your objects creation which is impossible. To make everything work, just move your generate_bonus_star() below the creation of all objects.

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()