使用jQuery.animate在Adobe AIR中进行动画

时间:2009-06-11 02:14:59

标签: jquery air jquery-animate

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

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

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

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。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:5)

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

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

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

另外,你为什么要使用noconflict?你有另一个图书馆加载?我不记得必须这样做。

答案 1 :(得分:2)

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

我为jQuery 1.3.2制作了small patch,对我有用。

答案 2 :(得分:1)

如果它在Safari上正常工作但在Adobe AIR中无法正常工作,那么我认为在应用程序沙箱中运行的jquery应用程序存在安全问题(默认情况下但Adobe AIR上的受限区域)。请创建一个非应用程序沙箱并在其中运行您的应用程序以查看这是否是一个安全问题。非应用程序沙箱的工作方式与浏览器完全相同。 http://labs.adobe.com/wiki/index.php/AIR:HTML_Security_FAQ

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

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