0

这是我在这里的第一篇文章,但我很绝望。我用谷歌搜索,谷歌搜索,再用谷歌搜索,没有成功。我将非常感谢任何帮助或提示。

我正在开发一个 Adob​​e Air 应用程序(一个 2D 拼图/动作 HTML4 + CSS + Javascript 游戏,带有嵌入式关卡编辑器,适用于 Windows)。事实上,我的游戏快完成了,它在 IE9 和 Chrome 中运行得都很好;但是,我想将它移植到 Air(出于多种原因),因此我为 Dreamweaver 安装了 Adob​​e Air Extension v.3.3,并按照 Adob​​e 教程开始从 HTML 项目创建 Air 应用程序。

我可以毫无问题地生成 .air 文件,但是我的游戏似乎一开始就冻结了。我验证了很多很多很多东西(不是说全部);我还放了各种警报(“works-check_1”);通过我的代码的所有位,它在 Dreamweaver 中运行良好(但速度很慢)......但是 .air 文件将所有内容加载到页脚,然后在能够绘制第二帧之前冻结。我得出的结论是,问题很可能源于我在 .html 文件中用于获取鼠标坐标的当前脚本(允许在关卡编辑器中拖放)。

这是我目前在 .html 文件部分中的脚本:

<script language="JavaScript1.2">
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX;
tempXb = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else {  // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}
document.getElementById("xcoord").value = tempX;
document.getElementById("ycoord").value = tempY;
return true;
}
</script>

Adobe Air 似乎无法使用它,并且中断了。在 HTML/Javascript 中有没有其他简单的方法可以让我在 document.mousemove 上获取 X 和 Y 鼠标坐标,Air 会允许吗?

4

1 回答 1

0

好吧,没关系,这段代码就像 Air 中的魅力一样。我的游戏死机了,因为我不得不使用以下语法:

setTimeout(alert('Timeout'), 10);

而不是这个:

setTimeout("alert('Timeout')", 10);

("") 不受航空安保措施的支持;它更喜欢传递一个函数,而不是一个字符串。

法语参考:http ://help.adobe.com/fr_FR/AIR/1.5/devappsflash/WS5b3ccc516d4fbf351e63e3d118666ade46-7f0e.html

嗯!但是,即使我的游戏现在可以在 .air 中编译并且运行良好,它的运行速度也比直接在 IE9、Chrome 或 Safari 中运行要慢得多。不过,在 Safari 上,为了获得闪电般的 Javascript 性能,我必须禁用“首选项”>“安全”中的所有内容,除了“允许 Javascript”。Air 性能非常非常类似于我在禁用这些安全选项之前在 Safari 上的性能。顺便说一句,Titanium Appcelerator 为我的游戏提供了与 Adob​​e Air 完全相同的 Javascript 性能(帧率)。我更喜欢 Air 而不是 Titanium,但我必须找到另一个 IDE 解决方案才能使用快速和嵌入式 Javascript 引擎编译我的游戏,并且能够移植到其他平台......我很绝望!我想至少移植到其他平台上与 IE9、Chrome 或调整过的 Safari 中的速度相同......没有什么能达到我的期望,所有 IDE 目前都比我直接在浏览器中获得的结果要慢,这应该是等效的 :(

于 2012-05-02T06:14:42.850 回答