Анимация в Adobe AIR с использованием jQuery.animate - PullRequest
5 голосов
/ 11 июня 2009

В моем приложении AIR я хочу анимировать элемент HTML с помощью jQuery. Когда я пытаюсь выполнить анимацию в глобальном 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.

Есть идеи? Спасибо!

Ответы [ 3 ]

5 голосов
/ 11 июня 2009

AIR больше похож на Safari и Chrome. AIR использует Webkit, и в версии Webkit он немного отстает от Safari и Chrome. Вы видите, как они работают?

Я использовал jQuery в AIR, но я не думаю, что я использовал метод animate в AIR.

Кроме того, попробуйте сузить вопрос о цвете (хотя я не могу себе представить, что именно). Попробуйте что-то вроде высоты вместо цвета.

Кроме того, почему вы должны были использовать noconflict? У вас есть другая загруженная библиотека? Я не помню, чтобы я это делал.

2 голосов
/ 05 декабря 2009

У меня была такая же проблема. Проблема заключается в том, что jQuery устанавливает интервал, с которым анимация должна обновляться в главном окне, а не в контексте вторичного окна.

Я сделал небольшой патч для jQuery 1.3.2, который работает для меня.

1 голос
/ 21 июня 2009

Если он работает правильно в Safari, но не в Adobe AIR, мне кажется, что это проблема безопасности с вашим приложением jquery, работающим в изолированной программной среде приложения (по умолчанию, но в ограниченной области в Adobe AIR). Пожалуйста, создайте изолированную программную среду без приложения и запустите там свое приложение, чтобы увидеть, является ли это проблемой безопасности. Песочница без приложения должна работать точно так же, как браузер. http://labs.adobe.com/wiki/index.php/AIR:HTML_Security_FAQ

В отличие от содержимого в изолированной программной среде безопасности приложения, содержимое JavaScript в изолированной программной среде безопасности вне приложения может вызывать функцию eval () для выполнения динамически сгенерированного кода в любое время. Однако в изолированной программной среде безопасности приложения не существует ограничений для JavaScript. Но эти ограничения отражают общие ограничения браузера.

Песочница без приложения может быть легко создана с помощью iframe.

...