Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Программная анимация (http://www.flasher.ru/forum/showthread.php?t=148016)

pachok89 19.12.2010 21:59

Программная анимация
 
Вложений: 1
Здравствуйте, не подскажете пожалуйста как сделать программно вот такое покачивание(плавное движение на 8px вниз, а затем вверх).
Еще бы хотелось сделать под конец замедление. Для этого нужен tweenmax?
Просто когда я питаюсь растровую картинку двигать вручную, жуткие рывки и тормоза.

samana 19.12.2010 22:14

Можно так:
Код AS3:

var ang:Number=0;//скорость перемещения
var speed:Number=8;//расстояние
var startY:Number=cube.y;//стартовая позиция
 
cube.addEventListener(Event.ENTER_FRAME,ef);
function ef(e:Event):void
{
        cube.y=startY+Math.cos(ang)*speed;
        speed-=0.05;
        ang+=0.1
        if(speed<0)
        {
                cube.y=startY;
                cube.removeEventListener(Event.ENTER_FRAME,ef)
                trace("cube in stoped")
        }
}


pachok89 19.12.2010 22:27

samana, спасибо большое ты мне очень помог.

Добавлено через 13 минут
samana, сделал чтобы покачивание были постоянными, но почему когда расстояние 8, анимация идет плавно, а когда ставишь меньше начинаются рывки? С вектором все нормально, на растре меньше расстояние=больше рывки.
Код AS3:

var ang:Number=0;//скорость перемещения
var speed:Number=1;//расстояние
var startY:Number=cube.y;//стартовая позиция
 
cube.addEventListener(Event.ENTER_FRAME,ef);
function ef(e:Event):void
{
        cube.y=startY+Math.cos(ang)*speed;
        speed==0.05;
        ang+=0.1
}


КорДум 19.12.2010 22:58

а чем TweenLite + TimelineLite не угодил?
Убрать рывки: поставьте сглаживание и умножьте scaleX и scaleY на 1.001

samana 19.12.2010 23:09

Цитата:

Код AS3:

var speed:Number=1;//расстояние


Получается что вы перемещаете объект на 1 пиксел вверх и на 1 вниз. А зачем такая маленькая и незаметная анимация?

Цитата:

а чем TweenLite + TimelineLite не угодил?
Вы правы, с ними намного легче, но я не умею ими пользоваться, как-то не довелось ещё, по этому подсказал вариант без применения этих классов.

ChuwY 20.12.2010 00:17

Да и обычный твин встроенный тоже вроде как работает...

КорДум 20.12.2010 00:57

samana, для вас:
Код AS3:

private var timeline:TimelineLite;
...
timeline = new TimelineLite( { onComplete:repeatAnim } );
timeline.append(TweenLite.to(obj, .3, { y:5 } ));
timeline.append(TweenLite.to(obj, .3, { y:0 } ));
...
private function repeatAnim():void {
        timeline.restart();
}


samana 20.12.2010 10:00

Цитата:

Сообщение от КорДум (Сообщение 958576)
samana, для вас:
Код AS3:

private var timeline:TimelineLite;
...
timeline = new TimelineLite( { onComplete:repeatAnim } );
timeline.append(TweenLite.to(obj, .3, { y:5 } ));
timeline.append(TweenLite.to(obj, .3, { y:0 } ));
...
private function repeatAnim():void {
        timeline.restart();
}


Спасибо, КорДум. Надо будет ещё скачать этот TimelineLite.

КорДум 20.12.2010 10:06

Он идет вместе со всем у greensock.

pachok89 20.12.2010 17:37

Сделал так,но все равно наблюдаются рывки, как можно блюрить край в сторону движения?
Код AS3:

import com.greensock.*;
import com.greensock.easing.*;
 
var timeline:TimelineLite;
 
timeline = new TimelineLite( { onComplete:repeatAnim } );
 
 
timeline.append(TweenLite.to(obj, 2, { y:160, ease:Quad.easeIn} ));
timeline.append(TweenLite.to(obj, 2, { y:150, ease:Quad.easeIn } ));
 
 
function repeatAnim():void {
        timeline.restart();
}

КорДум, а как при этом способе умножьте scaleX и scaleY на 1.001?


Часовой пояс GMT +4, время: 01:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.