Просмотр полной версии : Tween, не плавно
Вот таким кодом я увеличиваю обьект на экран... Т.е. он был у меня маленький, когда на него нажал, оно плавно мне его на весь экран показывает...
import mx.transitions.Tween;
import mx.transitions.easing.*;
easeType = Strong.easeOut;
zoomTime = 1;
new mx.transitions.Tween(object, "_x", easeType, object._x, x, zoomTime, true);
new mx.transitions.Tween(object, "_y", easeType, object._y, y, zoomTime, true);
new mx.transitions.Tween(object, "_xscale", easeType, object._xscale, scale, zoomTime, true);
new mx.transitions.Tween(object, "_yscale", easeType, object._yscale, scale, zoomTime, true);
Но проблема, что на каких-то обьектах, оно как-то криво приближает, это может быть из-за формы обьекта? Как можно это исправить? Разное время указать, в зависимости от размеров?
Такое впечетление, что по х оно движется быстрее, и что бы не отставать по у но перескакивает или наоборот...
И почему-то всегда по-разному, раз нормально, раз криво...
пробуй fps временной диаграммы увеличивать.
ПС: хотя неизвестно что за параметры scale, x,y
Dima_DPE
20.08.2007, 12:51
Мой совет. Просто не пользуйся стандартным твинером. Есть море других. Я вчера с темже маился, код там почти идентичный (правда в AS3), но бывало такое вырисовывал, что аж страшно.
Тут есть один
http://code.google.com/p/tweener/
ps Это лично мое мнение, никого не заставляю, что-то менять
ccop, исходник с проблемой покажите.
Исходник весь выслать не могу, потому как там много чего накручено еще и будет сложно разобраться...
Есть функция, в которую я как параметр передаю ссылку на обьект, который нужно приблизить..
Есть клип, в котором есть куча маленьких клипов... Вот когда кликаю на клип, мне нужно его показать на весь экран, делаю это так...
object.swapDepths(this.getNextHighestDepth());
if (object._width > object._height)
zoom = (documentWidth - space) / object._width;
else
zoom = (documentHeight - space) / object._height;
x = documentWidth / 2 - (object._width * zoom) / 2 - object.x * zoom;
y = documentHeight / 2 - (object._height * zoom) / 2 - object.y * zoom
new Tween(object._parent, "_x", easeType, object._parent._x, x, zoomTime, true);
new Tween(object._parent, "_y", easeType, object._parent._y, y, zoomTime, true);
new Tween(object._parent, "_xscale", easeType, object._parent._xscale, zoom * 100, zoomTime, true);
new Tween(object._parent, "_yscale", easeType, object._parent._yscale, zoom * 100, zoomTime, true);
пробуй fps временной диаграммы увеличивать.
ПС: хотя неизвестно что за параметры scale, x,y
Как это сделать?
Arhitector
20.08.2007, 18:01
нажми на пустое место во флэше и внизу в Properties есть Frame rate по дефолту он 12, увеличь до 30
http://www.instinct.nm.ru/fps.jpg
не помогает... ((
создается такой эффект как буд-то землетрясение, дребежит при приближении
Dima_DPE
20.08.2007, 20:15
Если все дрожит, то скорее всего есть еще какието обработчики событий, типа наведения на объект курсора мыши или вложиных мувиков слишком уж много и он не успевает перерисовывать все (вот и прыгает) Взгляни на загрузку процесора во время анимации, если зашкаливает значит не успевает, если нет - гдето код шалит.
Пробывал убрать все обработчики событий - непомогло.
Загрузка проца доходит временами до 80%, это плохо?
смотрю на пример, где все красиво работает, 50-60 в среднем...
Dima_DPE
20.08.2007, 22:22
Ну, тогда только одно, дай сурсы на растерзание публике, кто-то и подскажет или сам капай до победного...
Molecula
20.08.2007, 23:06
Мож глюки у Вас от переутомления.
Странно, никогда не было таких вот казусов с Твином.
Исходник - единственная надежда на просветление!
Исходник весь выслать не могу, потому как там много чего накручено еще и будет сложно разобраться...Вот кусок кода можете выслать, а исходник с проблемной частью (все лишние выкинуть) - нет?
Все, разобрался, пробелмы была в обьекте, перерисовал клип заново и все теперь нормально, только вот не знаю почему пока.
Я ошибся, проблема была совсем не в форме обьекта.
Прошу посмотреть на исходник и помочь решить проблему
http://file.oboz.ua/download.php?fid=4143
Заранее благодарен!
Особенно хорошо видно когда клацать на зеленый обьект а потом на красный или наоборот...
у меня Flash 8
Наблюдаем классический вариант "борьба твинов".
Предлагаю такой вариант:
import mx.transitions.Tween;
import mx.transitions.easing.*;
easeType = Strong.easeOut;
zoomTime = 60;
var t1:Tween = new Tween(a, "_x", easeType, a._x, a._x, 1, false);
var t2:Tween = new Tween(a, "_y", easeType, a._y, a._y, 1, false);
var t3:Tween = new Tween(a, "_xscale", easeType, a._xscale, a._xscale, 1, false);
var t4:Tween = new Tween(a, "_yscale", easeType, a._yscale, a._yscale, 1, false);
function viewFullObject(object)
{
documentWidth = 550;
documentHeight = 400;
space = 20;
object.swapDepths(this.getNextHighestDepth());
if (object._width > object._height)
zoom = (documentWidth - space) / object._width;
else
zoom = (documentHeight - space) / object._height;
x = documentWidth / 2 - (object._width * zoom) / 2 - object._x * zoom;
y = documentHeight / 2 - (object._height * zoom) / 2 - object._y * zoom;
t1.continueTo(x, zoomTime);
t2.continueTo(y, zoomTime);
t3.continueTo(zoom * 100, zoomTime);
t4.continueTo(zoom * 100, zoomTime);
}
for (i = 0; i < 20; ++i)
{
_root.a[i].onRelease = function()
{
viewFullObject(this);
}
}
Только поставьте 31 кадр в секунду - я поставил useSecond в false, соответственно zoomTime = 60 кадров. Это, впрочем, непринципиально, можете юзать секунды.
upd: нет, это принципиально. Я вернул секунды и оно начало дергаться.
Спасибо большое! Есть над чем работать... буду разбираться...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.