![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: 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. |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Котейка, Ваш код творит чудеса!
var myStar1:MyStar;//MyStar - название класса символа myStar1=new MyStar(); myStar1.x=50; myStar1.y=50; addChild(myStar1); var simbol1:Simbol1;//Simbol1 - название класса символа simbol1=new Simbol1(); simbol1.x=50; simbol1.y=50; addChild(simbol1); import com.greensock.*; import com.greensock.easing.*; /*for(var c:int=1;i<=19;i++){ ani(myStar1, [{x:x1,y:y1},{x:x2,y:y2}], 1) }*/ //конец предыдущего положения и начало следущего положения - одни и те же y, x var coordinates:Dictionary = new Dictionary(); 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); } } ani(myStar1, [{scaleX:1,scaleY:1,rotation:0,x:50,y:50},{ease:Elastic.easeIn,rotation:0,scaleX:1,scaleY:1,x:30,y:60}], 1); // первое положение ani(myStar1, [{x:30,y:60},{rotation:0,x:110,y:175}],2); //второе положение ani(myStar1, [{x:110,y:175},{x:140,y:135}],100); // третье положение ani(simbol1, [{ease:Elastic.easeIn,x:50,y:1},{ease:Elastic.easeIn,x:120,y:70}], 1); // первое положение ani(simbol1, [{ease:Elastic.easeIn,x:120,y:70},{ease:Elastic.easeIn,x:160,y:135}],2); //второе положение ani(simbol1,[{ease:Elastic.easeIn,x:160,y:135},{ease:Elastic.easeIn,x:240,y:235}],1); // третье положение |
|
|||||
|
Регистрация: 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 |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|