当我做LUA时,我曾经运行dofile("...");
来加载其他lua文件等。后来发现这是一个非常糟糕的做法,可能导致应用程序中断。
现在我正在开发WebO应用程序的过程中,我想确保在采用糟糕的编程习惯之前我正在改变场景。
目前这是我使用的:
label2Tap: function(inSender, event) {
Mojo.Controller.stageController.popScene();
Mojo.Controller.stageController.swapScene("LogicAndArithmetic");
},
这对于我的LogicAndArithmetic场景非常有用,这是最好的做法吗? 谢谢。
答案 0 :(得分:2)
webOS的Mojo框架中的场景模型就像一个堆栈。当应用程序启动时,您调用pushScene
以显示您的主要场景。通常情况下,您可以进行额外的pushScene
调用以将场景添加到堆栈顶部,然后当您完成它们时,它们会弹出,通常是在用户执行“后退手势”时,会带回前一个场景。最终你会回到你的主要场景。
swapScene
调用相当于为不同的场景调用popScene
然后调用pushScene
。在你的情况下,你正在调用popScene
然后调用swapScene
,这相当于从堆栈中弹出两个场景然后再推回一个场景。它可能有效,因为你只有一个场景,但如果你有更多的场景它将无法正常工作。
答案 1 :(得分:2)
虽然这在技术上是正确的,但很可能不是用户期望您的应用行为的方式。通常,当用户按下打开新场景的按钮时,它被放置在堆栈上,正如Miguel所说。用户希望能够返回并将场景弹出堆栈。这会自动发生,您无需监听此输入。您可以通过调用Mojo.Controller.pushScene(“sceneName”);来完成此操作。虽然有些应用程序中swapScene有意义,但您的应用程序可能被概念化为一堆场景,具有逻辑“后退”场景。
我会建议玩一些现有的应用程序来了解它们的行为方式。此外,虽然Miguel建议搬到Enyo,但值得注意的是,Enyo应用程序并非正式应用于webOS 2设备(手机),只能在触控板上使用。可以在webOS 2设备上运行它们,但我相信它们会被应用程序目录拒绝。