Вопрос

В моем приложении 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.

Есть какие-нибудь идеи?Спасибо!

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top