Форум 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=211288)

inozemcev 28.07.2015 16:42

Как реализовать движение по амплитуде
 
Необходимо чтобы видимый объект двиглся от точки A к точке B не по прямой а по амплитуде. Теоретически это можно было бы сделать подвесив слушатель на Enterframe и двигать каждый кадр по расчитанной геометрии, но мне просто хотелось бы при этом использовать уже готовый старлинговский твин, в котором также есть своя математика связанная с ускорением объекта. Что для этого нужно сделать наследоваться от твинов и писать свои твины работающие с амплитудой или есть что-то готовое уже?

AlexCooper 28.07.2015 17:19

вообще косинус синус, но что вы имеете ввиду по амплитуде?
http://www.terver.ru/img/sinusoida/2.jpg

Добавлено через 2 минуты
Код AS3:

Starling.juggler.tween(
    object,
    tweenSec,
    {    property: value,
          delay:sec, 
          transition:starling.animation.Transitions.*,
          onComplete: function
      }
);


inozemcev 28.07.2015 17:57

Я имею ввиду по заданной кривой, в гринсок я нашел пакет с motionPaths в нем есть в честности возможность рисовать кривую и по ней перемещать объект через progress свойство твина. через Transision я так понимаю можно задавать нелинейные анимации только для скорости а не для координат.

AlexCooper 28.07.2015 18:03

Transision на входе получает объект, и работает с заданным параметром.
Я ним анимирую так же счётчики заработанных баллов. Т.е. набор заданного числа от 0 до н

и это передаю твинеру
Код AS3:

internal class Timeline extends Object {
 
        private var target:*;
        private var _value:Number;
        private var prop:String;
        private var max:Number;
        private var oy:Number;
        private var sy:Number;
 
        public function Timeline( target:*, prop:String, value:Number, max:Number ) {
 
                target = target;
                prop = prop;
                max = max;
 
                oy = target.height;
                sy = target.y;
 
                value = value;
 
 
        }
 
        public function get value():Number
        {
                return _value;
        }
 
        public function set value(value:Number):void
        {
                _value = Math.floor(value);
 
                target[prop] = _value;
        }
 
}

соотвественно вы можете что угодно что вам нужно по графику изменить

Добавлено через 54 секунды
Код AS3:

var timel:Timeline = new Timeline(bscore/* is textfield*/,'text',range.x,range.y);
 
Starling.juggler.tween( timel, timeCalc(range.y), {'value': range.y, delay:timeoffset+.1, transition:Transitions.EASE_IN, onComplete: nextStep} );



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

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