![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Уважаемый, Котейка, применяю функцию ani() для другого символа (даже другого класса), а перемещается всё тот же символ.В чём проблема?
|
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
Ну так глобальный массив один поэтому так и выходит) Сейчас погодите маленько переделаю, чтоб более универсально было.
|
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Цитата:
|
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
Вот теперь можно будет запускать одновременно несколько разных объектов.
var coordinates:Dictionary = new Dictionary(); ani(myStar1, [{x:20,y:100},{x:40,y:200}, {x:160, y:320}], 1); ani(myStar1, [{x:200,y:100},{x:400,y:200}, {x:16, y:320}], 1); ani(myStar2, [{x:120,y:100},{x:25,y:200}, {x:16, y:320}], 1); ani(myStar2, [{x:20,y:10},{x:40,y:20}, {x:160, y:32}], 1); function ani(object:DisplayObject, coords:Array, speedt:int = 1):void { if (coords) { if (!coordinates[object]) { coordinates[object] = coords; } else { coordinates[object] = coordinates[object].concat(coords); return; } } if (coordinates[object]) { var nextCoords:Object = coordinates[object].shift(); nextCoords.onComplete = ani; nextCoords.onCompleteParams = [object, null, speedt]; if (!coordinates[object].length) delete coordinates[object]; TweenLite.to(object, speedt, nextCoords); } } Разумеется только свои onComplete и onCompleteParams передать не получится их юзает ani() в своих нуждах. Последний раз редактировалось Котейка; 13.08.2013 в 03:15. |
|
|||||
|
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Если с помощью библиотеки FPTween.swc, то можно так:
import ru.flashpress.tween.display.FPTweenSprite; import ru.flashpress.tween.timeline.turn.FPTimelineTurn; import fl.transitions.easing.Strong; var clip:FPTweenSprite = new FPTweenSprite(); clip.graphics.beginFill(0xff0000, 1); clip.graphics.drawRect(0, 0, 100, 100); clip.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(clip); clip.x = 10; clip.y = 50; // var timelineTurn:FPTimelineTurn = new FPTimelineTurn(clip, 'positionTo'); timelineTurn.addTween(new Point(20, 100), Strong.easeOut, 1); timelineTurn.addTween(new Point(40, 200), Strong.easeOut, 1); function clickHandler(event:MouseEvent):void { timelineTurn.start(); }
__________________
FlashPress.ru | Blog |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Цитата:
Вышло куча ошибок.Что я сделал неправильно? Добавлено через 10 минут Цитата:
Но вот проблема: 2 объекта двигаются одновременно, а мне нужно, чтобы сначала объект myStar1 перемещался, затем после окончания перемещения объекта myStar1, начал перемещаться объект myStar2! Что я делаю неверно, может быть я не понимаю логику ActionScript, но я же не создавал 2 потока (worker), а написал все по очереди-значит по очереди и должны выполнятся действия, а не одновременно?В чем проблема как двигать объекты по очереди?Если можно, приведите пример. |
|
|||||
|
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Цитата:
![]() И покажите какие ошибки выдает.
__________________
FlashPress.ru | Blog |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Всё теперь ошибок нет!.Я изменил код.
import ru.flashpress.tween.display.FPTweenSprite; import ru.flashpress.tween.timeline.turn.FPTimelineTurn; import fl.transitions.easing.Strong; var Simbol1:FPTweenSprite = new FPTweenSprite(); Simbol1.graphics.beginFill(0xaa2345, 1); Simbol1.graphics.drawRect(0, 0, 100, 100); Simbol1.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(Simbol1); Simbol1.x = 10; Simbol1.y = 50; var timelineTurn:FPTimelineTurn = new FPTimelineTurn(Simbol1, 'positionTo'); //timelineTurn.start(); timelineTurn.addTween(new Point(20, 100), Strong.easeOut, 1); timelineTurn.addTween(new Point(60, 50), Strong.easeOut, 1); timelineTurn.addTween(new Point(70, 200), Strong.easeOut, 1); timelineTurn.addTween(new Point(88, 10), Strong.easeOut, 1); function clickHandler(event:MouseEvent):void { timelineTurn.start(); } А потом заставить двигаться simbol2 этого же класса (Simbol1) по координатам (40, 50)-->(240, 250)-->(90, 60)-->(110, 60)? |
|
|||||
|
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Что бы двигался ваш символ, необходимо в свойствах этого символа указать базовый класс (BaseClass) ru.flashpress.tween.display.FPTweenSprite, ну и код будет выглядеть так:
import ru.flashpress.tween.display.FPTweenSprite; import ru.flashpress.tween.timeline.turn.FPTimelineTurn; import fl.transitions.easing.Strong; Simbol1.addEventListener(MouseEvent.CLICK, clickHandler); var timelineTurn:FPTimelineTurn = new FPTimelineTurn(Simbol1, 'positionTo'); //timelineTurn.start(); timelineTurn.addTween(new Point(20, 100), Strong.easeOut, 1); timelineTurn.addTween(new Point(60, 50), Strong.easeOut, 1); timelineTurn.addTween(new Point(70, 200), Strong.easeOut, 1); timelineTurn.addTween(new Point(88, 10), Strong.easeOut, 1); function clickHandler(event:MouseEvent):void { timelineTurn.start(); } Добавлено через 2 минуты Что бы по окончании проигрывания одного символа, начиналось проигрывание другого символа - сейчас надо слушать событие об окончании проигрывания первого, и после стартовать второй. В данный момент дописываю библиотеку FPTween так, что бы можно было совмещать проигрывание анимаций нескольких объектов
__________________
FlashPress.ru | Blog |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Сделал как вы сказали: вставил ru.flashpress.tween.display.FPTweenSprite в базовый класс.
Выполнил этот код: import ru.flashpress.tween.display.FPTweenSprite; import ru.flashpress.tween.timeline.turn.FPTimelineTurn; import fl.transitions.easing.Strong; var simbol1:Simbol1;//Simbol1 - название класса символа simbol1=new Simbol1(); simbol1.x=20; simbol1.y=30; addChild(simbol1); Simbol1.addEventListener(MouseEvent.CLICK, clickHandler); var timelineTurn:FPTimelineTurn = new FPTimelineTurn(Simbol1, 'positionTo'); //timelineTurn.start(); timelineTurn.addTween(new Point(20, 100), Strong.easeOut, 1); timelineTurn.addTween(new Point(60, 50), Strong.easeOut, 1); timelineTurn.addTween(new Point(70, 200), Strong.easeOut, 1); timelineTurn.addTween(new Point(88, 10), Strong.easeOut, 1); function clickHandler(event:MouseEvent):void { timelineTurn.start(); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|