I have no choice but tu put the complete code!
main.lua -> start.lua -> escenaPelota.lua
in “escenaPelota.lua” I have 8 soccer balls and 1 basket ball.
Once any of the 9 balls hit the basket, the ball is removed (this works perfectly to all of them, with the exception of the “8th ball” (pelota8).
Here it is (with some variable sin spanish, sorry):
main.lua:
[lua]display.setStatusBar(display.HiddenStatusBar)
local composer = require (“composer”)
composer.gotoScene(“start”, {effect = “fade”, time = 500})[/lua]
start.lua:
[lua]display.setStatusBar(display.HiddenStatusBar)
local composer = require (“composer”)
local scene = composer.newScene()
local fondo
local pelotaGirando
–local spritePelotaBasket
–local framesPelota
–local instancia
local sequenceData
local character
local options
local imageSheet
local function cambiarEscena()
composer.removeScene(“escenaPelota”)
composer.gotoScene(“escenaPelota”, {effect = “slideLeft”, time = 1000})
end
local function mostrarSprite()
character:play()
character.isVisible = true
end
local sonidoPelotaCayendo = audio.loadStream( “sonidoambienteCortado.ogg”)
audio.play(sonidoPelotaCayendo, { channel=2, loops=0})
audio.setVolume(1)
– create()
function scene:create( event )
local sceneGroup = self.view
– Code here runs when the scene is first created but has not yet appeared on screen
fondo = display.newImageRect( “Imagenes/fondoAro1.png”,320,480)
fondo.x = 160
fondo.y = 240
sceneGroup:insert(fondo)
pelotaGirando = display.newImageRect(“Imagenes/pelotaBasketIntroConLogo2.png”, 50,50)
pelotaGirando.x = 160
pelotaGirando.y = 290
sceneGroup:insert(pelotaGirando)
sequenceData =
{
name=“pelotaCambiando”,
start=1,
count=2,
time=100,
loopCount = 0,
loopDirection = “bounce”
}
options =
{
width = 320,
height = 320,
numFrames = 2,
sheetContentWidth = 640,
sheetContentHeight = 320
}
imageSheet = graphics.newImageSheet(“Imagenes/spriteBasket.png”, options )
character = display.newSprite( imageSheet, sequenceData )
character.isVisible = false
end
– show()
function scene:show(event)
local sceneGroup = self.view
local phase = event.phase
if ( phase == “will” ) then
– Code here runs when the scene is still off screen (but is about to come on screen)
elseif ( phase == “did” ) then
transition.to( pelotaGirando, { xScale = 6.25, yScale = 6.25, rotation = 360 * 6, time = 2000} )
sceneGroup:insert(pelotaGirando)
character:setSequence(“pelotaCambiando”)
character.x = 160
character.y = 287
character.isVisible = false
timer.performWithDelay(2100, mostrarSprite)
sceneGroup:insert(character)
character:addEventListener(“tap”,cambiarEscena)
end
end
– hide()
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == “will” ) then
– Code here runs when the scene is on screen (but is about to go off screen)
elseif ( phase == “did” ) then
– Code here runs immediately after the scene goes entirely off screen
end
end
– destroy()
function scene:destroy( event )
local sceneGroup = self.view
– Code here runs prior to the removal of scene’s view
end
– Scene event function listeners
scene:addEventListener( “create”, scene )
scene:addEventListener( “show”, scene )
scene:addEventListener( “hide”, scene )
scene:addEventListener( “destroy”, scene )
return scene[/lua]
escenaPelota.lua:
[lua]-- Escena de Pelotas
–oculta la barra de arriba
display.setStatusBar(display.HiddenStatusBar)
local composer = require (“composer”)
local scene = composer.newScene()
local fisica
–fisica.setDrawMode(“hybrid”)
– Fondo –
local fondo
– Fondo –
– limites de la pantalla –
local piso
local techo
local paredIzq
local paredDer
– limites de la pantalla –
– sprite aro –
local sequenceData
local character
local options
local imageSheet
– sprite aro –
– pelota flecha –
local flechaPelota
– pelota flecha –
– Pelota Basket –
local pelotaB
– Pelota Basket –
– Pelotas Futbol –
local pelotaFutbol1
local pelotaFutbol2
local pelotaFutbol3
local pelotaFutbol4
local pelotaFutbol5
local pelotaFutbol6
local pelotaFutbol7
local pelotaFutbol8
–local pelotaFutbol9
–local pelotaFutbol10
– Pelotas Futbol –
– Aro –
local aro
– Aro –
– Barra vertical a la izquierda del aro –
local barraV
– Barra vertical a la izquierda del aro –
– Barra horizontal bajo el aro –
local barraH
– Barra horizontal bajo el aro –
– Barrita colision dentro del aro –
local barritaColision
– Barrita colision dentro del aro –
– Sonidos –
local sonidoDeFondo
– Sonidos –
local function apareceFlecha()
flechaPelota.isVisible = true
transition.blink( flechaPelota, { time = 2000 } )
end
local function titilarFlecha()
display.remove( flechaPelota )
flechaPelota = nil
end
local function sonidoPelotaFutbol()
media.playEventSound(“sonidopelota.wav”)
end
function moverPelotaBasket(event)
local pelota = event.target
pelota:applyLinearImpulse(0,-0.1,event.x,event.y)
end
local function moverPelotaFutbol(event)
local pelota2 = event.target
pelota2:applyLinearImpulse(0,-0.1,event.x,event.y)
end
local function sonidoPelotaBasket()
media.playEventSound(“sonidopelotabasket.ogg”)
end
local function sonidoEmbocaPelotaFutbolError()
media.playEventSound(“sonidoerrorpelotafutbol.ogg”)
end
local function sonidoEmbocaPelotaBasket()
media.playEventSound(“pelotaBencestada.ogg”)
end
local function mostrarSpriteAro()
character:play()
character.isVisible = true
end
local function cambiarEscena()
composer.removeScene(“start”)
composer.gotoScene(“start”, {effect = “slideRight”, time = 1000})
end
local function borrarPelotaFutbol1()
if (pelotaFutbol1 ~= nil) then
pelotaFutbol1:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol1:removeSelf()
end
end
local function borrarPelotaFutbol2()
if (pelotaFutbol2 ~= nil) then
pelotaFutbol2:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol2:removeSelf()
end
end
local function borrarPelotaFutbol3()
if (pelotaFutbol3 ~= nil) then
pelotaFutbol3:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol3:removeSelf()
end
end
local function borrarPelotaFutbol4()
if (pelotaFutbol4 ~= nil) then
pelotaFutbol4:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol4:removeSelf()
end
end
local function borrarPelotaFutbol5()
if (pelotaFutbol5 ~= nil) then
pelotaFutbol5:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol5:removeSelf()
end
end
local function borrarPelotaFutbol6()
if (pelotaFutbol6 ~= nil) then
pelotaFutbol6:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol6:removeSelf()
end
end
local function borrarPelotaFutbol7()
if (pelotaFutbol7 ~= nil) then
pelotaFutbol7:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol7:removeSelf()
end
end
local function borrarPelotaFutbol8()
if (pelotaFutbol8 ~= nil) then
pelotaFutbol18:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
pelotaFutbol8:removeSelf()
end
end
–local function borrarPelotaFutbol9()
– if (pelotaFutbol9 ~= nil) then
– pelotaFutbol9:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
– pelotaFutbol9:removeSelf()
–end
–end
–local function borrarPelotaFutbol10()
–if (pelotaFutbol10 ~= nil) then
– pelotaFutbol10:addEventListener(“collision”,sonidoEmbocaPelotaFutbolError)
– pelotaFutbol10:removeSelf()
– end
–end
local function finDelJuego()
pelotaB:addEventListener(“collision”,sonidoEmbocaPelotaBasket)
pelotaB:removeSelf()
timer.performWithDelay(2500, cambiarEscena)
end
local function onLocalCollision(self,event)
if (event.phase == “began” ) then
if (self.ID == “barrita”)
then if (event.other.ID == “pelota1”) then
borrarPelotaFutbol1()
end
if (event.other.ID == “pelota2”) then
borrarPelotaFutbol2()
end
if (event.other.ID == “pelota3”) then
borrarPelotaFutbol3()
end
if (event.other.ID == “pelota4”) then
borrarPelotaFutbol4()
end
if (event.other.ID == “pelota5”) then
borrarPelotaFutbol5()
end
if (event.other.ID == “pelota6”) then
borrarPelotaFutbol6()
end
if (event.other.ID == “pelota7”) then
borrarPelotaFutbol7()
end
if (event.other.ID == “pelota8”) then
borrarPelotaFutbol8()
end
--if (event.other.ID == “pelota9”) then
– borrarPelotaFutbol9()
--end
--if (event.other.ID == “pelota10”) then
--borrarPelotaFutbol10()
--end
if (event.other.ID == “pelotaB”) then
finDelJuego()
end
end
end
end
– FUNCIONES DE Escena-- create()
function scene:create( event )
local sceneGroup = self.view
– Code here runs when the scene is first created but has not yet appeared on screen
fisica = require(“physics”)
fisica.start()
fisica.setGravity(0,7)
--fisica.setDrawMode(“hybrid”)
fondo = display.newImageRect(“Imagenes/fondoBasket.jpg”,320,480)
fondo.x = 160
fondo.y = 240
sceneGroup:insert(fondo)
piso = display.newRect(0,480,1000,0)
sceneGroup:insert(piso)
flechaPelota = display.newImageRect(“Imagenes/flechaPelotaB.png”,180,90)
flechaPelota.x = 205
flechaPelota.y = 70
flechaPelota.isVisible = false
--transition.fadeOut(flechaPelota, { time=8000 } )
–
timer.performWithDelay(2000,apareceFlecha)
timer.performWithDelay( 8000, titilarFlecha )
techo = display.newRect(0,0,1000,0)
sceneGroup:insert(techo)
paredIzq = display.newRect(0,0,0,1000)
sceneGroup:insert(paredIzq)
paredDer = display.newRect(320,0,0,1000)
sceneGroup:insert(paredDer)
fisica.addBody(piso,“static”,{friction = 1.0})
fisica.addBody(techo,“static”,{friction = 1.0})
fisica.addBody(paredIzq,“static”,{friction = 1.0})
fisica.addBody(paredDer,“static”,{friction = 1.0})
pelotaB = display.newImageRect(“Imagenes/pelotabasket.png”,70,70)
pelotaB.x = 160
pelotaB.y = 300
sceneGroup:insert(pelotaB)
fisica.addBody(pelotaB, {bounce = 0.5, radius = 35, friction = 1.0})
– Pelota Futbol 1 –
pelotaFutbol1 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol1.x = 30
pelotaFutbol1.y = 30
sceneGroup:insert(pelotaFutbol1)
fisica.addBody(pelotaFutbol1, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 1 –
– Pelota Futbol 2 –
pelotaFutbol2 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol2.x = 90
pelotaFutbol2.y = 30
sceneGroup:insert(pelotaFutbol2)
fisica.addBody(pelotaFutbol2, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 2 –
– Pelota Futbol 3 –
pelotaFutbol3 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol3.x = 30
pelotaFutbol3.y = 90
sceneGroup:insert(pelotaFutbol3)
fisica.addBody(pelotaFutbol3, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 3 –
– Pelota Futbol 4 –
pelotaFutbol4 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol4.x = 90
pelotaFutbol4.y = 90
sceneGroup:insert(pelotaFutbol4)
fisica.addBody(pelotaFutbol4, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 4 –
– Pelota Futbol 5 –
pelotaFutbol5 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol5.x = 30
pelotaFutbol5.y = 150
sceneGroup:insert(pelotaFutbol5)
fisica.addBody(pelotaFutbol5, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 5 –
– Pelota Futbol 6 –
pelotaFutbol6 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol6.x = 90
pelotaFutbol6.y = 150
sceneGroup:insert(pelotaFutbol6)
fisica.addBody(pelotaFutbol6, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 6 –
– Pelota Futbol 7 –
pelotaFutbol7 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol7.x = 30
pelotaFutbol7.y = 210
sceneGroup:insert(pelotaFutbol7)
fisica.addBody(pelotaFutbol7, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 7 –
– Pelota Futbol 8 –
pelotaFutbol8 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
pelotaFutbol8.x = 90
pelotaFutbol8.y = 210
sceneGroup:insert(pelotaFutbol8)
fisica.addBody(pelotaFutbol8, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 8 –
– Pelota Futbol 9 –
--pelotaFutbol9 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
--pelotaFutbol9.x = 30
--pelotaFutbol9.y = 270
--sceneGroup:insert(pelotaFutbol9)
--fisica.addBody(pelotaFutbol9, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 9 –
– Pelota Futbol 10 –
--pelotaFutbol10 = display.newImageRect(“Imagenes/pelotafutbol.png”,60,60)
--pelotaFutbol10.x = 90
--pelotaFutbol10.y = 270
--sceneGroup:insert(pelotaFutbol10)
--fisica.addBody(pelotaFutbol10, {radius = 30, friction = 0.1, bounce = 0.5})
– Pelota Futbol 10 –
– Aro –
--aro = display.newImageRect(“Imagenes/aro.png”,100,80)
--aro.x = 270
--aro.y = 160
--sceneGroup:insert(aro)
– Aro –
sequenceData =
{
name=“aroCambiando”,
start=1,
count=2,
time=100,
loopCount = 0,
loopDirection = “bounce”
}
options =
{
width = 100,
height = 80,
numFrames = 2,
sheetContentWidth = 200,
sheetContentHeight = 80
}
imageSheet = graphics.newImageSheet(“Imagenes/Aros.png”, options )
character = display.newSprite( imageSheet, sequenceData )
character.isVisible = false
– Barra vertical a la izquierda del aro –
barraV = display.newImageRect(“Imagenes/barraV.png”,2,80)
barraV.x = 220
barraV.y = 160
barraV.isVisible = false
sceneGroup:insert(barraV)
fisica.addBody(barraV,“static”,{friction = 1.0})
– Barra vertical a la izquierda del aro –
– Barra horizontal bajo el aro –
barraH = display.newImageRect(“Imagenes/barraH.png”,80,2)
barraH.x = 260
barraH.y = 200
barraH.isVisible = false
sceneGroup:insert(barraH)
fisica.addBody(barraH,“static”,{friction = 1.0})
– Barra horizontal bajo el aro –
– Barrita colision dentro del aro –
barritaColision = display.newImageRect(“Imagenes/barritacolision.png”,60,2)
barritaColision.x = 270
barritaColision.y = 190
barritaColision.isVisible = false
sceneGroup:insert(barritaColision)
fisica.addBody(barritaColision,{friction = 1.0})
– Barrita colision dentro del aro –
sonidoDeFondo = audio.loadStream( “sonidoambiente.ogg”)
audio.play(sonidoDeFondo, { channel=1, loops=-1})
audio.setVolume(0.1)
barritaColision.ID = “barrita”
pelotaFutbol1.ID = “pelota1”
pelotaFutbol2.ID = “pelota2”
pelotaFutbol3.ID = “pelota3”
pelotaFutbol4.ID = “pelota4”
pelotaFutbol5.ID = “pelota5”
pelotaFutbol6.ID = “pelota6”
pelotaFutbol7.ID = “pelota7”
pelotaFutbol8.ID = “pelota8”
--pelotaFutbol9.ID = “pelota9”
--pelotaFutbol10.ID = “pelota10”
pelotaB.ID = “pelotaB”
end
– show()
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == “will” ) then
– Code here runs when the scene is still off screen (but is about to come on screen)
elseif ( phase == “did” ) then
– Code here runs when the scene is entirely on screen
composer.removeScene(“start”)
character:setSequence(“aroCambiando”)
character.x = 270
character.y = 160
mostrarSpriteAro()
sceneGroup:insert(character)
--flechaPelota:addEventListener(“touch”,titilarFlecha)
pelotaB:addEventListener(“touch”,moverPelotaBasket)
pelotaFutbol1:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol2:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol3:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol4:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol5:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol6:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol7:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol8:addEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol9:addEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol10:addEventListener(“touch”,moverPelotaFutbol)
pelotaFutbol1:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol2:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol3:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol4:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol5:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol6:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol7:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaFutbol8:addEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol9:addEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol10:addEventListener(“touch”,sonidoPelotaFutbol)
pelotaB:addEventListener(“touch”,sonidoPelotaBasket)
barritaColision:addEventListener(“collision”,barritaColision)
barritaColision.collision = onLocalCollision
end
end
– hide()
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == “will” ) then
– Code here runs when the scene is on screen (but is about to go off screen)
elseif ( phase == “did” ) then
– Code here runs immediately after the scene goes entirely off screen
--pelotaB:removeEventListener(“touch”,moverPelotaBasket)
--pelotaFutbol1:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol2:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol3:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol4:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol5:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol6:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol7:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol8:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol9:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol10:removeEventListener(“touch”,moverPelotaFutbol)
--pelotaFutbol1:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol2:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol3:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol4:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol5:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol6:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol7:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol8:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol9:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaFutbol10:removeEventListener(“touch”,sonidoPelotaFutbol)
--pelotaB:removeEventListener(“touch”,sonidoPelotaBasket)
--barritaColision:removeEventListener(“collision”,barritaColision)
end
end
– destroy()
function scene:destroy( event )
local sceneGroup = self.view
– Code here runs prior to the removal of scene’s view
--composer.removeScene(“start”)
end
– Scene event function listeners
scene:addEventListener( “create”, scene )
scene:addEventListener( “show”, scene )
scene:addEventListener( “hide”, scene )
scene:addEventListener( “destroy”, scene )
return scene[/lua]
Thanks!!!