5

在我的 AIR 应用程序中,我想使用 jQuery 为 HTML 元素设置动画。当我在全局 HTMLLoader 中尝试动画时,没有问题。但是,我在尝试为“辅助”HTMLLoader(即由原始文档打开的)中的元素设置动画时遇到问题。

动画不流畅 - 当我移动鼠标时它只是“步进”。动画属性(例如top,left等)仍在更新 - 除非移动鼠标,否则它是不可见的。因此,如果我不移动鼠标,则动画完成时不会看到开始和结束状态之间的任何过渡。

动画的类型似乎并不重要。我已将代码简化为以下内容:

var loader;

$(function() {
    loader = new air.HTMLLoader();
    loader.addEventListener(air.Event.COMPLETE, start);
    window.htmlLoader.stage.addChild(loader);
    loader.load(new air.URLRequest('sandbox2.html'));
});

function start() {
    loader.width = loader.window.document.width;
    loader.height = loader.window.document.height;
    $('.task', loader.window.document).click(function() {
        $(this).animate({ backgroundColor: '#c00' }, 1000);
    });
}

我尝试将等效的 HTML/JS 加载到 Firefox 和 Safari 中,结果很好。我正在运行 Mac OS X 10.5。

有任何想法吗?谢谢!

4

3 回答 3

5

AIR 更像是 Safari 和 Chrome。AIR 使用 Webkit,在 Webkit 版本中它有点落后于 Safari 和 Chrome。你能看到它们是如何工作的吗?

我在 AIR 中使用过 jQuery,但我认为我没有在 AIR 中使用过 animate 方法。

另外,尝试缩小是否与颜色有关(尽管我无法想象是什么)。尝试像高度而不是颜色。

另外,为什么你必须使用 noconflict ?您是否加载了另一个库?我不记得必须这样做。

于 2009-06-11T02:17:31.290 回答
2

我有同样的问题。问题在于 jQuery 设置了动画需要在主窗口上更新的时间间隔,而不是在您的辅助窗口上下文中。

我为 jQuery 1.3.2做了一个小补丁,对我有用。

于 2009-12-04T23:53:11.037 回答
1

如果它在 Safari 上正常工作,但在 Adob​​e AIR 中不能正常工作,那么在我看来,它是在应用程序沙箱内运行的 jquery 应用程序的安全问题(Adobe AIR 上的默认但受限区域)。请创建一个非应用程序沙箱并在其中运行您的应用程序,看看这是否是一个安全问题。非应用程序沙箱应该像浏览器一样工作。http://labs.adobe.com/wiki/index.php/AIR:HTML_Security_FAQ

与应用程序安全沙箱中的内容不同,非应用程序安全沙箱中的 JavaScript 内容可以随时调用 eval() 函数来执行动态生成的代码。但是,非应用程序安全沙箱中的 JavaScript 存在限制。但这些限制反映了一般的浏览器限制。

使用 iframe 可以轻松创建非应用程序沙箱。

于 2009-06-21T09:36:51.713 回答