Help With Keyboard Input and LoadSave for Team Names

I am having trouble working with something that I would think would be so simple.  
 

I have a simple flashcard style game.  Users enter in “Team 1 Name” and “Team 2 Name”.  

I have created the native text fields and the keyboard portion seems to work fine but when I try to save the results into a variable that is then saved in a .json file, it does not seem to work.  

I have seen tutorials on loading and saving scores but not on loading and saving text that was input by the keyboard.  Is there a tutorial or some example code I can review that shows how this is done? 

Thank you!!

Christi 

Can you post the code that handles your text input?  Please use the <> button in the editor/styling bar.

Rob

Hi Rob, 

I started the project over to simplify it so I could find the issue.  I am using the Kwik plugin and Yamamoto from Kwik confirmed there is a bug which he is fixing.  He gave me some external code to fix the problem but for some reason it is still not saving the text that was input as the team name.  I was hoping you might be able to identify the problem.  This is the first I have used the keyboard text replacement function. 

My variable for the inputed text is “team1input”

My text layer that I am using for the keyboard replacement is “tm1box”

The code for the text input function is on line 291.

This is what the code looks like :

-- Code created by Kwik - Copyright: kwiksher.com -- Version: 3.5.2 -- Project: CharadesV2, published on Mon Jun 29 2015 15:01:22 GMT-0400 local composer = require( "composer" ) local scene = composer.newScene() -- External libraries -- Initial settings and checkings local numPages = 2 -- number of pages in the project local sceneGroup = nil -- main group for all page elements local W = display.contentWidth; -- full width of the page local H = display.contentHeight; -- full height of the page local curPage = 2 -- number of the current page -- Button names local but\_gohome -- Variables names local team1input = "" -- math.randomseed(os.time()) -- All layers on a table local layer = {} -- All audio files on a table local allAudios = {} allAudios.kAutoPlay = composer.kAutoPlay -- Calculates anchor points local function repositionAnchor( object, newAnchorX, newAnchorY ) local origX = object.x; local origY = object.y if newAnchorX ~= 0.5 or newAnchorY ~= 0.5 then local width = object.width; local height = object.height local xCoord = width \* (newAnchorX - .5) local yCoord = height \* (newAnchorY - .5) object.x = origX + xCoord; object.y = origY + yCoord object.oriX = object.x; object.oriY = object.y end end -- Called when the scene's view does not exist: function scene:create( event ) -- view is not yet visible local sceneGroup = self.view -- BEFORE variables team1input = "" -- -- Check if variable has a pre-saved content if kwkVarCheck("team1input") ~= nil then team1input = kwkVarCheck("team1input") end -- Capture and set group position local function groupPos(obj) local minX, minY for i = 1, obj.numChildren do local currentRecord = obj[i] if i == 1 then minX = currentRecord.x - currentRecord.contentWidth \* 0.5 minY = currentRecord.y - currentRecord.contentHeight \* 0.5 end local mX = currentRecord.x - currentRecord.contentWidth \* 0.5 if mX \< minX then minX = mX end local mY = currentRecord.y - currentRecord.contentHeight \* 0.5 if mY \< minY then minY = mY end end obj.x = minX + obj.contentWidth \* 0.5 obj.y = minY + obj.contentHeight \* 0.5 end -- Multilingual items -- (TOP) External code will render here -- kwkplay\_bg positioning layer.kwkplay\_bg = display.newImageRect( composer.imgDir.. "kwkplay\_bg.png", 1536, 2048 ); layer.kwkplay\_bg.x = 768; layer.kwkplay\_bg.y = 1024; layer.kwkplay\_bg.alpha = 1; layer.kwkplay\_bg.oldAlpha = 1 layer.kwkplay\_bg.oriX = layer.kwkplay\_bg.x; layer.kwkplay\_bg.oriY = layer.kwkplay\_bg.y layer.kwkplay\_bg.oriXs = layer.kwkplay\_bg.xScale; layer.kwkplay\_bg.oriYs = layer.kwkplay\_bg.yScale layer.kwkplay\_bg.name = "kwkplay\_bg" sceneGroup:insert( 1, layer.kwkplay\_bg); sceneGroup.kwkplay\_bg = layer.kwkplay\_bg -- kwkabout positioning layer.kwkabout = display.newImageRect( composer.imgDir.. "kwkabout.png", 250, 250 ); layer.kwkabout.x = 1198; layer.kwkabout.y = 1839; layer.kwkabout.alpha = 1; layer.kwkabout.oldAlpha = 1 layer.kwkabout.oriX = layer.kwkabout.x; layer.kwkabout.oriY = layer.kwkabout.y layer.kwkabout.oriXs = layer.kwkabout.xScale; layer.kwkabout.oriYs = layer.kwkabout.yScale layer.kwkabout.name = "kwkabout" sceneGroup:insert( layer.kwkabout); sceneGroup.kwkabout = layer.kwkabout -- kwksettings positioning layer.kwksettings = display.newImageRect( composer.imgDir.. "kwksettings.png", 250, 250 ); layer.kwksettings.x = 915; layer.kwksettings.y = 1839; layer.kwksettings.alpha = 1; layer.kwksettings.oldAlpha = 1 layer.kwksettings.oriX = layer.kwksettings.x; layer.kwksettings.oriY = layer.kwksettings.y layer.kwksettings.oriXs = layer.kwksettings.xScale; layer.kwksettings.oriYs = layer.kwksettings.yScale layer.kwksettings.name = "kwksettings" sceneGroup:insert( layer.kwksettings); sceneGroup.kwksettings = layer.kwksettings -- kwkplay positioning layer.kwkplay = display.newImageRect( composer.imgDir.. "kwkplay.png", 250, 250 ); layer.kwkplay.x = 632; layer.kwkplay.y = 1839; layer.kwkplay.alpha = 1; layer.kwkplay.oldAlpha = 1 layer.kwkplay.oriX = layer.kwkplay.x; layer.kwkplay.oriY = layer.kwkplay.y layer.kwkplay.oriXs = layer.kwkplay.xScale; layer.kwkplay.oriYs = layer.kwkplay.yScale layer.kwkplay.name = "kwkplay" sceneGroup:insert( layer.kwkplay); sceneGroup.kwkplay = layer.kwkplay -- kwkhome positioning layer.kwkhome = display.newImageRect( composer.imgDir.. "kwkhome.png", 250, 250 ); layer.kwkhome.x = 349; layer.kwkhome.y = 1839; layer.kwkhome.alpha = 1; layer.kwkhome.oldAlpha = 1 layer.kwkhome.oriX = layer.kwkhome.x; layer.kwkhome.oriY = layer.kwkhome.y layer.kwkhome.oriXs = layer.kwkhome.xScale; layer.kwkhome.oriYs = layer.kwkhome.yScale layer.kwkhome.name = "kwkhome" sceneGroup:insert(layer.kwkhome); sceneGroup.kwkhome = layer.kwkhome -- play\_gobtn positioning layer.play\_gobtn = display.newImageRect( composer.imgDir.. "p2\_play\_gobtn.png", 902, 222 ); layer.play\_gobtn.x = 768; layer.play\_gobtn.y = 1307; layer.play\_gobtn.alpha = 1; layer.play\_gobtn.oldAlpha = 1 layer.play\_gobtn.oriX = layer.play\_gobtn.x; layer.play\_gobtn.oriY = layer.play\_gobtn.y layer.play\_gobtn.oriXs = layer.play\_gobtn.xScale; layer.play\_gobtn.oriYs = layer.play\_gobtn.yScale layer.play\_gobtn.name = "play\_gobtn" sceneGroup:insert( layer.play\_gobtn); sceneGroup.play\_gobtn = layer.play\_gobtn -- play\_cardbk positioning layer.play\_cardbk = display.newImageRect( composer.imgDir.. "p2\_play\_cardbk.png", 962, 692 ); layer.play\_cardbk.x = 769; layer.play\_cardbk.y = 475; layer.play\_cardbk.alpha = 1; layer.play\_cardbk.oldAlpha = 1 layer.play\_cardbk.oriX = layer.play\_cardbk.x; layer.play\_cardbk.oriY = layer.play\_cardbk.y layer.play\_cardbk.oriXs = layer.play\_cardbk.xScale; layer.play\_cardbk.oriYs = layer.play\_cardbk.yScale layer.play\_cardbk.name = "play\_cardbk" sceneGroup:insert( layer.play\_cardbk); sceneGroup.play\_cardbk = layer.play\_cardbk -- play\_t2bg positioning layer.play\_t2bg = display.newImageRect( composer.imgDir.. "p2\_play\_t2bg.png", 1044, 156 ); layer.play\_t2bg.x = 780; layer.play\_t2bg.y = 1079; layer.play\_t2bg.alpha = 1; layer.play\_t2bg.oldAlpha = 1 layer.play\_t2bg.oriX = layer.play\_t2bg.x; layer.play\_t2bg.oriY = layer.play\_t2bg.y layer.play\_t2bg.oriXs = layer.play\_t2bg.xScale; layer.play\_t2bg.oriYs = layer.play\_t2bg.yScale layer.play\_t2bg.name = "play\_t2bg" sceneGroup:insert( layer.play\_t2bg); sceneGroup.play\_t2bg = layer.play\_t2bg -- play\_t2minus positioning layer.play\_t2minus = display.newImageRect( composer.imgDir.. "p2\_play\_t2minus.png", 110, 110 ); layer.play\_t2minus.x = 1191; layer.play\_t2minus.y = 1074; layer.play\_t2minus.alpha = 1; layer.play\_t2minus.oldAlpha = 1 layer.play\_t2minus.oriX = layer.play\_t2minus.x; layer.play\_t2minus.oriY = layer.play\_t2minus.y layer.play\_t2minus.oriXs = layer.play\_t2minus.xScale; layer.play\_t2minus.oriYs = layer.play\_t2minus.yScale layer.play\_t2minus.name = "play\_t2minus" sceneGroup:insert( layer.play\_t2minus); sceneGroup.play\_t2minus = layer.play\_t2minus -- play\_t2plus positioning layer.play\_t2plus = display.newImageRect( composer.imgDir.. "p2\_play\_t2plus.png", 110, 110 ); layer.play\_t2plus.x = 1054; layer.play\_t2plus.y = 1074; layer.play\_t2plus.alpha = 1; layer.play\_t2plus.oldAlpha = 1 layer.play\_t2plus.oriX = layer.play\_t2plus.x; layer.play\_t2plus.oriY = layer.play\_t2plus.y layer.play\_t2plus.oriXs = layer.play\_t2plus.xScale; layer.play\_t2plus.oriYs = layer.play\_t2plus.yScale layer.play\_t2plus.name = "play\_t2plus" sceneGroup:insert( layer.play\_t2plus); sceneGroup.play\_t2plus = layer.play\_t2plus -- play\_t1bg positioning layer.play\_t1bg = display.newImageRect( composer.imgDir.. "p2\_play\_t1bg.png", 1044, 156 ); layer.play\_t1bg.x = 780; layer.play\_t1bg.y = 915; layer.play\_t1bg.alpha = 1; layer.play\_t1bg.oldAlpha = 1 layer.play\_t1bg.oriX = layer.play\_t1bg.x; layer.play\_t1bg.oriY = layer.play\_t1bg.y layer.play\_t1bg.oriXs = layer.play\_t1bg.xScale; layer.play\_t1bg.oriYs = layer.play\_t1bg.yScale layer.play\_t1bg.name = "play\_t1bg" sceneGroup:insert( layer.play\_t1bg); sceneGroup.play\_t1bg = layer.play\_t1bg -- play\_t1minus positioning layer.play\_t1minus = display.newImageRect( composer.imgDir.. "p2\_play\_t1minus.png", 110, 110 ); layer.play\_t1minus.x = 1191; layer.play\_t1minus.y = 910; layer.play\_t1minus.alpha = 1; layer.play\_t1minus.oldAlpha = 1 layer.play\_t1minus.oriX = layer.play\_t1minus.x; layer.play\_t1minus.oriY = layer.play\_t1minus.y layer.play\_t1minus.oriXs = layer.play\_t1minus.xScale; layer.play\_t1minus.oriYs = layer.play\_t1minus.yScale layer.play\_t1minus.name = "play\_t1minus" sceneGroup:insert( layer.play\_t1minus); sceneGroup.play\_t1minus = layer.play\_t1minus -- play\_t1plus positioning layer.play\_t1plus = display.newImageRect( composer.imgDir.. "p2\_play\_t1plus.png", 110, 110 ); layer.play\_t1plus.x = 1054; layer.play\_t1plus.y = 910; layer.play\_t1plus.alpha = 1; layer.play\_t1plus.oldAlpha = 1 layer.play\_t1plus.oriX = layer.play\_t1plus.x; layer.play\_t1plus.oriY = layer.play\_t1plus.y layer.play\_t1plus.oriXs = layer.play\_t1plus.xScale; layer.play\_t1plus.oriYs = layer.play\_t1plus.yScale layer.play\_t1plus.name = "play\_t1plus" sceneGroup:insert( layer.play\_t1plus); sceneGroup.play\_t1plus = layer.play\_t1plus -- play\_howto positioning layer.play\_howto = display.newImageRect( composer.imgDir.. "p2\_play\_howto.png", 320, 158 ); layer.play\_howto.x = 392; layer.play\_howto.y = 1555; layer.play\_howto.alpha = 1; layer.play\_howto.oldAlpha = 1 layer.play\_howto.oriX = layer.play\_howto.x; layer.play\_howto.oriY = layer.play\_howto.y layer.play\_howto.oriXs = layer.play\_howto.xScale; layer.play\_howto.oriYs = layer.play\_howto.yScale layer.play\_howto.name = "play\_howto" sceneGroup:insert( layer.play\_howto); sceneGroup.play\_howto = layer.play\_howto -- play\_newgame positioning layer.play\_newgame = display.newImageRect( composer.imgDir.. "p2\_play\_newgame.png", 326, 166 ); layer.play\_newgame.x = 770; layer.play\_newgame.y = 1555; layer.play\_newgame.alpha = 1; layer.play\_newgame.oldAlpha = 1 layer.play\_newgame.oriX = layer.play\_newgame.x; layer.play\_newgame.oriY = layer.play\_newgame.y layer.play\_newgame.oriXs = layer.play\_newgame.xScale; layer.play\_newgame.oriYs = layer.play\_newgame.yScale layer.play\_newgame.name = "play\_newgame" sceneGroup:insert( layer.play\_newgame); sceneGroup.play\_newgame = layer.play\_newgame -- play\_rules positioning layer.play\_rules = display.newImageRect( composer.imgDir.. "p2\_play\_rules.png", 326, 166 ); layer.play\_rules.x = 1150; layer.play\_rules.y = 1556; layer.play\_rules.alpha = 1; layer.play\_rules.oldAlpha = 1 layer.play\_rules.oriX = layer.play\_rules.x; layer.play\_rules.oriY = layer.play\_rules.y layer.play\_rules.oriXs = layer.play\_rules.xScale; layer.play\_rules.oriYs = layer.play\_rules.yScale layer.play\_rules.name = "play\_rules" sceneGroup:insert( layer.play\_rules); sceneGroup.play\_rules = layer.play\_rules -- tm1scoretxt positioning layer.tm1scoretxt = display.newImageRect( composer.imgDir.. "p2\_tm1scoretxt.png", 29, 43 ); layer.tm1scoretxt.x = 916; layer.tm1scoretxt.y = 911; layer.tm1scoretxt.alpha = 1; layer.tm1scoretxt.oldAlpha = 1 layer.tm1scoretxt.oriX = layer.tm1scoretxt.x; layer.tm1scoretxt.oriY = layer.tm1scoretxt.y layer.tm1scoretxt.oriXs = layer.tm1scoretxt.xScale; layer.tm1scoretxt.oriYs = layer.tm1scoretxt.yScale layer.tm1scoretxt.name = "tm1scoretxt" sceneGroup:insert( layer.tm1scoretxt); sceneGroup.tm1scoretxt = layer.tm1scoretxt -- tm2scoretxt positioning layer.tm2scoretxt = display.newImageRect( composer.imgDir.. "p2\_tm2scoretxt.png", 29, 43 ); layer.tm2scoretxt.x = 916; layer.tm2scoretxt.y = 1075; layer.tm2scoretxt.alpha = 1; layer.tm2scoretxt.oldAlpha = 1 layer.tm2scoretxt.oriX = layer.tm2scoretxt.x; layer.tm2scoretxt.oriY = layer.tm2scoretxt.y layer.tm2scoretxt.oriXs = layer.tm2scoretxt.xScale; layer.tm2scoretxt.oriYs = layer.tm2scoretxt.yScale layer.tm2scoretxt.name = "tm2scoretxt" sceneGroup:insert( layer.tm2scoretxt); sceneGroup.tm2scoretxt = layer.tm2scoretxt -- tm1box positioning layer.tm1box = native.newTextField( 584, 895, 553, 39 ) layer.tm1box.input = "default" layer.tm1box.anchorX = 0.5; layer.tm1box.anchorY = 0; repositionAnchor(layer.tm1box,0.5,0); layer.tm1box.oriX = layer.tm1box.x; layer.tm1box.oriY = layer.tm1box.y layer.tm1box.oriXs = layer.tm1box.xScale; layer.tm1box.oriYs = layer.tm1box.yScale sceneGroup:insert( layer.tm1box); sceneGroup.tm1box = layer.tm1box -- Group(s) creation -- AFTER variables -- (MIDDLE) External code will render here team1input = kwkVarCheck("team1input") layer.tm1box.text = team1input layer.tm1box.hasBackground = false layer.tm1box.anchorY = 0 layer.tm1box.size = 50 layer.tm1box:setTextColor(1,1,1) -- Repositions according anchor points end -- ends scene:create -- Called when the scene's view is about to 'will/load' or 'did/appear': function scene:show( event ) local sceneGroup = self.view if event.phase == "did" then -- purges previous and next scenes local \_\_prevScene = composer.getSceneName( "previous" ) if nil~= \_\_prevScene then composer.removeScene(\_\_prevScene, true) end -- Check for previous bookmarks if (tonumber(composer.kBookmark) == 1) then local path = system.pathForFile( "book.txt", system.DocumentsDirectory ) local file = io.open( path, "w+" ) file:write ( curPage.."\n1" ) io.close( file ) end -- Check for for auto play settings if (tonumber(composer.kAutoPlay) \> 0) then local function act\_autoPlay(event) if(curPage \< numPages) then if nil~= composer.getScene( "page\_"..curPage+1) then composer.removeScene( "page\_"..curPage+1, true) end if(composer.kBidi == false) then composer.gotoScene( "page\_"..curPage+1, { effect = "fromRight"} ) else composer.gotoScene( "page\_"..curPage-1, { effect = "fromLeft"} ) end end end if (tonumber(allAudios.kAutoPlay) \> composer.kAutoPlay) then composer.timerStash.timer\_AP = timer.performWithDelay( allAudios.kAutoPlay\*1000, act\_autoPlay, 1 ) else composer.timerStash.timer\_AP = timer.performWithDelay( composer.kAutoPlay\*1000, act\_autoPlay, 1 ) end end local function fieldHandler\_tm1box(event) if ("began" == event.phase) then elseif ("ended" == event.phase) then elseif ("submitted" == event.phase) then team1input = layer.tm1box.text native.setKeyboardFocus(nil) end end layer.tm1box:addEventListener( "userInput", fieldHandler\_tm1box ) -- Button event listeners local function onkwkhomeEvent(event) but\_gohome(layer.kwkhome) return true end layer.kwkhome:addEventListener("tap", onkwkhomeEvent ) -- Button functions function but\_gohome(self) local myClosure\_switch86 = function() local options = { effect = "slideRight" } if nil~= composer.getScene("page\_1") then composer.removeScene("page\_1", true) end if self.type == "press" then self:setEnabled(false) else self:removeEventListener( "tap", onkwkhomeEvent ) end composer.gotoScene( "page\_1", options ) end composer.timerStash.newTimer\_886 = timer.performWithDelay(0, myClosure\_switch86, 1) end -- do not swipe this page -- (BOTTOM) External code will render here end --ends phase did end -- ends scene:show function scene:hide( event ) -- purges previous and next scenes -- all disposal happens here if event.phase == "will" then composer.reloadCanvas = 0 if lineTable then for i=1, #lineTable do lineTable[i]:removeSelf(); lineTable[i] = nil end end composer.cancelAllTimers(); saveKwikVars({"team1input",team1input}) layer.tm1box:removeSelf(); layer.tm1box = nil elseif event.phase == "did" then composer.test = nil end end function scene:destroy( event ) -- Remove all unecessary composer items end scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) return scene

Okay. I’m glad you’re in contact with Kwik. I don’t see where you’re doing anything with the data:

 local function fieldHandler\_tm1box(event) if ("began" == event.phase) then elseif ("ended" == event.phase) then elseif ("submitted" == event.phase) then team1input = layer.tm1box.text native.setKeyboardFocus(nil) end end 

You capture team1input from the text box, but you don’t save it.  Normally you would put code in that function to save it.

Rob

Rob

Can you post the code that handles your text input?  Please use the <> button in the editor/styling bar.

Rob

Hi Rob, 

I started the project over to simplify it so I could find the issue.  I am using the Kwik plugin and Yamamoto from Kwik confirmed there is a bug which he is fixing.  He gave me some external code to fix the problem but for some reason it is still not saving the text that was input as the team name.  I was hoping you might be able to identify the problem.  This is the first I have used the keyboard text replacement function. 

My variable for the inputed text is “team1input”

My text layer that I am using for the keyboard replacement is “tm1box”

The code for the text input function is on line 291.

This is what the code looks like :

-- Code created by Kwik - Copyright: kwiksher.com -- Version: 3.5.2 -- Project: CharadesV2, published on Mon Jun 29 2015 15:01:22 GMT-0400 local composer = require( "composer" ) local scene = composer.newScene() -- External libraries -- Initial settings and checkings local numPages = 2 -- number of pages in the project local sceneGroup = nil -- main group for all page elements local W = display.contentWidth; -- full width of the page local H = display.contentHeight; -- full height of the page local curPage = 2 -- number of the current page -- Button names local but\_gohome -- Variables names local team1input = "" -- math.randomseed(os.time()) -- All layers on a table local layer = {} -- All audio files on a table local allAudios = {} allAudios.kAutoPlay = composer.kAutoPlay -- Calculates anchor points local function repositionAnchor( object, newAnchorX, newAnchorY ) local origX = object.x; local origY = object.y if newAnchorX ~= 0.5 or newAnchorY ~= 0.5 then local width = object.width; local height = object.height local xCoord = width \* (newAnchorX - .5) local yCoord = height \* (newAnchorY - .5) object.x = origX + xCoord; object.y = origY + yCoord object.oriX = object.x; object.oriY = object.y end end -- Called when the scene's view does not exist: function scene:create( event ) -- view is not yet visible local sceneGroup = self.view -- BEFORE variables team1input = "" -- -- Check if variable has a pre-saved content if kwkVarCheck("team1input") ~= nil then team1input = kwkVarCheck("team1input") end -- Capture and set group position local function groupPos(obj) local minX, minY for i = 1, obj.numChildren do local currentRecord = obj[i] if i == 1 then minX = currentRecord.x - currentRecord.contentWidth \* 0.5 minY = currentRecord.y - currentRecord.contentHeight \* 0.5 end local mX = currentRecord.x - currentRecord.contentWidth \* 0.5 if mX \< minX then minX = mX end local mY = currentRecord.y - currentRecord.contentHeight \* 0.5 if mY \< minY then minY = mY end end obj.x = minX + obj.contentWidth \* 0.5 obj.y = minY + obj.contentHeight \* 0.5 end -- Multilingual items -- (TOP) External code will render here -- kwkplay\_bg positioning layer.kwkplay\_bg = display.newImageRect( composer.imgDir.. "kwkplay\_bg.png", 1536, 2048 ); layer.kwkplay\_bg.x = 768; layer.kwkplay\_bg.y = 1024; layer.kwkplay\_bg.alpha = 1; layer.kwkplay\_bg.oldAlpha = 1 layer.kwkplay\_bg.oriX = layer.kwkplay\_bg.x; layer.kwkplay\_bg.oriY = layer.kwkplay\_bg.y layer.kwkplay\_bg.oriXs = layer.kwkplay\_bg.xScale; layer.kwkplay\_bg.oriYs = layer.kwkplay\_bg.yScale layer.kwkplay\_bg.name = "kwkplay\_bg" sceneGroup:insert( 1, layer.kwkplay\_bg); sceneGroup.kwkplay\_bg = layer.kwkplay\_bg -- kwkabout positioning layer.kwkabout = display.newImageRect( composer.imgDir.. "kwkabout.png", 250, 250 ); layer.kwkabout.x = 1198; layer.kwkabout.y = 1839; layer.kwkabout.alpha = 1; layer.kwkabout.oldAlpha = 1 layer.kwkabout.oriX = layer.kwkabout.x; layer.kwkabout.oriY = layer.kwkabout.y layer.kwkabout.oriXs = layer.kwkabout.xScale; layer.kwkabout.oriYs = layer.kwkabout.yScale layer.kwkabout.name = "kwkabout" sceneGroup:insert( layer.kwkabout); sceneGroup.kwkabout = layer.kwkabout -- kwksettings positioning layer.kwksettings = display.newImageRect( composer.imgDir.. "kwksettings.png", 250, 250 ); layer.kwksettings.x = 915; layer.kwksettings.y = 1839; layer.kwksettings.alpha = 1; layer.kwksettings.oldAlpha = 1 layer.kwksettings.oriX = layer.kwksettings.x; layer.kwksettings.oriY = layer.kwksettings.y layer.kwksettings.oriXs = layer.kwksettings.xScale; layer.kwksettings.oriYs = layer.kwksettings.yScale layer.kwksettings.name = "kwksettings" sceneGroup:insert( layer.kwksettings); sceneGroup.kwksettings = layer.kwksettings -- kwkplay positioning layer.kwkplay = display.newImageRect( composer.imgDir.. "kwkplay.png", 250, 250 ); layer.kwkplay.x = 632; layer.kwkplay.y = 1839; layer.kwkplay.alpha = 1; layer.kwkplay.oldAlpha = 1 layer.kwkplay.oriX = layer.kwkplay.x; layer.kwkplay.oriY = layer.kwkplay.y layer.kwkplay.oriXs = layer.kwkplay.xScale; layer.kwkplay.oriYs = layer.kwkplay.yScale layer.kwkplay.name = "kwkplay" sceneGroup:insert( layer.kwkplay); sceneGroup.kwkplay = layer.kwkplay -- kwkhome positioning layer.kwkhome = display.newImageRect( composer.imgDir.. "kwkhome.png", 250, 250 ); layer.kwkhome.x = 349; layer.kwkhome.y = 1839; layer.kwkhome.alpha = 1; layer.kwkhome.oldAlpha = 1 layer.kwkhome.oriX = layer.kwkhome.x; layer.kwkhome.oriY = layer.kwkhome.y layer.kwkhome.oriXs = layer.kwkhome.xScale; layer.kwkhome.oriYs = layer.kwkhome.yScale layer.kwkhome.name = "kwkhome" sceneGroup:insert(layer.kwkhome); sceneGroup.kwkhome = layer.kwkhome -- play\_gobtn positioning layer.play\_gobtn = display.newImageRect( composer.imgDir.. "p2\_play\_gobtn.png", 902, 222 ); layer.play\_gobtn.x = 768; layer.play\_gobtn.y = 1307; layer.play\_gobtn.alpha = 1; layer.play\_gobtn.oldAlpha = 1 layer.play\_gobtn.oriX = layer.play\_gobtn.x; layer.play\_gobtn.oriY = layer.play\_gobtn.y layer.play\_gobtn.oriXs = layer.play\_gobtn.xScale; layer.play\_gobtn.oriYs = layer.play\_gobtn.yScale layer.play\_gobtn.name = "play\_gobtn" sceneGroup:insert( layer.play\_gobtn); sceneGroup.play\_gobtn = layer.play\_gobtn -- play\_cardbk positioning layer.play\_cardbk = display.newImageRect( composer.imgDir.. "p2\_play\_cardbk.png", 962, 692 ); layer.play\_cardbk.x = 769; layer.play\_cardbk.y = 475; layer.play\_cardbk.alpha = 1; layer.play\_cardbk.oldAlpha = 1 layer.play\_cardbk.oriX = layer.play\_cardbk.x; layer.play\_cardbk.oriY = layer.play\_cardbk.y layer.play\_cardbk.oriXs = layer.play\_cardbk.xScale; layer.play\_cardbk.oriYs = layer.play\_cardbk.yScale layer.play\_cardbk.name = "play\_cardbk" sceneGroup:insert( layer.play\_cardbk); sceneGroup.play\_cardbk = layer.play\_cardbk -- play\_t2bg positioning layer.play\_t2bg = display.newImageRect( composer.imgDir.. "p2\_play\_t2bg.png", 1044, 156 ); layer.play\_t2bg.x = 780; layer.play\_t2bg.y = 1079; layer.play\_t2bg.alpha = 1; layer.play\_t2bg.oldAlpha = 1 layer.play\_t2bg.oriX = layer.play\_t2bg.x; layer.play\_t2bg.oriY = layer.play\_t2bg.y layer.play\_t2bg.oriXs = layer.play\_t2bg.xScale; layer.play\_t2bg.oriYs = layer.play\_t2bg.yScale layer.play\_t2bg.name = "play\_t2bg" sceneGroup:insert( layer.play\_t2bg); sceneGroup.play\_t2bg = layer.play\_t2bg -- play\_t2minus positioning layer.play\_t2minus = display.newImageRect( composer.imgDir.. "p2\_play\_t2minus.png", 110, 110 ); layer.play\_t2minus.x = 1191; layer.play\_t2minus.y = 1074; layer.play\_t2minus.alpha = 1; layer.play\_t2minus.oldAlpha = 1 layer.play\_t2minus.oriX = layer.play\_t2minus.x; layer.play\_t2minus.oriY = layer.play\_t2minus.y layer.play\_t2minus.oriXs = layer.play\_t2minus.xScale; layer.play\_t2minus.oriYs = layer.play\_t2minus.yScale layer.play\_t2minus.name = "play\_t2minus" sceneGroup:insert( layer.play\_t2minus); sceneGroup.play\_t2minus = layer.play\_t2minus -- play\_t2plus positioning layer.play\_t2plus = display.newImageRect( composer.imgDir.. "p2\_play\_t2plus.png", 110, 110 ); layer.play\_t2plus.x = 1054; layer.play\_t2plus.y = 1074; layer.play\_t2plus.alpha = 1; layer.play\_t2plus.oldAlpha = 1 layer.play\_t2plus.oriX = layer.play\_t2plus.x; layer.play\_t2plus.oriY = layer.play\_t2plus.y layer.play\_t2plus.oriXs = layer.play\_t2plus.xScale; layer.play\_t2plus.oriYs = layer.play\_t2plus.yScale layer.play\_t2plus.name = "play\_t2plus" sceneGroup:insert( layer.play\_t2plus); sceneGroup.play\_t2plus = layer.play\_t2plus -- play\_t1bg positioning layer.play\_t1bg = display.newImageRect( composer.imgDir.. "p2\_play\_t1bg.png", 1044, 156 ); layer.play\_t1bg.x = 780; layer.play\_t1bg.y = 915; layer.play\_t1bg.alpha = 1; layer.play\_t1bg.oldAlpha = 1 layer.play\_t1bg.oriX = layer.play\_t1bg.x; layer.play\_t1bg.oriY = layer.play\_t1bg.y layer.play\_t1bg.oriXs = layer.play\_t1bg.xScale; layer.play\_t1bg.oriYs = layer.play\_t1bg.yScale layer.play\_t1bg.name = "play\_t1bg" sceneGroup:insert( layer.play\_t1bg); sceneGroup.play\_t1bg = layer.play\_t1bg -- play\_t1minus positioning layer.play\_t1minus = display.newImageRect( composer.imgDir.. "p2\_play\_t1minus.png", 110, 110 ); layer.play\_t1minus.x = 1191; layer.play\_t1minus.y = 910; layer.play\_t1minus.alpha = 1; layer.play\_t1minus.oldAlpha = 1 layer.play\_t1minus.oriX = layer.play\_t1minus.x; layer.play\_t1minus.oriY = layer.play\_t1minus.y layer.play\_t1minus.oriXs = layer.play\_t1minus.xScale; layer.play\_t1minus.oriYs = layer.play\_t1minus.yScale layer.play\_t1minus.name = "play\_t1minus" sceneGroup:insert( layer.play\_t1minus); sceneGroup.play\_t1minus = layer.play\_t1minus -- play\_t1plus positioning layer.play\_t1plus = display.newImageRect( composer.imgDir.. "p2\_play\_t1plus.png", 110, 110 ); layer.play\_t1plus.x = 1054; layer.play\_t1plus.y = 910; layer.play\_t1plus.alpha = 1; layer.play\_t1plus.oldAlpha = 1 layer.play\_t1plus.oriX = layer.play\_t1plus.x; layer.play\_t1plus.oriY = layer.play\_t1plus.y layer.play\_t1plus.oriXs = layer.play\_t1plus.xScale; layer.play\_t1plus.oriYs = layer.play\_t1plus.yScale layer.play\_t1plus.name = "play\_t1plus" sceneGroup:insert( layer.play\_t1plus); sceneGroup.play\_t1plus = layer.play\_t1plus -- play\_howto positioning layer.play\_howto = display.newImageRect( composer.imgDir.. "p2\_play\_howto.png", 320, 158 ); layer.play\_howto.x = 392; layer.play\_howto.y = 1555; layer.play\_howto.alpha = 1; layer.play\_howto.oldAlpha = 1 layer.play\_howto.oriX = layer.play\_howto.x; layer.play\_howto.oriY = layer.play\_howto.y layer.play\_howto.oriXs = layer.play\_howto.xScale; layer.play\_howto.oriYs = layer.play\_howto.yScale layer.play\_howto.name = "play\_howto" sceneGroup:insert( layer.play\_howto); sceneGroup.play\_howto = layer.play\_howto -- play\_newgame positioning layer.play\_newgame = display.newImageRect( composer.imgDir.. "p2\_play\_newgame.png", 326, 166 ); layer.play\_newgame.x = 770; layer.play\_newgame.y = 1555; layer.play\_newgame.alpha = 1; layer.play\_newgame.oldAlpha = 1 layer.play\_newgame.oriX = layer.play\_newgame.x; layer.play\_newgame.oriY = layer.play\_newgame.y layer.play\_newgame.oriXs = layer.play\_newgame.xScale; layer.play\_newgame.oriYs = layer.play\_newgame.yScale layer.play\_newgame.name = "play\_newgame" sceneGroup:insert( layer.play\_newgame); sceneGroup.play\_newgame = layer.play\_newgame -- play\_rules positioning layer.play\_rules = display.newImageRect( composer.imgDir.. "p2\_play\_rules.png", 326, 166 ); layer.play\_rules.x = 1150; layer.play\_rules.y = 1556; layer.play\_rules.alpha = 1; layer.play\_rules.oldAlpha = 1 layer.play\_rules.oriX = layer.play\_rules.x; layer.play\_rules.oriY = layer.play\_rules.y layer.play\_rules.oriXs = layer.play\_rules.xScale; layer.play\_rules.oriYs = layer.play\_rules.yScale layer.play\_rules.name = "play\_rules" sceneGroup:insert( layer.play\_rules); sceneGroup.play\_rules = layer.play\_rules -- tm1scoretxt positioning layer.tm1scoretxt = display.newImageRect( composer.imgDir.. "p2\_tm1scoretxt.png", 29, 43 ); layer.tm1scoretxt.x = 916; layer.tm1scoretxt.y = 911; layer.tm1scoretxt.alpha = 1; layer.tm1scoretxt.oldAlpha = 1 layer.tm1scoretxt.oriX = layer.tm1scoretxt.x; layer.tm1scoretxt.oriY = layer.tm1scoretxt.y layer.tm1scoretxt.oriXs = layer.tm1scoretxt.xScale; layer.tm1scoretxt.oriYs = layer.tm1scoretxt.yScale layer.tm1scoretxt.name = "tm1scoretxt" sceneGroup:insert( layer.tm1scoretxt); sceneGroup.tm1scoretxt = layer.tm1scoretxt -- tm2scoretxt positioning layer.tm2scoretxt = display.newImageRect( composer.imgDir.. "p2\_tm2scoretxt.png", 29, 43 ); layer.tm2scoretxt.x = 916; layer.tm2scoretxt.y = 1075; layer.tm2scoretxt.alpha = 1; layer.tm2scoretxt.oldAlpha = 1 layer.tm2scoretxt.oriX = layer.tm2scoretxt.x; layer.tm2scoretxt.oriY = layer.tm2scoretxt.y layer.tm2scoretxt.oriXs = layer.tm2scoretxt.xScale; layer.tm2scoretxt.oriYs = layer.tm2scoretxt.yScale layer.tm2scoretxt.name = "tm2scoretxt" sceneGroup:insert( layer.tm2scoretxt); sceneGroup.tm2scoretxt = layer.tm2scoretxt -- tm1box positioning layer.tm1box = native.newTextField( 584, 895, 553, 39 ) layer.tm1box.input = "default" layer.tm1box.anchorX = 0.5; layer.tm1box.anchorY = 0; repositionAnchor(layer.tm1box,0.5,0); layer.tm1box.oriX = layer.tm1box.x; layer.tm1box.oriY = layer.tm1box.y layer.tm1box.oriXs = layer.tm1box.xScale; layer.tm1box.oriYs = layer.tm1box.yScale sceneGroup:insert( layer.tm1box); sceneGroup.tm1box = layer.tm1box -- Group(s) creation -- AFTER variables -- (MIDDLE) External code will render here team1input = kwkVarCheck("team1input") layer.tm1box.text = team1input layer.tm1box.hasBackground = false layer.tm1box.anchorY = 0 layer.tm1box.size = 50 layer.tm1box:setTextColor(1,1,1) -- Repositions according anchor points end -- ends scene:create -- Called when the scene's view is about to 'will/load' or 'did/appear': function scene:show( event ) local sceneGroup = self.view if event.phase == "did" then -- purges previous and next scenes local \_\_prevScene = composer.getSceneName( "previous" ) if nil~= \_\_prevScene then composer.removeScene(\_\_prevScene, true) end -- Check for previous bookmarks if (tonumber(composer.kBookmark) == 1) then local path = system.pathForFile( "book.txt", system.DocumentsDirectory ) local file = io.open( path, "w+" ) file:write ( curPage.."\n1" ) io.close( file ) end -- Check for for auto play settings if (tonumber(composer.kAutoPlay) \> 0) then local function act\_autoPlay(event) if(curPage \< numPages) then if nil~= composer.getScene( "page\_"..curPage+1) then composer.removeScene( "page\_"..curPage+1, true) end if(composer.kBidi == false) then composer.gotoScene( "page\_"..curPage+1, { effect = "fromRight"} ) else composer.gotoScene( "page\_"..curPage-1, { effect = "fromLeft"} ) end end end if (tonumber(allAudios.kAutoPlay) \> composer.kAutoPlay) then composer.timerStash.timer\_AP = timer.performWithDelay( allAudios.kAutoPlay\*1000, act\_autoPlay, 1 ) else composer.timerStash.timer\_AP = timer.performWithDelay( composer.kAutoPlay\*1000, act\_autoPlay, 1 ) end end local function fieldHandler\_tm1box(event) if ("began" == event.phase) then elseif ("ended" == event.phase) then elseif ("submitted" == event.phase) then team1input = layer.tm1box.text native.setKeyboardFocus(nil) end end layer.tm1box:addEventListener( "userInput", fieldHandler\_tm1box ) -- Button event listeners local function onkwkhomeEvent(event) but\_gohome(layer.kwkhome) return true end layer.kwkhome:addEventListener("tap", onkwkhomeEvent ) -- Button functions function but\_gohome(self) local myClosure\_switch86 = function() local options = { effect = "slideRight" } if nil~= composer.getScene("page\_1") then composer.removeScene("page\_1", true) end if self.type == "press" then self:setEnabled(false) else self:removeEventListener( "tap", onkwkhomeEvent ) end composer.gotoScene( "page\_1", options ) end composer.timerStash.newTimer\_886 = timer.performWithDelay(0, myClosure\_switch86, 1) end -- do not swipe this page -- (BOTTOM) External code will render here end --ends phase did end -- ends scene:show function scene:hide( event ) -- purges previous and next scenes -- all disposal happens here if event.phase == "will" then composer.reloadCanvas = 0 if lineTable then for i=1, #lineTable do lineTable[i]:removeSelf(); lineTable[i] = nil end end composer.cancelAllTimers(); saveKwikVars({"team1input",team1input}) layer.tm1box:removeSelf(); layer.tm1box = nil elseif event.phase == "did" then composer.test = nil end end function scene:destroy( event ) -- Remove all unecessary composer items end scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) return scene

Okay. I’m glad you’re in contact with Kwik. I don’t see where you’re doing anything with the data:

 local function fieldHandler\_tm1box(event) if ("began" == event.phase) then elseif ("ended" == event.phase) then elseif ("submitted" == event.phase) then team1input = layer.tm1box.text native.setKeyboardFocus(nil) end end 

You capture team1input from the text box, but you don’t save it.  Normally you would put code in that function to save it.

Rob

Rob