为什么我的应用卡住了
Why my app gets stucked
我正在编写应用程序的介绍和演示代码。一切正常,但当我尝试使用它时,我发现了一个错误,我不知道如何摆脱它。
这就是该应用程序的作用:首先,您会看到简历中显示的说明 "Touch when the square appears, if other figure appears don't touch the screen"。所以演示开始了,如果你不触摸方块,就会出现一条消息,上面写着 "remember to touch the square",但如果你触摸屏幕以摆脱消息,就会像触摸其他图形一样读取它。我一直在想办法解决这个问题,但这真的很难。
所以,我需要一点帮助,请。消息显示在屏幕上时阻止触摸屏的方法或逻辑绕过此方法的方法。
感谢
P.S: 这是代码
---------------------------------------------------------------------------------
-- 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
Amir 是正确的,Corona 不再支持 Storyboard 实现。我建议使用更强大的编译器。
开始使用 Corona Composer 库。 Corona Docs
Corona 不再支持 Storyboard。尝试使用作曲家。
我正在编写应用程序的介绍和演示代码。一切正常,但当我尝试使用它时,我发现了一个错误,我不知道如何摆脱它。
这就是该应用程序的作用:首先,您会看到简历中显示的说明 "Touch when the square appears, if other figure appears don't touch the screen"。所以演示开始了,如果你不触摸方块,就会出现一条消息,上面写着 "remember to touch the square",但如果你触摸屏幕以摆脱消息,就会像触摸其他图形一样读取它。我一直在想办法解决这个问题,但这真的很难。
所以,我需要一点帮助,请。消息显示在屏幕上时阻止触摸屏的方法或逻辑绕过此方法的方法。
感谢
P.S: 这是代码
---------------------------------------------------------------------------------
-- 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
Amir 是正确的,Corona 不再支持 Storyboard 实现。我建议使用更强大的编译器。
开始使用 Corona Composer 库。 Corona Docs
Corona 不再支持 Storyboard。尝试使用作曲家。