i'm working in the code of a intro and demo for an app. And everything works fine but while i was trying to use it i found a bug and i don't know how to get rid of it.
This is what the app do: First you see the instructions that says in resume "Touch when the square appears, if other figure appears don't touch the screen". So the demo starts, and if you don't touch the square a message is going to appear that says "remember to touch the square", but if you touch the screen to get rid of the message reads it as if you touch other figure. I've benn trying to figure how to manage this, but it's been really hard.
So, im asking for a little help, plz. A way to block touchscreen while the message is on the screen or a way of logic bypass this.
Thx
P.S: This is the code
---------------------------------------------------------------------------------
-- SCENE NAME
-- Scene notes go here
---------------------------------------------------------------------------------
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
-- Clear previous scene
--storyboard.removeAll()
-- local forward references should go here --
---------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
--tiempoVisible = 150 --Tiempo de visibilidad del circulo
--tiempoNoVisible = 1850 --Intervalo de timepo entre un circulo y otro
tiempoVisible = 200 --Tiempo de visibilidad del circulo
tiempoNoVisible = 2250 --Intervalo de timepo entre un circulo y otro
aciertos = 0 --Registra los aciertos del paciente
comisiones = 0 --Registra las comisiones del paciente
omisiones = 0 --Registra las omisiones del paciente
tiempo = tiempoNoVisible --Entrega el tiempo que debe estar el circulo y el tiempo de intervalo
--Contiene la secuencia de circulos buenos (1) y circulos malos (0)
tablaSecuencia = {0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1}
contadorSecuencia = 0 --Registra en que lugar de la tabla va la secuencia
esTransparente = true --Verifica si el circulo esta transparente o no
estaRespondido = false --Verifica si el circulo fue presionado
---------------------------------------------------------------------------------
-- Called when the scene's view does not exist:
function scene:createScene( event )
local group = self.view
--print("inside")
imagenINTRU = display.newImage("test2/instrucciones.png", 0, 0, true);
imagenINTRU:scale(display.contentWidth/imagenINTRU.contentWidth+0.15, display.contentHeight/imagenINTRU.contentHeight+0.1);
imagenINTRU.x= display.contentWidth/2;
imagenINTRU.y= display.contentHeight/2+40;
group:insert(imagenINTRU);
empezoTest = false
circulo = display.newCircle(display.contentCenterX-20, display.contentCenterY-30, 80)
circulo.alpha = 0
group:insert(circulo)
circulo.isVisible=false;
imagenP = display.newImage("test2/pentagonox.png", 0, 0, true);
imagenP:scale(1, 1);
imagenP.x= display.contentWidth/2;
imagenP.y= display.contentHeight/2;
group:insert(imagenP);
imagenP.isVisible=false;
imagenC = display.newImage("test2/cuadradox.png", 0, 0, true);
imagenC:scale(1, 1);
imagenC.x= display.contentWidth/2;
imagenC.y= display.contentHeight/2;
group:insert(imagenC);
imagenC.isVisible=false;
mensajeA = display.newText("¡Eso es!", 0, 0, 400, 0, native.systemFontBold, 60)
mensajeA.x = (display.contentWidth/2) + 100
mensajeA.y = 600 --display.contentHeight/2
mensajeA:setFillColor(144/255, 173/255, 193/255, 1)
mensajeA.align = "center"
group:insert(mensajeA)
mensajeB = display.newText("¡Recuerde que debe presionar cuando\n aparezca un cuadrado!", 0, 0, 950, 0, native.systemFontBold, 50)
mensajeB.x = 550
mensajeB.y = 600 --display.contentHeight/2
mensajeB:setFillColor(144/255, 173/255, 193/255, 1)
mensajeB.align = "center"
group:insert(mensajeB)
mensajeC = display.newText("¡Recuerde que NO debe presionar cuando\n aparezca otra figura geométrica!", 0, 0, 1100, 0, native.systemFontBold, 50)
mensajeC.x = 550
mensajeC.y = 600 --display.contentHeight/2
mensajeC:setFillColor(144/255, 173/255, 193/255, 1)
mensajeC.align = "center"
group:insert(mensajeC)
mensajeA.isVisible=false;
mensajeB.isVisible=false;
mensajeC.isVisible=false;
end
-- Called BEFORE scene has moved onscreen:
function scene:willEnterScene( event )
local group = self.view
end
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
end
-- Called AFTER scene has finished moving offscreen:
function scene:didExitScene( event )
local group = self.view
end
function finalizar()
Runtime:removeEventListener("touch", primerTouch)
Runtime:removeEventListener("touch", touch)
imagenINTRU:removeSelf()
imagenINTRU=nil;
end
-- Called prior to the removal of scene's "view" (display view)
function scene:destroyScene( event )
local group = self.view
end
-- Called if/when overlay scene is displayed via storyboard.showOverlay()
function scene:overlayBegan( event )
local group = self.view
local overlay_name = event.sceneName -- name of the overlay scene
end
-- Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
function scene:overlayEnded( event )
local group = self.view
local overlay_name = event.sceneName -- name of the overlay scene
end
function img()
imagenINTRU:removeSelf();
imagenINTRU = null;
imagenINTRU = display.newImage("test2/backGprueba.png", 0, 0, true);
imagenINTRU:scale(display.contentWidth/imagenINTRU.contentWidth+0.15, display.contentHeight/imagenINTRU.contentHeight+0.1);
imagenINTRU.x= display.contentWidth/2;
imagenINTRU.y= display.contentHeight/2+80;
imagenINTRU:toBack();
end
function primerTouch(event)
if ((event.phase == "ended" or event.phase == "cancelled") and not empezoTest) then
empezoTest = true
img()
timer.performWithDelay(tiempo, CambiarAlpha)
end
end
function CambiarAlpha()
if empezoTest then
if msjeVisible()==false then
if esTransparente then
print(contadorSecuencia.." turno")
if contadorSecuencia == 16 then
--if contadorSecuencia == 3 then
if tablaSecuencia[contadorSecuencia] == 1 and not estaRespondido then
no_msj()
print("OmisionA")
mensajeB.isVisible=true;
timer.performWithDelay(1600, delayB)
--omisiones = omisiones + 1
end
contadorSecuencia = 0
storyboard.purgeScene("ini_prueba2")
storyboard.removeScene("ini_prueba2")
storyboard.removeAll("ini_prueba2")
storyboard.gotoScene("ini_prueba2", "fade", 1500)
empezoTest=false;
finalizar()
else
delay=false;
--contadorSecuencia = contadorSecuencia - 1
if tablaSecuencia[contadorSecuencia] == 1 and not estaRespondido then
print("Omisionb")
no_msj()
mensajeB.isVisible=true;
timer.performWithDelay(1600, delayB)
delay=true;
end
if delay==false then
contadorSecuencia = contadorSecuencia + 1
if tablaSecuencia[contadorSecuencia] == 0 then
imagenP.isVisible=true;
else
imagenC.isVisible=true;
end
esTransparente = false
circulo.alpha = 1
--estaRespondido = false
tiempo = tiempoVisible
print("tmpo no visi ."..tiempo)
timer.performWithDelay(tiempo, CambiarAlpha)
--end
else -- if 199
contadorSecuencia = contadorSecuencia + 1
end -- end delay
end
else-- else transparente 177
esTransparente = true
circulo.alpha = 0
no_TPC()
tiempo = tiempoNoVisible
estaRespondido = false
timer.performWithDelay(tiempo, CambiarAlpha)
--tiempo = tiempoNoVisible
--estaRespondido = false
--timer.performWithDelay(tiempo, CambiarAlpha)
end
else
tiempo = tiempoNoVisible
timer.performWithDelay(tiempo, CambiarAlpha)
end --if mensaje visible
end --if empezoTest
end
function msjeVisible()
is=false;
if mensajeA.isVisible==true then
is= true;
end
if mensajeB.isVisible==true then
is= true;
end
if mensajeC.isVisible==true then
is= true;
end
return is;
end
function no_TPC()
imagenP.isVisible=false;
imagenC.isVisible=false;
end
function no_msj()
mensajeA.isVisible=false;
mensajeB.isVisible=false;
mensajeC.isVisible=false;
end
function no_msj2()
mensajeA.isVisible=false;
mensajeB.isVisible=false;
mensajeC.isVisible=false;
end
function delayA(event)
if mensajeA.isVisible then
mensajeA.isVisible=false;
tiempo = 100--tiempoNoVisible
--timer.performWithDelay(tiempo, CambiarAlpha)
print("A")
end
end
function delayB(event)
if mensajeB.isVisible then
mensajeB.isVisible=false;
tiempo = 100--tiempoNoVisible
timer.performWithDelay(tiempo, CambiarAlpha)
print("B")
end
end
function delayC(event)
if mensajeC.isVisible then
mensajeC.isVisible=false;
tiempo = 100--tiempoNoVisible
--timer.performWithDelay(tiempo, CambiarAlpha)
print("C")
end
end
function touch(event)
if event.phase == "began" and empezoTest then
if tablaSecuencia[contadorSecuencia] == 1 and not estaRespondido then
no_msj2()
mensajeA.isVisible=true;
timer.performWithDelay(1600, delayA)
aciertos = aciertos + 1
estaRespondido = true
elseif tablaSecuencia[contadorSecuencia] == 0 and not estaRespondido then
no_msj2()
mensajeC.isVisible=true;
timer.performWithDelay(1600, delayC)
comisiones = comisiones + 1
estaRespondido = true
end
end
end
--timer.performWithDelay(tiempo, CambiarAlpha)
Runtime:addEventListener("touch", touch)
---------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
---------------------------------------------------------------------------------
Runtime:addEventListener("touch", primerTouch)
-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )
-- "willEnterScene" event is dispatched before scene transition begins
scene:addEventListener( "willEnterScene", scene )
-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )
-- "exitScene" event is dispatched before next scene's transition begins
scene:addEventListener( "exitScene", scene )
-- "didExitScene" event is dispatched after scene has finished transitioning out
scene:addEventListener( "didExitScene", scene )
-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )
-- "overlayBegan" event is dispatched when an overlay scene is shown
scene:addEventListener( "overlayBegan", scene )
-- "overlayEnded" event is dispatched when an overlay scene is hidden/removed
scene:addEventListener( "overlayEnded", scene )
---------------------------------------------------------------------------------
return scene
Storyboard is not supported anymore in Corona. Try using composer.