This is my very first Corona anything. Trying to do the best I can, but I’m sure I’m doing many things inefficiently, if not outright wrong. So far this appears to mostly work in the simulator. It’s an app that loads one of a set of 3 (will eventually be 20) randomly generated screens with custom messages when the device is shaken.
It seems to mostly work…but the simulator starts to slow down and get laggy after you shake it 10-20 times. Not sure why that is.
Also, I’d like to play a second audio file for each of the background images, timed for when the shakeAgain image appears (using a transition.to), and I want it to start 1000 milliseconds after the respective background appears. How do I delay the second audio file so that it starts playing a second AFTER each new background image appears?
I appreciate any feedback or advice.
-- housekeeping stuff display.setStatusBar(display.HiddenStatusBar) local centerX = display.contentCenterX local centerY = display.contentCenterY -- preload audio local soundTable = { harpSound = audio.loadSound("sounds/harp.wav"), negativeMeow = audio.loadSound("sounds/sad-meow-1.ogg"), purringSound = audio.loadSound("sounds/tabby-purring-3sec.wav") } -- audio.play( soundTable ["harpSound"] ) -- create intro screen local function showNav() navBar = display.newImageRect("interface-elements/top-aqua-nav-bar.png",1242,400) navBar.x = centerX navBar.y = 70 navBar.alpha = 0 transition.to(navBar, { time=500, alpha=1 }) end local function createIntroScreen() introScreen = display.newImageRect("interface-elements/main-intro-screen.jpg",1242,2208) introScreen.x = centerX introScreen.y = centerY introScreen.alpha = 0 introCircle = display.newImageRect("interface-elements/intro-coral-circle.png",596,596) introCircle.x = centerX - 150 introCircle.y = display.viewableContentHeight / 2 + 300 introCircle.alpha = 0 audio.play( soundTable ["harpSound"] ) audio.play( soundTable ["negativeMeow"] ) transition.to(introCircle, {time=500, delay=1000, alpha=1}) transition.to(introScreen, { time=1000, alpha=1, onComplete=showNav }) end -- app functions local function appBackground1() backgroundScreen = display.newImageRect("backgrounds/background-yes-1.jpg",1242,2208) backgroundScreen.x = centerX backgroundScreen.y = centerY backgroundScreen.alpha = 0 audio.play( soundTable ["negativeMeow"] ) transition.to(backgroundScreen, { time=1000, alpha=1 }) navBar = display.newImageRect("interface-elements/top-aqua-nav-bar.png",1242,400) navBar.x = centerX navBar.y = 70 answerRectangle = display.newImageRect("answer-rectangles/answer-yes-1.png",1242,400) answerRectangle.x = centerX answerRectangle.y = 300 answerRectangle.alpha = 0 transition.to(answerRectangle, { time=1000, delay=1000, alpha=1 }) shakeAgain = display.newImageRect("interface-elements/shake-again-cloud.png",1642,900) shakeAgain:scale(0, 0) shakeAgain.x = centerX shakeAgain.y = display.viewableContentHeight - 200 shakeAgain.alpha = 0 transition.to(shakeAgain, { time=1000, delay=2000, alpha=1, xScale=1, yScale=1 }) end local function appBackground2() backgroundScreen = display.newImageRect("backgrounds/background-maybe-1.jpg",1242,2208) backgroundScreen.x = centerX backgroundScreen.y = centerY backgroundScreen.alpha = 0 audio.play( soundTable ["negativeMeow"] ) transition.to(backgroundScreen, { time=1000, alpha=1 }) navBar = display.newImageRect("interface-elements/top-aqua-nav-bar.png",1242,400) navBar.x = centerX navBar.y = 70 answerRectangle = display.newImageRect("answer-rectangles/answer-maybe-1.png",1242,400) answerRectangle.x = centerX answerRectangle.y = 300 answerRectangle.alpha = 0 transition.to(answerRectangle, { time=1000, delay=1000, alpha=1 }) shakeAgain = display.newImageRect("interface-elements/shake-again-cloud.png",1642,900) shakeAgain:scale(0, 0) shakeAgain.x = centerX shakeAgain.y = display.viewableContentHeight - 200 shakeAgain.alpha = 0 transition.to(shakeAgain, { time=1000, delay=2000, alpha=1, xScale=1, yScale=1 }) end local function appBackground3() backgroundScreen = display.newImageRect("backgrounds/background-no-1.jpg",1242,2208) backgroundScreen.x = centerX backgroundScreen.y = centerY backgroundScreen.alpha = 0 audio.play( soundTable ["negativeMeow"] ) transition.to(backgroundScreen, { time=1000, alpha=1 }) navBar = display.newImageRect("interface-elements/top-aqua-nav-bar.png",1242,400) navBar.x = centerX navBar.y = 70 answerRectangle = display.newImageRect("answer-rectangles/answer-no-1.png",1242,400) answerRectangle.x = centerX answerRectangle.y = 300 answerRectangle.alpha = 0 transition.to(answerRectangle, { time=1000, delay=1000, alpha=1 }) shakeAgain = display.newImageRect("interface-elements/shake-again-cloud.png",1642,900) shakeAgain:scale(0, 0) shakeAgain.x = centerX shakeAgain.y = display.viewableContentHeight - 200 shakeAgain.alpha = 0 transition.to(shakeAgain, { time=1000, delay=2000, alpha=1, xScale=1, yScale=1 }) end createIntroScreen() -- listeners local function shakeListener( event ) local theNumber = (math.random(3)) print(theNumber) if event.isShake then if (theNumber) == 1 then appBackground1() elseif (theNumber) == 2 then appBackground2() elseif (theNumber) == 3 then appBackground3() end end return true end Runtime:addEventListener( "accelerometer", shakeListener )