![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Я вот не понимаю, чем вам так нравится tweenlite/max. Код ужасен. Лицензия очень ограничивает.
Тем более actuate кросс-платформенный. |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
Цитата:
ani(myStar1, [{x:20,y:100},{x:40,y:200}], 1); function ani(object:DisplayObject, coords:Array, speedt:int = 1):void { if (coords.length) { var nextCoords:Object = coords.shift(); TweenLite.to(object, speedt, { x:nextCoords.x, y:nextCoords.y, onComplete:ani, onCompleteParams:[object, coords, speedt] } ); } } |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Я скачал файл greensock-v12-as3.zip вот отсюда http://www.greensock.com/tweenlite/.
Создал Проект Flash.Создал в папке проэкта ActionScript 3.0 файл. Переместил папку com из архива greensock-v12-as3.zip в папку с проектом и удалил папки других Tween'ов. Нарисовал фигуру, преобразовал ее в символ myStar ,создав класс MyStar. Почитал http://www.greensock.com/tweenlite/ Вот что получилось: var myStar1:MyStar;//MyStar - название класса символа myStar1=new MyStar(); myStar1.x=20; myStar1.y=30; addChild(myStar1); import com.greensock.*; TweenLite.from(myStar1, 3, {x:20, y:30}); TweenLite.to(myStar1, 3, {x:100, y:100}); TweenLite.from(myStar1, 3, {x:100, y:100}); TweenLite.to(myStar1, 3, {x:100, y:200}); только из (100, 100) в (100, 200). Как используя TweenLite сделать это: Цитата:
Уважаемый, Котейка, уточню задачу: Как, используя TweenLite, переместить картинку сначала из (10, 20) в (20, 40), затем из (20, 40) в (40, 80), затем из (40, 80) в (80, 160), затем из (80, 160) в (160 320), и так далее (сколько угодно перемещений, можете сами продолжить ряд если хотите ).Заранее спасибо! |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
UserSuperPupsik, ну я ж вам привел код который именно это и делает
повторюсь, добавив ваш код добавления на сцену var myStar1:MyStar;//MyStar - название класса символа myStar1=new MyStar(); myStar1.x=20; myStar1.y=30; addChild(myStar1); /* Запуск перемещения */ ani(myStar1, [{x:20,y:100},{x:40,y:200}, {x:160, y:320}], 1); function ani(object:DisplayObject, coords:Array, speedt:int = 1):void { if (coords.length) { var nextCoords:Object = coords.shift(); TweenLite.to(object, speedt, { x:nextCoords.x, y:nextCoords.y, onComplete:ani, onCompleteParams:[object, coords, speedt] } ); } } |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Спасибо ,Вам, Котейка!
Я сам бы не догадался что вместо {x:20,y:100},{x:40,y:200}, можно добавить много {x:20,y:100},{x:40,y:200},{x:35,y:100},{x:40,y:150}. Код хороший! Ну а если я захочу перемещать картинку в цикле с изменением координат x=x+45 y=y+15, то я не смогу использовать эту функцию? |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
UserSuperPupsik, не совсем понял. Покажите на примере.
Если вы имеете ввиду массив координат в цикле задавать. То сможете, почему нет, ну например |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Ну хорошо,Котейка, здесь есть 2 проблемы:
1) А если я хочу подождать 4 секунды, а затем снова вызвать ani(myStar1, [{x:20,y:100},{x:40,y:200}, {x:160, y:320}], 1); Затем подождать 5 сек, и затем вызвать ani(myStar1, [{x:160,y:320},{x:40,y:200}, {x:160, y:320}], 1); 2) Я бы хотел что-то типа Всё, что мне нужно, так это в любом моменте выполнения кода переместить картинку!!!Уже потратил много дней на решение этой проблемы!!! |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
Я вроде понял что вы хотите сделать. Чтобы при добавлении новых координат старые не сбивались, а новые добавлялись в конец списка, так? Для этого просто надо сделать массив координат глобальным. Ну а функцию ani модифицируем чуть чуть
![]() var coordinates:Array = new Array(); var myStar1:MyStar;//MyStar - название класса символа myStar1=new MyStar(); myStar1.x=20; myStar1.y=30; addChild(myStar1); /* Запуск перемещения */ ani(myStar1, [{x:20,y:100},{x:40,y:200}, {x:160, y:320}], 1); /*Добавляем новые в любой момент*/ ani(myStar1, [{x:90,y:100},{x:10,y:200}, {x:140, y:360}], 1); function ani(object:DisplayObject, coords:Array, speedt:int = 1):void { if (coords) { coordinates = coordinates.concat(coords); if (coordinates.length > coords.length) return; } if (coordinates.length) { var nextCoords:Object = coordinates.shift(); TweenLite.to(object, speedt, { x:nextCoords.x, y:nextCoords.y, onComplete:ani, onCompleteParams:[object, null, speedt] } ); } } |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 89
|
Котейка, Вы поняли, что я хотел!
Вот что получилось: var myStar1:MyStar;//MyStar - название класса символа myStar1=new MyStar(); myStar1.x=50; myStar1.y=50; addChild(myStar1); import com.greensock.*; var coordinates:Array = new Array(); ani(myStar1, [{x:50,y:50},{x:120,y:70}], 1); // первое положение ani(myStar1, [{x:120,y:70},{x:160,y:135}],2); //второе положение ani(myStar1, [{x:160,y:135},{x:240,y:235}],100); // третье положение //конец предыдущего положения и начало следущего положения - одни и те же y, x function ani(object:DisplayObject, coords:Array, speedt:int = 1):void { if (coords) { coordinates = coordinates.concat(coords); if (coordinates.length > coords.length) return; } if (coordinates.length) { var nextCoords:Object = coordinates.shift(); TweenLite.to(object, speedt, { x:nextCoords.x, y:nextCoords.y, onComplete:ani, onCompleteParams:[object, null, speedt] } ); } } Было бы неплохо, если Вы, Котейка, добавили к функции ani() все параметры, в том числе и duration, ease, scale, rotation, tint, alpha(Кстати,что такое alpha), как на примере ниже. TweenLite.to(myStar1, 1, {x:65, y:117, scaleX:1, scaleY:1, rotation:0, alpha:1, tint:null, ease:Elastic.easeInOut}); Было бы совсем хорошо... ![]() |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 56
|
Ну это уж вы сами параметры нужные добавьте, там дело то нехитрое
alpha это непрозрачность от 0 до 1 |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:43. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|