Hi Rob, Hi Brent, I really need your help, I’m going crazy.
I have more than a week with sprites, trying to make them work on storyboard.
I read a lot on Corona, and finally I got them to work more or less, but something funny
is happening, and I don’t understand why.
One button on createScene
buttonGun = widget.newButton{ defaultFile="buttonGun.png", onRelease = buttonGunHandler } group:insert ( buttonGun ) buttonGun.x = 200; buttonGun.y = 550
plays this function on top of my file – an explosion sprite
local function buttonGunHandler() audio.play(sfx4, { channel=1 } ) local gunGraphics = graphics.newImageSheet("flames\_05.png", {width=128, height=128, numFrames=30}) gunSprite = display.newSprite(gunGraphics, { name="sp", start=1, count=30, time=1000, loopCount = 1 } ) gunSprite.x = 322; gunSprite.y = 505 gunSprite.xScale = .9; gunSprite.yScale = .9 gunSprite:play() --gunSprite:pause() return true end
The first time plays perfect. when I go to another scene works fine, – I have this on destroyScene
if buttonGun then buttonGun:removeSelf() buttonGun = nil end
------------PROBLEM---------------
But if I touch the button two or more times, the program keeps adding the graphic
and the explosion looks more red every time, and when I go to another scene
the explosion graphic from the sprite it’s not removing itself.
This is the complete code
local storyboard = require( "storyboard" ) local widget = require "widget" local scene = storyboard.newScene() local buttonHome local buttonBack local buttonGun local buttonDynamite local fireSprite local fireSprite2 local dynamiteSprite local gunSprite local sfx1 = audio.loadSound( "sfxExplosion1.mp3") local sfx2 = audio.loadSound( "sfxExplosion2.mp3") local sfx3 = audio.loadSound( "sfxFire1.mp3") local sfx4 = audio.loadSound( "sfxGunsShot1.mp3") local function buttonHomeHandler() storyboard.gotoScene( "mainMenu", "zoomInOutFade", 200 ) return true end local function buttonBackHandler() storyboard.gotoScene( "more", "fromLeft", 200 ) return true end local function buttonGunHandler() audio.play(sfx4, { channel=1 } ) local gunGraphics = graphics.newImageSheet("flames\_05.png", {width=128, height=128, numFrames=30}) gunSprite = display.newSprite(gunGraphics, { name="sp", start=1, count=30, time=1000, loopCount = 1 } ) gunSprite.x = 322; gunSprite.y = 505 gunSprite.xScale = .9; gunSprite.yScale = .9 gunSprite:play() --gunSprite:pause() return true end local function buttonDynamiteHandler() audio.play(sfx1, { channel=2 } ) local dynamiteGraphics = graphics.newImageSheet("flames\_01.png", {width=128, height=128, numFrames=30}) dynamiteSprite = display.newSprite(dynamiteGraphics, { name="dynamite", start=1, count=30, time=1000, loopCount = 1 } ) dynamiteSprite.x = 512; dynamiteSprite.y = 200 dynamiteSprite.xScale = .9; dynamiteSprite.yScale = .9 dynamiteSprite:play() --dynamiteSprite:pause() return true end -- --==\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[CREATE SCENE]\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*++-- -- function scene:createScene( event ) local group = self.view local background = display.newImage( "spritesSample.png" ) group:insert ( background ) buttonHome = widget.newButton{ defaultFile="buttonHome.png", onRelease = buttonHomeHandler } group:insert ( buttonHome ) buttonHome.x = 910 buttonHome.y = 710 buttonBack = widget.newButton{ defaultFile="buttonBack.png", onRelease = buttonBackHandler } group:insert ( buttonBack ) buttonBack.x = 100 buttonBack.y = 710 buttonGun = widget.newButton{ defaultFile="buttonGun.png", onRelease = buttonGunHandler } group:insert ( buttonGun ) buttonGun.x = 200; buttonGun.y = 550 buttonDynamite = widget.newButton{ defaultFile="buttonDynamite.png", onRelease = buttonDynamiteHandler } group:insert ( buttonDynamite ) buttonDynamite.x = 300; buttonDynamite.y = 200 end --------------------------------------------------------------ENTER SCENE---------- function scene:enterScene( event ) local group = self.view audio.play(sfx3, { channel=3, loops=-1, fadein=1000 } ) fireSprite = graphics.newImageSheet("flames\_04.png", {width=128, height=128, numFrames=30}) fireSprite = display.newSprite(fireSprite, { name="fire", start=1, count=30, time=1000 } ) fireSprite.x = 880; fireSprite.y = 400 fireSprite.xScale = 1.5; fireSprite.yScale = 1.5 fireSprite:play() fireSprite2 = graphics.newImageSheet("flames\_04.png", {width=128, height=128, numFrames=30}) fireSprite2 = display.newSprite(fireSprite2, { name="fire2", start=1, count=30, time=1000 } ) fireSprite2.x = 840; fireSprite2.y = 445 fireSprite2.xScale = 1.3; fireSprite.yScale = 1.3 fireSprite2:play() end -------------------------------------------------------------------------------------- --------------------------------------------------------------EXIT SCENE---------- function scene:exitScene() audio.stop ( ) end -------------------------------------------------------------------------------------- -- --==\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[DESTROY SCENE]\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*++-- -- function scene:destroyScene( event ) local group = self.view if buttonHome then buttonHome:removeSelf() buttonHome = nil end if buttonBack then buttonBack:removeSelf() buttonBack = nil end if buttonGun then buttonGun:removeSelf() buttonGun = nil end if buttonDynamite then buttonDynamite:removeSelf() buttonDynamite = nil end if fireSprite then fireSprite:removeSelf() fireSprite = nil end if fireSprite2 then fireSprite2:removeSelf() fireSprite2 = nil end if dynamiteSprite then dynamiteSprite:removeSelf() dynamiteSprite = nil end if gunSprite then gunSprite:removeSelf() gunSprite = nil end end ---------------------------------------------------------------------------------- scene:addEventListener( "createScene", scene ) scene:addEventListener( "enterScene", scene ) scene:addEventListener( "exitScene", scene ) scene:addEventListener( "destroyScene", scene ) return scene
Please help me out
Thnaks
Victor