why im having this error?plizz help me
We aren’t able to help you without seeing the pertinent code
local composer = require( "composer" ) local scene = composer.newScene() local widget = require( "widget" ) local widgetExtras = require( "widget-extras" ) local myApp = require( "myapp" ) widget.setTheme(myApp.theme) local titleText local myMap local locationtxt local mapWidth local mapHeight local navBar local views = {} local starbucksLocations = {} starbucksLocations[1] = "Jalan Tun Syed Sheh Barakbah, 10200 George Town, Pulau Pinang, Malaysia" starbucksLocations[2] = " 29, Church St, George Town, 10200 George Town, Pulau Pinang, Malaysia" starbucksLocations[3] = "14 Leith Street Penang, 10200, Malaysia" local function ignoreTouch( event ) return true end local function markerListener( event ) print("type: ", event.type) -- event type print("markerId: ", event.markerId) -- id of the marker that was touched print("lat: ", event.latitude) -- latitude of the marker print("long: ", event.longitude) -- longitude of the marker end local function addStarbucks( event , id ) local options = { title="Georgetown", subtitle=starbucksLocations[id], imageFile = { filename = "starbucks.png", baseDir = system.ResourcesDirectory }, listener=markerListener } myMap:addMarker(event.latitude, event.longitude, options) end local function mapLocationHandler(event) myMap:setCenter( event.latitude, event.longitude, false ) myMap:setRegion( event.latitude, event.longitude, 0.25, 0.25, false) print("adding office marker") local options = { title="Corona Labs", subtitle="World HQ", imageFile = { filename = "coronamarker.png", baseDir = system.ResourcesDirectory }, listener=markerListener } result, errorMessage = myMap:addMarker( event.latitude, event.longitude, options ) if result then print("everything went well") else print(errorMessage) end end local function setMode( event ) if event.phase == "ended" then for i = 1, #views do views[i]:setFillColor(1, 1, 0.75) views[i].label:setFillColor( 0.375, 0.375, 0.375 ) end views[event.target.index]:setFillColor( 1, 1, 0.875 ) views[event.target.index].label:setFillColor( 0.25, 0.25, 0.25 ) myMap.mapType = event.target.mode end return true end local function textFieldHandler( event ) -- -- event.text only exists during the editing phase to show what's being edited. -- It is \*\*NOT\*\* the field's .text attribute. That is event.target.text -- if event.phase == "began" then -- user begins editing textField print( "Begin editing", event.target.text ) elseif event.phase == "ended" or event.phase == "submitted" then -- do something with defaulField's text print( "Final Text: ", event.target.text) navBar:setLabel( event.target.text ) myMap:requestLocation( event.target.text, mapLocationHandler ) native.setKeyboardFocus( nil ) elseif event.phase == "editing" then print( event.newCharacters ) print( event.oldText ) print( event.startPosition ) print( event.text ) end end function scene:create( event ) local sceneGroup = self.view local params = event.params local background = display.newRect(0,0,display.contentWidth, display.contentHeight) background:setFillColor( 0.95, 0.95, 0.95 ) background.x = display.contentWidth / 2 background.y = display.contentHeight / 2 sceneGroup:insert(background) navBar = widget.newNavigationBar({ title = params.pageTitle, backgroundColor = { 0.96, 0.62, 0.34 }, titleColor = {1, 1, 1}, font = "HelveticaNeue" }) sceneGroup:insert(navBar) -- -- This serves two purposes. First, its place holder so we can see where the mapView will be while -- working in the simulator. Secondly, it lets us have something to calculate the positions of the -- map's tabs before the map is created. -- mapWidth = display.contentWidth -- height of tabBar - height of the navBar - 20px for the buttons. mapHeight = display.contentHeight - 50 - navBar.height - 30 - 30 --(address field height defined later) local mapbox = display.newRect(0, 0, mapWidth, mapHeight) mapbox.x = display.contentCenterX mapbox.y = mapHeight / 2 + navBar.height + 30 -- (address field height) mapbox:setFillColor( 0.5, 0.5, 0.5 ) sceneGroup:insert(mapbox) local tabWidth = mapWidth / 3 views[1] = display.newRect(0,0,tabWidth,30) views[1].x = display.contentCenterX - tabWidth views[1].y = mapbox.y + (mapbox.height / 2) + 12 views[1]:setFillColor( 1, 1, 0.875) views[1]:setStrokeColor( 0.875, 0.875, 0.75) views[1].strokeWidth = 1 views[1].label = display.newText("Standard",0,0,myApp.font, 12 ) views[1].label.x = views[1].x views[1].label.y = views[1].y - 3 views[1].label:setFillColor( 0.25, 0.25, 0.25 ) views[1].index = 1 views[1].mode = "standard" sceneGroup:insert(views[1]) sceneGroup:insert(views[1].label) views[2] = display.newRect(0,0,tabWidth,30) views[2].x = display.contentCenterX views[2].y = mapbox.y + (mapbox.height / 2) + 12 views[2]:setFillColor( 1, 1, 0.75 ) views[2]:setStrokeColor(0.875, 0.875, 0.75 ) views[2].strokeWidth = 1 views[2].label = display.newText("Satellite",0,0,myApp.font, 12 ) views[2].label.x = views[2].x views[2].label.y = views[2].y - 3 views[2].label:setFillColor( 0.375, 0.375, 0.375 ) views[2].index = 2 views[2].mode = "satellite" sceneGroup:insert(views[2]) sceneGroup:insert(views[2].label) views[3] = display.newRect(0,0,tabWidth,30) views[3].x = display.contentCenterX + tabWidth views[3].y = mapbox.y + (mapbox.height / 2) + 12 views[3]:setFillColor( 1, 1, 0.75) views[3]:setStrokeColor( 0.875, 0.875, 0.75 ) views[3].strokeWidth = 1 views[3].label = display.newText("Hybrid",0,0,myApp.font, 12 ) views[3].label.x = views[3].x views[3].label.y = views[3].y - 3 views[3].label:setFillColor( 0.375, 0.375, 0.375) views[3].index = 3 views[3].mode = "hybrid" sceneGroup:insert(views[3]) sceneGroup:insert(views[3].label) end function scene:show( event ) local sceneGroup = self.view if event.phase == "did" then -- The text field's native peice starts hidden, we show it after we are on screen.on addressField = widget.newTextField({ width = display.contentWidth, height = 30, cornerRadius = 6, strokeWidth = 0, text = "", fontSize = 14, placeholder = "Address", font = "HelveticaNeue-Light", labelFont = "HelveticaNeue", labelFontSize = 14, labelWidth = 60, listener = textFieldHandler, label = "Address" }) -- Hide the native part of this until we need to show it on the screen. addressField.x = display.contentCenterX addressField.y = navBar.height + 15 sceneGroup:insert(addressField) -- -- Because mapViews's are native objects, the cannot intermix with the OpenGL objects that composer is -- managing. It's best to create it here and destory it in exitScene. myMap = native.newMapView( 0, 0, mapWidth , mapHeight ) if myMap then myMap.mapType = "standard" -- other mapType options are "satellite" or "hybrid" -- The MapView is just another Corona display object, and can be moved or rotated, etc. myMap.x = display.contentCenterX myMap.y = mapHeight / 2 + navBar.height + 30 -- -- Let's add some additional points of interest around our location -- -- The event structure returned by requestLocation doesn't contain a reference to the data that -- can be used to look up information to populate the marker's bubble or pass on to a more complex information -- system (phone number, URL, etc.) -- -- Let's use a Lua Closure (anonymous function) that will take the event table returned by the call and then -- call our real function using the index of the table as an ID for the marker -- for i = 1, #starbucksLocations do myMap:requestLocation(starbucksLocations[i], function(event) addStarbucks(event, i); end) end myMap:requestLocation( "Jalan Padang Kota Lama, George Town, 10200 George Town, Pulau Pinang, Malaysia", mapLocationHandler ) views[1]:addEventListener("touch", setMode) views[2]:addEventListener("touch", setMode) views[3]:addEventListener("touch", setMode) else native.showAlert( "Simulator", "Maps are only avaiable on device.", { "Okay" } ) end end end function scene:hide( event ) local sceneGroup = self.view -- -- Clean up native objects -- if event.phase == "will" then -- remove the addressField since it contains a native object. addressField:removeSelf() addressField = nil -- remove the map since it's a native object. if myMap and myMap.removeSelf then myMap:removeSelf() myMap = nil end end end function scene:destroy( event ) local sceneGroup = self.view end scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) return scene
this is enam.lua code
module(..., package.seeall) directorView = display.newGroup() currentView = display.newGroup() nextView = display.newGroup() effectView = display.newGroup() -- local currentScreen, nextScreen local lastScene = "main" local fxTime = 200 -- directorView:insert(currentView) directorView:insert(nextView) directorView:insert(effectView) ------------------------------------------------------------------------ -- CLEAN GROUP ------------------------------------------------------------------------ local function cleanGroups ( curGroup, level ) if curGroup.numChildren then while curGroup.numChildren \> 0 do cleanGroups ( curGroup[curGroup.numChildren], level+1 ) end if level \> 0 then curGroup:removeSelf() end else curGroup:removeSelf() curGroup = nil return end end ------------------------------------------------------------------------ -- LOAD SCENE ------------------------------------------------------------------------ local function loadScene ( nextScene ) nextScreen = require(nextScene).new() nextView:insert(nextScreen) end ------------------------------------------------------------------------ -- EFFECT ENDED ------------------------------------------------------------------------ local function fxEnded ( event ) currentView.x = 0 currentView.y = 0 currentView.xScale = 1 currentView.yScale = 1 -- cleanGroups(currentView,0) -- currentScreen = nextScreen currentView:insert(currentScreen) nextView.x = display.contentWidth nextView.y = 0 nextView.xScale = 1 nextView.yScale = 1 end ------------------------------------------------------------------------ -- CHANGE SCENE ------------------------------------------------------------------------ function director:changeScene(nextScene, effect, arg1, arg2, arg3) ----------------------------------- -- If is the same, don't change ----------------------------------- if lastScene then if string.lower(lastScene) == string.lower(nextScene) then return true end end local showFx ----------------------------------- -- EFFECT: Move From Right ----------------------------------- if effect == "moveFromRight" then nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*-1, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Right ----------------------------------- elseif effect == "overFromRight" then nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Move From Left ----------------------------------- elseif effect == "moveFromLeft" then nextView.x = display.contentWidth\*-1 nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Left ----------------------------------- elseif effect == "overFromLeft" then nextView.x = display.contentWidth\*-1 nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Top ----------------------------------- elseif effect == "overFromTop" then nextView.x = 0 nextView.y = display.contentHeight\*-1 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { y=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Bottom ----------------------------------- elseif effect == "overFromBottom" then nextView.x = 0 nextView.y = display.contentHeight -- loadScene (nextScene) -- showFx = transition.to ( nextView, { y=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Fade ----------------------------------- -- ARG1 = color [string] ----------------------------------- -- ARG1 = red [number] -- ARG2 = green [number] -- ARG3 = blue [number] ----------------------------------- elseif effect == "fade" then local r, g, b -- if type(arg1) == "nil" then arg1 = "black" end -- if string.lower(arg1) == "red" then r=255 g=0 b=0 elseif string.lower(arg1) == "green" then r=0 g=255 b=0 elseif string.lower(arg1) == "blue" then r=0 g=0 b=255 elseif string.lower(arg1) == "yellow" then r=255 g=255 b=0 elseif string.lower(arg1) == "pink" then r=255 g=0 b=255 elseif string.lower(arg1) == "white" then r=255 g=255 b=255 elseif type (arg1) == "number" and type (arg2) == "number" and type (arg3) == "number" then r=arg1 g=arg2 b=arg3 else r=0 g=0 b=0 end -- nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- local fade = display.newRect( 0 - display.contentWidth, 0 - display.contentHeight, display.contentWidth \* 3, display.contentHeight \* 3 ) fade.alpha = 0 fade:setFillColor( r,g,b ) effectView:insert(fade) -- showFx = transition.to ( fade, { alpha=1.0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) -- local function returnFade ( event ) showFx = transition.to ( fade, { alpha=0, time=fxTime } ) -- local function removeFade ( event ) fade:removeSelf() end -- timer.performWithDelay( fxTime, removeFade ) end -- timer.performWithDelay( fxTime+1, returnFade ) ----------------------------------- -- EFFECT: Flip ----------------------------------- elseif effect == "flip" then showFx = transition.to ( currentView, { xScale=0.001, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.5, time=fxTime } ) -- loadScene (nextScene) -- nextView.xScale=0.001 nextView.x=display.contentWidth\*0.5 -- showFx = transition.to ( nextView, { xScale=1, delay=fxTime, time=fxTime } ) showFx = transition.to ( nextView, { x=0, delay=fxTime, time=fxTime } ) -- timer.performWithDelay( fxTime\*2, fxEnded ) ----------------------------------- -- EFFECT: Down Flip ----------------------------------- elseif effect == "downFlip" then showFx = transition.to ( currentView, { xScale=0.7, time=fxTime } ) showFx = transition.to ( currentView, { yScale=0.7, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.15, time=fxTime } ) showFx = transition.to ( currentView, { y=display.contentHeight\*0.15, time=fxTime } ) showFx = transition.to ( currentView, { xScale=0.001, delay=fxTime, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.5, delay=fxTime, time=fxTime } ) -- loadScene (nextScene) -- nextView.x = display.contentWidth\*0.5 nextView.xScale=0.001 nextView.yScale=0.7 nextView.y=display.contentHeight\*0.15 -- showFx = transition.to ( nextView, { x=display.contentWidth\*0.15, delay=fxTime\*2, time=fxTime } ) showFx = transition.to ( nextView, { xScale=0.7, delay=fxTime\*2, time=fxTime } ) showFx = transition.to ( nextView, { xScale=1, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { yScale=1, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { x=0, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { y=0, delay=fxTime\*3, time=fxTime } ) -- timer.performWithDelay( fxTime\*4, fxEnded ) ----------------------------------- -- EFFECT: None ----------------------------------- else timer.performWithDelay( 0, fxEnded ) loadScene (nextScene) end ----------------------------------- -- Clean up memory ----------------------------------- if lastScene then package.loaded[lastScene] = nil end lastScene = nextScene collectgarbage("collect") return true end
this is director.lua code
We aren’t able to help you without seeing the pertinent code
local composer = require( "composer" ) local scene = composer.newScene() local widget = require( "widget" ) local widgetExtras = require( "widget-extras" ) local myApp = require( "myapp" ) widget.setTheme(myApp.theme) local titleText local myMap local locationtxt local mapWidth local mapHeight local navBar local views = {} local starbucksLocations = {} starbucksLocations[1] = "Jalan Tun Syed Sheh Barakbah, 10200 George Town, Pulau Pinang, Malaysia" starbucksLocations[2] = " 29, Church St, George Town, 10200 George Town, Pulau Pinang, Malaysia" starbucksLocations[3] = "14 Leith Street Penang, 10200, Malaysia" local function ignoreTouch( event ) return true end local function markerListener( event ) print("type: ", event.type) -- event type print("markerId: ", event.markerId) -- id of the marker that was touched print("lat: ", event.latitude) -- latitude of the marker print("long: ", event.longitude) -- longitude of the marker end local function addStarbucks( event , id ) local options = { title="Georgetown", subtitle=starbucksLocations[id], imageFile = { filename = "starbucks.png", baseDir = system.ResourcesDirectory }, listener=markerListener } myMap:addMarker(event.latitude, event.longitude, options) end local function mapLocationHandler(event) myMap:setCenter( event.latitude, event.longitude, false ) myMap:setRegion( event.latitude, event.longitude, 0.25, 0.25, false) print("adding office marker") local options = { title="Corona Labs", subtitle="World HQ", imageFile = { filename = "coronamarker.png", baseDir = system.ResourcesDirectory }, listener=markerListener } result, errorMessage = myMap:addMarker( event.latitude, event.longitude, options ) if result then print("everything went well") else print(errorMessage) end end local function setMode( event ) if event.phase == "ended" then for i = 1, #views do views[i]:setFillColor(1, 1, 0.75) views[i].label:setFillColor( 0.375, 0.375, 0.375 ) end views[event.target.index]:setFillColor( 1, 1, 0.875 ) views[event.target.index].label:setFillColor( 0.25, 0.25, 0.25 ) myMap.mapType = event.target.mode end return true end local function textFieldHandler( event ) -- -- event.text only exists during the editing phase to show what's being edited. -- It is \*\*NOT\*\* the field's .text attribute. That is event.target.text -- if event.phase == "began" then -- user begins editing textField print( "Begin editing", event.target.text ) elseif event.phase == "ended" or event.phase == "submitted" then -- do something with defaulField's text print( "Final Text: ", event.target.text) navBar:setLabel( event.target.text ) myMap:requestLocation( event.target.text, mapLocationHandler ) native.setKeyboardFocus( nil ) elseif event.phase == "editing" then print( event.newCharacters ) print( event.oldText ) print( event.startPosition ) print( event.text ) end end function scene:create( event ) local sceneGroup = self.view local params = event.params local background = display.newRect(0,0,display.contentWidth, display.contentHeight) background:setFillColor( 0.95, 0.95, 0.95 ) background.x = display.contentWidth / 2 background.y = display.contentHeight / 2 sceneGroup:insert(background) navBar = widget.newNavigationBar({ title = params.pageTitle, backgroundColor = { 0.96, 0.62, 0.34 }, titleColor = {1, 1, 1}, font = "HelveticaNeue" }) sceneGroup:insert(navBar) -- -- This serves two purposes. First, its place holder so we can see where the mapView will be while -- working in the simulator. Secondly, it lets us have something to calculate the positions of the -- map's tabs before the map is created. -- mapWidth = display.contentWidth -- height of tabBar - height of the navBar - 20px for the buttons. mapHeight = display.contentHeight - 50 - navBar.height - 30 - 30 --(address field height defined later) local mapbox = display.newRect(0, 0, mapWidth, mapHeight) mapbox.x = display.contentCenterX mapbox.y = mapHeight / 2 + navBar.height + 30 -- (address field height) mapbox:setFillColor( 0.5, 0.5, 0.5 ) sceneGroup:insert(mapbox) local tabWidth = mapWidth / 3 views[1] = display.newRect(0,0,tabWidth,30) views[1].x = display.contentCenterX - tabWidth views[1].y = mapbox.y + (mapbox.height / 2) + 12 views[1]:setFillColor( 1, 1, 0.875) views[1]:setStrokeColor( 0.875, 0.875, 0.75) views[1].strokeWidth = 1 views[1].label = display.newText("Standard",0,0,myApp.font, 12 ) views[1].label.x = views[1].x views[1].label.y = views[1].y - 3 views[1].label:setFillColor( 0.25, 0.25, 0.25 ) views[1].index = 1 views[1].mode = "standard" sceneGroup:insert(views[1]) sceneGroup:insert(views[1].label) views[2] = display.newRect(0,0,tabWidth,30) views[2].x = display.contentCenterX views[2].y = mapbox.y + (mapbox.height / 2) + 12 views[2]:setFillColor( 1, 1, 0.75 ) views[2]:setStrokeColor(0.875, 0.875, 0.75 ) views[2].strokeWidth = 1 views[2].label = display.newText("Satellite",0,0,myApp.font, 12 ) views[2].label.x = views[2].x views[2].label.y = views[2].y - 3 views[2].label:setFillColor( 0.375, 0.375, 0.375 ) views[2].index = 2 views[2].mode = "satellite" sceneGroup:insert(views[2]) sceneGroup:insert(views[2].label) views[3] = display.newRect(0,0,tabWidth,30) views[3].x = display.contentCenterX + tabWidth views[3].y = mapbox.y + (mapbox.height / 2) + 12 views[3]:setFillColor( 1, 1, 0.75) views[3]:setStrokeColor( 0.875, 0.875, 0.75 ) views[3].strokeWidth = 1 views[3].label = display.newText("Hybrid",0,0,myApp.font, 12 ) views[3].label.x = views[3].x views[3].label.y = views[3].y - 3 views[3].label:setFillColor( 0.375, 0.375, 0.375) views[3].index = 3 views[3].mode = "hybrid" sceneGroup:insert(views[3]) sceneGroup:insert(views[3].label) end function scene:show( event ) local sceneGroup = self.view if event.phase == "did" then -- The text field's native peice starts hidden, we show it after we are on screen.on addressField = widget.newTextField({ width = display.contentWidth, height = 30, cornerRadius = 6, strokeWidth = 0, text = "", fontSize = 14, placeholder = "Address", font = "HelveticaNeue-Light", labelFont = "HelveticaNeue", labelFontSize = 14, labelWidth = 60, listener = textFieldHandler, label = "Address" }) -- Hide the native part of this until we need to show it on the screen. addressField.x = display.contentCenterX addressField.y = navBar.height + 15 sceneGroup:insert(addressField) -- -- Because mapViews's are native objects, the cannot intermix with the OpenGL objects that composer is -- managing. It's best to create it here and destory it in exitScene. myMap = native.newMapView( 0, 0, mapWidth , mapHeight ) if myMap then myMap.mapType = "standard" -- other mapType options are "satellite" or "hybrid" -- The MapView is just another Corona display object, and can be moved or rotated, etc. myMap.x = display.contentCenterX myMap.y = mapHeight / 2 + navBar.height + 30 -- -- Let's add some additional points of interest around our location -- -- The event structure returned by requestLocation doesn't contain a reference to the data that -- can be used to look up information to populate the marker's bubble or pass on to a more complex information -- system (phone number, URL, etc.) -- -- Let's use a Lua Closure (anonymous function) that will take the event table returned by the call and then -- call our real function using the index of the table as an ID for the marker -- for i = 1, #starbucksLocations do myMap:requestLocation(starbucksLocations[i], function(event) addStarbucks(event, i); end) end myMap:requestLocation( "Jalan Padang Kota Lama, George Town, 10200 George Town, Pulau Pinang, Malaysia", mapLocationHandler ) views[1]:addEventListener("touch", setMode) views[2]:addEventListener("touch", setMode) views[3]:addEventListener("touch", setMode) else native.showAlert( "Simulator", "Maps are only avaiable on device.", { "Okay" } ) end end end function scene:hide( event ) local sceneGroup = self.view -- -- Clean up native objects -- if event.phase == "will" then -- remove the addressField since it contains a native object. addressField:removeSelf() addressField = nil -- remove the map since it's a native object. if myMap and myMap.removeSelf then myMap:removeSelf() myMap = nil end end end function scene:destroy( event ) local sceneGroup = self.view end scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) return scene
this is enam.lua code
module(..., package.seeall) directorView = display.newGroup() currentView = display.newGroup() nextView = display.newGroup() effectView = display.newGroup() -- local currentScreen, nextScreen local lastScene = "main" local fxTime = 200 -- directorView:insert(currentView) directorView:insert(nextView) directorView:insert(effectView) ------------------------------------------------------------------------ -- CLEAN GROUP ------------------------------------------------------------------------ local function cleanGroups ( curGroup, level ) if curGroup.numChildren then while curGroup.numChildren \> 0 do cleanGroups ( curGroup[curGroup.numChildren], level+1 ) end if level \> 0 then curGroup:removeSelf() end else curGroup:removeSelf() curGroup = nil return end end ------------------------------------------------------------------------ -- LOAD SCENE ------------------------------------------------------------------------ local function loadScene ( nextScene ) nextScreen = require(nextScene).new() nextView:insert(nextScreen) end ------------------------------------------------------------------------ -- EFFECT ENDED ------------------------------------------------------------------------ local function fxEnded ( event ) currentView.x = 0 currentView.y = 0 currentView.xScale = 1 currentView.yScale = 1 -- cleanGroups(currentView,0) -- currentScreen = nextScreen currentView:insert(currentScreen) nextView.x = display.contentWidth nextView.y = 0 nextView.xScale = 1 nextView.yScale = 1 end ------------------------------------------------------------------------ -- CHANGE SCENE ------------------------------------------------------------------------ function director:changeScene(nextScene, effect, arg1, arg2, arg3) ----------------------------------- -- If is the same, don't change ----------------------------------- if lastScene then if string.lower(lastScene) == string.lower(nextScene) then return true end end local showFx ----------------------------------- -- EFFECT: Move From Right ----------------------------------- if effect == "moveFromRight" then nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*-1, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Right ----------------------------------- elseif effect == "overFromRight" then nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Move From Left ----------------------------------- elseif effect == "moveFromLeft" then nextView.x = display.contentWidth\*-1 nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Left ----------------------------------- elseif effect == "overFromLeft" then nextView.x = display.contentWidth\*-1 nextView.y = 0 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { x=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Top ----------------------------------- elseif effect == "overFromTop" then nextView.x = 0 nextView.y = display.contentHeight\*-1 -- loadScene (nextScene) -- showFx = transition.to ( nextView, { y=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Over From Bottom ----------------------------------- elseif effect == "overFromBottom" then nextView.x = 0 nextView.y = display.contentHeight -- loadScene (nextScene) -- showFx = transition.to ( nextView, { y=0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) ----------------------------------- -- EFFECT: Fade ----------------------------------- -- ARG1 = color [string] ----------------------------------- -- ARG1 = red [number] -- ARG2 = green [number] -- ARG3 = blue [number] ----------------------------------- elseif effect == "fade" then local r, g, b -- if type(arg1) == "nil" then arg1 = "black" end -- if string.lower(arg1) == "red" then r=255 g=0 b=0 elseif string.lower(arg1) == "green" then r=0 g=255 b=0 elseif string.lower(arg1) == "blue" then r=0 g=0 b=255 elseif string.lower(arg1) == "yellow" then r=255 g=255 b=0 elseif string.lower(arg1) == "pink" then r=255 g=0 b=255 elseif string.lower(arg1) == "white" then r=255 g=255 b=255 elseif type (arg1) == "number" and type (arg2) == "number" and type (arg3) == "number" then r=arg1 g=arg2 b=arg3 else r=0 g=0 b=0 end -- nextView.x = display.contentWidth nextView.y = 0 -- loadScene (nextScene) -- local fade = display.newRect( 0 - display.contentWidth, 0 - display.contentHeight, display.contentWidth \* 3, display.contentHeight \* 3 ) fade.alpha = 0 fade:setFillColor( r,g,b ) effectView:insert(fade) -- showFx = transition.to ( fade, { alpha=1.0, time=fxTime } ) -- timer.performWithDelay( fxTime, fxEnded ) -- local function returnFade ( event ) showFx = transition.to ( fade, { alpha=0, time=fxTime } ) -- local function removeFade ( event ) fade:removeSelf() end -- timer.performWithDelay( fxTime, removeFade ) end -- timer.performWithDelay( fxTime+1, returnFade ) ----------------------------------- -- EFFECT: Flip ----------------------------------- elseif effect == "flip" then showFx = transition.to ( currentView, { xScale=0.001, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.5, time=fxTime } ) -- loadScene (nextScene) -- nextView.xScale=0.001 nextView.x=display.contentWidth\*0.5 -- showFx = transition.to ( nextView, { xScale=1, delay=fxTime, time=fxTime } ) showFx = transition.to ( nextView, { x=0, delay=fxTime, time=fxTime } ) -- timer.performWithDelay( fxTime\*2, fxEnded ) ----------------------------------- -- EFFECT: Down Flip ----------------------------------- elseif effect == "downFlip" then showFx = transition.to ( currentView, { xScale=0.7, time=fxTime } ) showFx = transition.to ( currentView, { yScale=0.7, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.15, time=fxTime } ) showFx = transition.to ( currentView, { y=display.contentHeight\*0.15, time=fxTime } ) showFx = transition.to ( currentView, { xScale=0.001, delay=fxTime, time=fxTime } ) showFx = transition.to ( currentView, { x=display.contentWidth\*0.5, delay=fxTime, time=fxTime } ) -- loadScene (nextScene) -- nextView.x = display.contentWidth\*0.5 nextView.xScale=0.001 nextView.yScale=0.7 nextView.y=display.contentHeight\*0.15 -- showFx = transition.to ( nextView, { x=display.contentWidth\*0.15, delay=fxTime\*2, time=fxTime } ) showFx = transition.to ( nextView, { xScale=0.7, delay=fxTime\*2, time=fxTime } ) showFx = transition.to ( nextView, { xScale=1, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { yScale=1, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { x=0, delay=fxTime\*3, time=fxTime } ) showFx = transition.to ( nextView, { y=0, delay=fxTime\*3, time=fxTime } ) -- timer.performWithDelay( fxTime\*4, fxEnded ) ----------------------------------- -- EFFECT: None ----------------------------------- else timer.performWithDelay( 0, fxEnded ) loadScene (nextScene) end ----------------------------------- -- Clean up memory ----------------------------------- if lastScene then package.loaded[lastScene] = nil end lastScene = nextScene collectgarbage("collect") return true end
this is director.lua code