using Director makes global variables not visible to external modules?

I’m doing basic stuff to understand using external classes/modules with global variables, and now I’m trying to add director. But when I added the director class, my global variables such as applyThrust then became not visible in the external class.

It worked fine before refactoring for Director. Before using director, I only had 2 files, rocket.lua and the mainScreen.lua file below was simply main.lua. I used the same globals, applyThrust and thrustForceY, and it worked.

By the way, the director functionality of switching screens appears to work fine, other than this odd side effect of making the global variables not visible.

Here’s the files I’m using with the director stuff :

main.lua
[lua]display.setStatusBar (display.HiddenStatusBar)

local director = require (“director”)
local mainGroup = display.newGroup()

local function main()
mainGroup:insert(director.directorView)
director:changeScene(“menu”)
return true
end

main()[/lua]

menu.lua
[lua]module(…, package.seeall)

function new()
local localGroup = display.newGroup()

local playText = display.newText(“Play”,160, 100, “Arial”, 32)
playText:setTextColor(0, 0, 255)
localGroup:insert(playText)

local function pressPlay (event)
if event.phase == “ended” then
director:changeScene (“mainScreen”)
end
end

playText:addEventListener (“touch”, pressPlay)


return localGroup
end[/lua]

mainScreen.lua
[lua]local Rocket = require( “rocket” )
local physics = require( “physics” )
module(…, package.seeall)

function new()
local localGroup = display.newGroup()
---------- above 2 lines to use director; lines below are my code -----
score = 100

physics.start()

local ground = display.newRect( 60, 170, 60, 60 )
physics.addBody( ground, “static”, { density=3.0, friction=0.5, bounce=0.2 } )

rocket = Rocket.new(80, 110)

local upText = display.newText(“Up”,160, 300, “Arial”, 32)
upText:setTextColor(0, 0, 255)

------------- my global variables -----------
thrustForceY = -100
applyThrust = false

local function pressUp (event)
local t = event.target

local phase = event.phase
if( “began” == phase ) then
display.getCurrentStage():setFocus( t )
t.isFocus = true

if( not applyThrust ) then
rocket:addThrust()
end
rocket:applyForce(0, thrustForceY, rocket.x, rocket.y)
applyThrust = true
elseif “ended” == phase or “cancelled” == phase then
rocket:removeThrust()
display.getCurrentStage():setFocus( nil )
t.isFocus = false
applyThrust = false
end
return true
end

upText:addEventListener (“touch”, pressUp)

------- bottom 2 lines for director
return localGroup
end[/lua]

rocket.lua
[lua]module(…, package.seeall)
local physics = require( “physics” )

–constructor--------------------
function new(x, y)
rocket = display.newGroup()

local body = display.newRect( x, y, 25, 60 )
physics.addBody( body, { density=1.5, friction=0.5, bounce=0.2 } )
body.isFixedRotation = true
rocket:insert(body)

local thrust = {}

function rocket:addThrust()
thrust = display.newRect( body.x, body.y + (body.height / 2) , 10, 10 )
thrust.y = body.y + (body.height / 2) + (thrust.height / 2)
physics.addBody( thrust, { density=1.5, friction=0.5, bounce=0.2 } )
rocket:insert(thrust)
end

function rocket:removeThrust()
rocket:remove(thrust)
end

function rocket:applyForce( xForce, yForce, atPointX, atPointY )
body:applyForce( xForce, yForce, atPointX, atPointY )
end


– enterFrame listener for rocket

function rocket:enterFrame (event)

if( applyThrust ) then
body:applyForce(0, thrustForceY, body.x, body.y)
thrust.y = body.y + (body.height / 2) + (thrust.height / 2)
thrust.x = body.x
else
print(“applyThrust is nil”)
end

end

Runtime:addEventListener(“enterFrame”, rocket)

return rocket
end[/lua] [import]uid: 82378 topic_id: 19266 reply_id: 319266[/import]