I'm trying to display scores retrieved from an online leaderboard.  The scoreboard is a scene within the scene manager.  The relevant code snippets are below:
 scores = Core.class(Sprite)
 
 
function scores:init()
--setup format
self.online = online
self.scores = false -- a boolean value.  false when score boards not retreived
self.count = 0 -- arbitrary counter
self.y = 0-- important variable I need later
 
self.scoreBoard = Sprite.new()
 
 
 self:addEventListener("enterEnd", self.onEnterEnd, self)
 self:addEventListener("exitBegin", self.onExitBegin, self)
 self:addEventListener("enterBegin", self.onEnterBegin, self)
 self:addEventListener("exitEnd", self.onExitEnd, self)
end | 
Early in scene I create the class and declare variables.  Notice self.y is set to zero and self.scoreBoard is a Sprite
Later, in
function scores:onEnterBegin()  | 
I call this function:
function scores:getScores(gm, leaderboard, a) --
 
	local leader = leaderboard -- test board
	local format = "json" -- xml, json
	local auth = a
 
 
	local method = "UrlLoader.GET"
	local headers = gm.headers
	local body = "auth_token="..auth
	local url = "<a href="https://api.gameminion.com/leaderboards/"..leader.."/scores."..format.."?"..body" rel="nofollow">https://api.gameminion.com/leaderboards/"..leader.."/scores."..format.."?"..body</a>
 
	print(body)
 
	self.info = TextField.new(nil, "loading...")
	self.info:setPosition(380, 240)
	self.info:setScale(3)
	--self:addChild(self.info)
 
	function self.onComplete(event)
		--self:removeChild(info)
		print("data retrieved")
		local t = Json.Decode(event.data)
		print(t[1].username)
		--> joelghill
		-- ADD SCORES TO SCREEN
		print(#t)
			for i = 1, #t, 1 do
 
					--adds a new textfield as a child
					local newText = TextField.new(nil, string.format("%i.", i)) --, self.highScore:getName(i)
					newText:setScale(3)
					newText:setTextColor(0xffffff)
					newText:setY(y)
					newText:setX(10)
					--y = y + newText:getHeight() + 10
					self.scores.scoreBoard:addChild(newText)
 
					newText = TextField.new(nil, string.format( "%.1fm", t[i].value))
					newText:setScale(3)
					newText:setTextColor(0xffffff)
					newText:setY(self.y)
					newText:setX(200 + self.x - newText:getWidth() )
					--y = y + newText:getHeight() + 10
					self.scoreBoard:addChild(newText)
 
					newText = TextField.new(nil, string.format("%s",t[i].username ))
					newText:setScale(3)
					newText:setTextColor(0xffffff)
					newText:setY(scores.y)
					newText:setX(600 - newText:getWidth() )
					scores.y = scores.y  + 40
					--print(y)
					self.scoreBoard:addChild(newText)
					print(self.scoreBoard:getHeight())
			end
 
		end
 
	function self.onError()
		--info:setText("error")
		print("error in getting scoress")
		--add error message to leaderboard
		end
 
	function self.onProgress(event)
		print("progress: " .. event.bytesLoaded .. " of " .. event.bytesTotal)
		end
 
self.loader = UrlLoader.new(url, UrlLoader.GET, headers, body) -- , body
 
self.loader:addEventListener(Event.COMPLETE, self.onComplete)
self.loader:addEventListener(Event.ERROR, self.onError)
self.loader:addEventListener(Event.PROGRESS, self.onProgress)
 
 
end | 
I get an error indicating that self.y is a nil value (the one used in the for-loop) , and if I replace that with an actual number, I get an error saying that self.scoreBoard is nil (also the one within the for-loop) even though I have it declared previously.
I believe this has something to do with the naming conventions I am using.  I have no idea on how to go about using "self.y" within a function that is within a function, that is within a scene :S
Where did I go wrong here?                
 
                
Comments
This entire block of code now magically works. I'm not exactly sure what I did to make it work though :S (I think I changed a variable from scores. to self.)
I suppose if anyone has anything to add on the subject, feel free to bring it up, but I've solved my problem... somehow.