PDA

Просмотр полной версии : Проблемы с tween-анимацией jpeg-изображений


mee
08.02.2010, 05:02
Добрый вечер,

наконец-то разобрался с tween-анимацией в ActionScript, как мне посоветовали вот тут (http://www.flasher.ru/forum/showthread.php?t=135800).

Анимация выглядит приблизительно так:

var tween1:Tween = new Tween (pic2, '_x', mx.transitions.easing.None.easeNone, pic2._x, pic2._x - slideX , tweenTime, true);
var tween2:Tween = new Tween (pic1, '_x', mx.transitions.easing.None.easeNone, pic1._x, pic1._x + slideX , tweenTime, true);

fadeInt = setInterval(function() {
var xTween2 = new Tween(pic2, "_alpha", None.easeNone, 1, 100 , tweenTime/2, true);
var xTween1 = new Tween(pic1, "_alpha", None.easeNone, 100, 1 , tweenTime/2, true);
clearInterval(fadeInt);
}
,(tweenTime/2)*1000);


Проблема заключается в том, что изображения "плывут" при передвижении, сдвигаются частями, и возникает ощущение дёрганности отдельных частей картинки.
(посмотреть можно тут: http://carladavid.dutchesswebdesign.com/press/flash/)

Кто-нибудь знает, как побороть эту проблему?

благодарю,
с уважением mee

Hauts
08.02.2010, 09:58
Если ваши изображения лежат в библиотеке флэшки, щелкните на любом из них, и там поставьте "allow smoothing", так же и с остальными.

mooncar
08.02.2010, 10:09
Вряд ли тут дело в сглаживании, тоже была мысль сперва. Хотя может и возымеет действие.

ИМХО картинки слишком велики, похоже, флеш не успевает перерисовывать. Можно попробовать использовать cacheAsBitmap = true для мувиков-контейнеров, куда грузятся картинки.
Попробовать выставить это можно для контейнера уже только после загрузки содержимого, то есть внутри onLoadInit.

Наиболее вероятное решение проблемы:
Принудительно растеризовать мувик с картинкой и двигать уже его растеризованную копию.
Для этого попробуйте использовать функцию вот из этой темы http://www.flasher.ru/forum/showthread.php?t=135637 - 4 пост.
Ее тоже нужно использовать только после загрузки, изнутри onLoadInit.
Двигать уже тогда нужно будет растеризованную копию.

Добавлено через 7 минут
Еще вот это вызывает сомнения, хотя напрямую к делу не относится:
fadeInt = setInterval(function() {
var xTween2 = new Tween(pic2, "_alpha", None.easeNone, 1, 100 , tweenTime/2, true);
var xTween1 = new Tween(pic1, "_alpha", None.easeNone, 100, 1 , tweenTime/2, true);
clearInterval(fadeInt);
}

Скажите, зачем вы тут использовали интервальную функцию, если вызываете целевую функцию только один раз, сразу стирая интервал?

mee
08.02.2010, 14:24
Спасибо за ответы, попробую способы, указанные выше.
Что до вызова функции - я не большой специалист во флеше, мне надо было чтобы изображение начинало фейдиться через несколько секунд после начала движения. Если есть лучшие способы (к примеру что-то подобное setDelay в JS) - буду рад их услышать.

mooncar
08.02.2010, 15:09
setTimeout (someFunction, delay);

Попробуйте все же первый способ, в котором я не уверен. Но, поскольку у вас картинки подгружаются, а не зашиты в ролик, сделайте для мувиков, куда их загружаете
target_mc.forceSmoothing = true ;
Это надо делать только после загрузки, то есть внутри onLoadInit (надеюсь, вы используете MovieClipLoader).

mee
08.02.2010, 17:03
спасибо, чуть позже попробую и расскажу о результатах.

mooncar
08.02.2010, 17:32
Странно, скачал и попробовал вашу картинку двигать с помощью Tween
var tween1:Tween = new Tween (pic, '_x', mx.transitions.easing.None.easeNone, pic._x, pic._x - 100 , 2, true);
Сгладить (smoothing) пришлось, а вот характерных рывков-волн-ряби, как на сайте вашем, при перемещении не обнаружилось, не такая уж большая, видимо.
Рябь, конечно, на сайте такая странно сильная... У вас картинкой еще какие-то трансформации производятся?

Все, вот корень вашей беды:
Вы публикуете ролик на странице с размерами width="830" height="375", а реально флешка у вас 840px x 375px.
Исход - плеер криво масштабирует ролик с анимированным контентом.

На будущее - вы просто не обратили внимание, что при тестировании в программе было все ок, а проблема вылезла при публикации на странице.
Отсюда сразу бы напросился вывод - искать проблему нужно было в нюансах публикации.

mee
08.02.2010, 19:12
да, действительно. огромное вам спасибо за помощь! Осталось поправить анимацию и будет готово. Еще раз большое спасибо!