Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   движение объекта (http://www.flasher.ru/forum/showthread.php?t=132154)

greenhill 05.11.2009 13:41

движение объекта
 
Привет всем!
Подскажите, пожалуйста, как сделать простую вещь:
при клике на кнопку объект плавно с ускорение перемещается скажем на 300пикселей.

Спасибо!

rockerror 05.11.2009 16:28

Привет, недавно решал эту задачу вот тут: http://www.flasher.ru/forum/showthread.php?t=132002

В конце проверенный, жизнеспособный код

mooncar 05.11.2009 16:35

Все проще. 3 типа движения мувика mc, варианты для разных кнопок:
Код AS1/AS2:

import mx.transitions.Tween;
var timeToMove:Number = 1; //время, отведенное для движения, сейчас  - 1 сек.
 
btn1.onPress = function  () { //сначала медленно, потом разгоняется
        var myTween:Tween = new Tween(mc, '_x', mx.transitions.easing.Strong.easeIn, mc._x, mc._x + 300, timeToMove, true);
}
 
btn2.onPress = function  () { //сначала быстро, потом замедляется
        var myTween:Tween = new Tween(mc, '_x', mx.transitions.easing.Strong.easeOut, mc._x, mc._x + 300, timeToMove, true);
}
 
btn3.onPress = function  () {//равномерное движение
        var myTween:Tween = new Tween(mc, '_x', mx.transitions.easing.None.easeNone, mc._x, mc._x + 300, timeToMove, true);
}

fps побольше желательно, чтобы была плавность.

rockerror 05.11.2009 16:39

Помнится, Уважаемый mooncar уже не раз помогал хорошим советом))) Его слушать - хорошо))) Жаль его не было, когда я решал свой вопрос ;)

mooncar 05.11.2009 16:44

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

rockerror 05.11.2009 16:45

Если честно, я искал в словаре as2 класс Tween, но так и не нашел((((

Добавлено через 1 минуту
То ли плохо искал, то ли словарик так себе, то ли голова))) Но...)))

mooncar 05.11.2009 16:49

Это раздел «ActionScript 2.0 Components Language Reference »
То есть, если в хелпе искать, нужно выбрать хотя бы режим «All books».

greenhill 05.11.2009 17:35

спаисибо огромное!
Четко и ясно :)

_SAM_ 05.11.2009 18:41

Для Tween переводил для себя

Regular: воодушевление постепенно возрастет или уменьшится в скорости как определено облегчающим методом.
Bounce: воодушевление подпрыгнет назад несколько шагов, когда оно достигает end позиции перед урегулированием в этом.
Back:воодушевление выйдет за end позицию перед подпрыгиванием обратно в это.
Elastic: смесь "Bounce и Back" комбинируемые эффекты.
Strong: более подчеркиваемый Regular: эффект.
None: нет специальный tweening, объектное движение не будет развивать скорость вдоль пути.


easeIn: - tween эффект применяется к началу воодушевления.
easeOut: - tween эффект применяется до конца воодушевления.
easeInOut: - tween эффект применяется к началу и концу воодушевления.
easeNone: - никакой tweening эффект не применен, чтобы использоваться Ничто tween функция. \\\


Tween.stop() делает, что это говорит, это говорит tween остановить в его текущей координате.
Tween.resume() говорит tween к итоговому воспроизведению от его текущей координаты, этот метод используется после призыва .stop() метод.
Tween.continueTo(окончание, продолжительность) говорит tween продолжать, это - воодушевление к новому пункту, начинающемуся от его текущей координаты.
Tween.start() говорит tween запустить воспроизведение от начального исходного пункта, это не то же как .resume().
Tween.fforward() говорит tween остановить в конечном итоге значение воодушевления.
Tween.nextFrame() говорит tween пойти к следующей рамке.
Tween.preFrame() говорит tween вернуться к предыдущей рамке.
Tween.rewind() говорит tween пойти назад и остановить в его исходном пункте.
Tween.yoyo() говорит воодушевлению играть в перемене.


.onMotionChanged - беспрерывно запустил, когда воодушевление бежит.
.onMotionFinished - запустил, когда воодушевление закончено.
.onMotionResumed - запустил, когда .resume() к методу обращается, чтобы возобновить воодушевление, будучи остановленным.
.onMotionStarted - запустил, когда воодушевление инициировано, используя .start() или .yoyo() метод. Код не будет запущен первый раз воодушевление сыграно, когда tween создан.
.onMotionStopped - запустил, когда .stop() обращается к.


Tween.duration Это свойство возвращает продолжительность, для которой предполагается, что tween воодушевление участвует в гонке.
Tween.finish Это возвращает end значение, которое мы назначили, создавая tween.
Tween.FPS Это возвращает число рамок за секунду, в которой воодушевление бежит.
Tween.position Это возвращает текущее значение property настоящего tweened.

mooncar 05.11.2009 18:57

"yoyo() говорит воодушевлению играть в перемене. " - это нечто! :)

greenhill 05.11.2009 19:31

как лучше реализовать эффект плавного появления элемента? скажем, TextField

mooncar 05.11.2009 22:23

Например, так: делаете на сцене TextField внутри мувика mc, руками задаете этому мувику _alpha = 0, а потом по нажатию или другому событию проявляете:
Код AS1/AS2:

import mx.transitions.Tween;
var timeToMove:Number = 1; //время, отведенное для проявления, сейчас  - 1 сек.
btn.onPress = function  () {
        var myTween:Tween = new Tween(mc, '_alpha', mx.transitions.easing.Strong.easeIOut, 0, 100, timeToMove, true);
}


greenhill 06.11.2009 09:14

спасибо!!
а для увеличения\уменьшения, какой параметр в твине используется?
что-то не могу найти нормальной документации по этому вопросу

mooncar 06.11.2009 13:29

Размеры - можно _xscale, _yscale, можно _width и _height.
Информацию, например, ищите не в разделе Tween, а в разделе MovieClip, потому что это его свойства меняет Tween.
А вообще
Код:

Tween( obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean )
К объектам, отличным от MovieClip, применять Tween не пробовал. Посмотрите сами, у какого объекта какое свойство изменять с его помощью.

greenhill 06.11.2009 15:37

ага, спасибо. Использовала _xscale, _yscale

AzagThoth 06.11.2009 18:21

Tween () Конструктор

public function Tween(obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean = false)

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9


Создает экземпляр класса Tween. Используйте конструктор функции с оператором new: var myTween:Tween = new Tween().

Параметры obj:Object — Объект, являющийся целями Tween.

prop:String — Имя свойства (значение параметра obj) на которое будет направлено воздействие.

func:Function — Имя используемой функции замедления.

begin:Number — Начальное значение параметра prop.

finish:Number — Число, указывающее конечное значение параметра prop (целевого объекта, подвергаемого анимации движения).

duration:Number — Продолжительность движения. Если значение отрицательное или пропущено, устанавливается значение infinity.

useSeconds:Boolean (default = false) — Флаг, определяющий использование секунд вместо кадров. Функция использует секунды, если значение флага — true, или кадры относительно значения, определенного в параметре duration, если значение флага — false.

Добавлено через 36 минут
Моя раздача с русским справочником на torrents http://torrents.ru/forum/viewtopic.php?t=2358715 Там правда AS3, но в целом многое небходимое в AS2 описано на русском :)

greenhill 09.11.2009 11:34

спасибо за полезную информацию!!

vladislove 15.12.2009 23:38

а подскажите плз как остановить Твин находящийся в режиме уоуо в зависимости от какого нибудь условия (например от координаты Х мувика)

mooncar 16.12.2009 01:33

myTween.stop() не пробовали?

vladislove 16.12.2009 03:49

да все перепробовал,
вопрос в том как и где ей условие подсунуть (например что при myclip_mc < 500 Твин
останавливается (напомню он находится в уоуо)
пробовал трэйсить координату Х в цикле с условием,но вываливается только первое значение - такое ощущение что в момент выполнения Твина доступ к координатам Твинируемого обьекта осуществляется как то подругому

mooncar 16.12.2009 11:09

Сдается мне, что вам нужно использовать свойство Tween.position.
А проверку выполнять внутри обработчика
Код AS1/AS2:

tweenInstance.onMotionChanged = function() {
  if (tweenInstance.position < a) {
    //..действия
  }
};

Будет ли происходить событие onMotionChanged, когда работает yoyo, выясните, я не знаю.


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

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