2013-04-04 58 views
2

使用corona SDK,我希望每次用户点击homebutton时都会重启我的应用程序。 如果他/她收到电话呼叫,拉下下拉菜单等,我希望应用程序继续其当前状态。Corona SDK:只有当用户按下“home”时才能重新启动应用程序

有什么建议吗?

谢谢, /S

+0

我想你的意思是iPhone? – 2013-04-04 17:04:04

+0

这两个android(那些homebutton ..)和iPhone。谢谢 – Eyeball 2013-04-04 17:05:20

回答

4

我是怎么解决的!

suspendTime = 0 
resumeTime = 0 

function onSystemEvent(event) 
    if event.type == "applicationSuspend" then 
     suspendTime = os.time() 
     print(suspendTime) 
    elseif event.type == "applicationResume" then 
     resumeTime = os.time() 
     print(resumeTime) 
     print("deltaTime: "..resumeTime - suspendTime) 
      if(resumeTime - suspendTime > 30) then 
      local sceneName = storyboard.getCurrentSceneName() 
      if(sceneName ~= "levels.splash") then 
       print(sceneName) 
       print(resumeTime) 
         storyboard.gotoScene("levels.splash") 
      end 
     end 
    end 

end 
Runtime:addEventListener("system", onSystemEvent) 
+0

不要忘记suspendTime = 0和resumeTime = 0,找到delta后)顺便说一句,os.time()返回小时吗?当您在23:59暂停应用并在00:01再次打开时,它会做什么? – 2013-04-04 19:23:47

+0

我相信os:time是unix的时间戳。 http://en.wikipedia.org/wiki/Unix_time – Eyeball 2013-04-05 07:10:23

+0

所以,我想它不会重演分钟。无论如何,你可以通过尝试或制造这种价值来确定。如果它可以很好地工作,不需要做任何事情.. – 2013-04-05 07:57:32

1
function onKeyEvent(event) 
    local keyname = event.keyName; 
    if (event.phase == "up" and (event.keyName=="back" or event.keyName=="menu" or event.keyName == "home")) then 
     if keyname == "menu" then 
     os.exit() 
    end 
    end 
    return false 
end 

Runtime:addEventListener("key", onKeyEvent) 

这人会为Android工作。 我检查了http://docs.coronalabs.com/api/event/key/keyName.html,所以在iPhone上没有办法做到这一点。

但你可以试试这个:获取应用程序暂停的时间。并将其保存到文件目录。然后,当应用程序恢复时,检查两次会话之间的时间。如果超过半小时,重新开始所有的事情。

+0

真棒,我会给它一个镜头!谢谢! – Eyeball 2013-04-04 17:49:58

+0

不,这不适用于android上的home按钮,正如您在链接中看到的那样,它会显示:'homePage' \t'导航到主页“按钮(这不是Android上的”Home“按钮)。眼球答案像魅力一样起作用! – Arash 2015-11-17 10:26:20