作为将我的 LimeJS 游戏从 PC 转移到 Android 的前奏,我正在尝试让 Android CocoonJS Launcher 与基本的 LimeJS 应用程序一起工作。我在这里做错了吗?
我有一些问题可能只有 Tõnis Tiigi 知道,所以我也会问他:
LimeJS 是否已知在 CocoonJS Android Launcher 上可以运行,或者 LimeJS 是否存在尚未在此平台上解决的问题?
如果有问题,是否计划或正在开发对这个平台的支持?如果没有,我将不得不考虑重写以使用已知可与 CocoonJS 一起使用的游戏引擎。
我下载并安装了limejs-no-dom 包,并让它在我的Windows 机器上运行。我将基本的 \limejs-no-dom\lime\demos\tests\anim1 和 run_canvasonly.htm 改编为我自己的测试项目。这工作正常,没有控制台错误。我做了一个lime.py 构建来创建一个我上传到我的远程服务器的测试。当我从浏览器访问它时,它工作正常,没有控制台错误。当我使用 CocoonJS Launcher 应用程序将我的 android 手机连接到该站点时,我得到一个黑屏。有一个 JavaScript 异常:TypeError: Cannot read property parentNode of undefined at Object goog.style.installStyles
<!DOCTYPE HTML>
<html>
<head>
<title>Run MBTest</title>
<script type="text/javascript" src="mbt.js"></script>
</head>
<body onload="mbtest.start(document.getElementById('mycanvas'))">
<canvas id="mycanvas" width="500" height="500" style="border: 3px solid #c00"></canvas>
</body>
</html>
goog.provide('mbtest');
goog.require('lime');
goog.require('lime.Button');
goog.require('lime.Circle');
goog.require('lime.CoverNode');
goog.require('lime.Director');
goog.require('lime.Label');
goog.require('lime.Layer');
goog.require('lime.Scene');
goog.require('lime.Sprite');
goog.require('lime.animation.Loop');
goog.require('lime.animation.MoveBy');
goog.require('lime.animation.RotateBy');
goog.require('lime.animation.ScaleBy');
goog.require('lime.animation.Sequence');
goog.require('lime.animation.Spawn');
goog.require('lime.animation.ColorTo');
mbtest.WIDTH = 600;
mbtest.HEIGHT = 400;
mbtest.start = function(parent) {
mbtest.director = new lime.Director(parent || document.body, mbtest.WIDTH, mbtest.HEIGHT);
mbtest.director.makeMobileWebAppCapable();
var menuscene = new lime.Scene;
var layer = (new lime.Layer).setPosition(100, 100);
menuscene.appendChild(layer);
var sprite = new lime.Sprite().setFill(100,0,0).setSize(50, 50).setRenderer(lime.Renderer.CANVAS);
layer.appendChild(sprite);
var anim = new lime.animation.Sequence(new lime.animation.Spawn(
new lime.animation.MoveBy(200, 0).setDuration(1.5),
new lime.animation.ScaleBy(2),
new lime.animation.ColorTo(0,200,0)
), new lime.animation.Spawn(
new lime.animation.MoveBy(-200, 0).setDuration(1.5),
new lime.animation.ScaleBy(.5),
new lime.animation.ColorTo(200,0,0)
));
sprite.runAction(new lime.animation.Loop(anim).setLimit(5));
var sprite = new lime.Sprite().setFill('#0c0').setSize(50, 50).setPosition(0, 100).setRenderer(lime.Renderer.CANVAS);
layer.appendChild(sprite);
var anim = new lime.animation.Spawn(
new lime.animation.RotateBy(-90).setDuration(3).enableOptimizations(),
new lime.animation.MoveBy(300, 0).setDuration(3).enableOptimizations()
);
var a2 = new lime.animation.Sequence(anim, anim.reverse());
sprite.runAction(new lime.animation.Loop(a2).setLimit(5));
mbtest.director.replaceScene(menuscene);
};
goog.exportSymbol('mbtest.start', mbtest.start);