Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.12.2010, 15:19
MetSerp вне форума Посмотреть профиль Отправить личное сообщение для MetSerp Найти все сообщения от MetSerp
  № 1  
Ответить с цитированием
MetSerp
 
Аватар для MetSerp

Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
По умолчанию Программно анимировать движение объекта по заданной кривой.

есть некий объект и есть массив координат х и у через которые по порядку должен пройти объект с заданной скоростью.
Массив координат хранится в атрибутах XML
Код:
<root>
  <pathGrid>
    <pointGrid id="0" x="567" y="157"/>
    <pointGrid id="1" x="542" y="164"/>
    <pointGrid id="2" x="511" y="188"/>
    <pointGrid id="3" x="493" y="208"/>
    <pointGrid id="4" x="480" y="212"/>
    <pointGrid id="5" x="467" y="222"/>
    <pointGrid id="6" x="441" y="228"/>
    <pointGrid id="7" x="404" y="259"/>
    <pointGrid id="8" x="347" y="288"/>
    <pointGrid id="9" x="278" y="296"/>
    <pointGrid id="10" x="221" y="313"/>
    <pointGrid id="11" x="189" y="298"/>
    <pointGrid id="12" x="146" y="303"/>
    <pointGrid id="13" x="111" y="322"/>
    <pointGrid id="14" x="49" y="367.95"/>
    <pointGrid id="15" x="21" y="371"/>
  </pathGrid>
  <boards/>
  <image path="/shema.jpeg"/>
</root>
если бы точки всегда были бы одни и те же я бы анимировал не программно, через motion guide , возможно как то можно его сделать программно?
Поискав я нашел класс Bezier, но в нем объект все равно идет по траектории с единственным якорем.
Документацию и примеры которые есть - перекопал, но так и не нашел что надо.
Уже сам подзапутался как можно это реализовать .

Старый 28.12.2010, 15:28
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 2  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
http://www.flasher.ru/forum/showthre...=146483&page=1

Старый 28.12.2010, 15:28
Vilya21 вне форума Посмотреть профиль Отправить личное сообщение для Vilya21 Найти все сообщения от Vilya21
  № 3  
Ответить с цитированием
Vilya21

Регистрация: Aug 2009
Сообщений: 75
делаете слушатель события Event.ENTER_FRAME, в событии присваеваете координатам x и y координаты из XML. Когда картинка пройдёт весь пусть - убираете слушатель.

Старый 28.12.2010, 16:23
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 4  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Если потребуется более продвинутая анимация.
рекомендую посмотреть на Tweener

Старый 28.12.2010, 16:35
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 5  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Цитата:
Сообщение от Vilya21 Посмотреть сообщение
делаете слушатель события Event.ENTER_FRAME, в событии присваеваете координатам x и y координаты из XML. Когда картинка пройдёт весь пусть - убираете слушатель.
Тогда она будет просто перескакивать с точки на точку. Твинер использовать от одной точки до другой - будет идти по сегментам. Здесь явно нужна интерполяция.

А Besier вы посмотрите получше, там даже пример вроде был с движением по пути, и количество точек не играет значения.

Старый 28.12.2010, 17:11
MetSerp вне форума Посмотреть профиль Отправить личное сообщение для MetSerp Найти все сообщения от MetSerp
  № 6  
Ответить с цитированием
MetSerp
 
Аватар для MetSerp

Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
FlashWizard, спасибо за линку, поковыряю зеленый носок.
Код AS3:
делаете слушатель события Event.ENTER_FRAME,
тогда я буду зависеть от показателя кадров в секунду, ну и плюс действительно прыжковая анимация не подойдет, объект должен "ехать".
terbooter спасибо, тоже посмотрю, нельзя ли чуть скоординировать и примерно подсказать метод?
Цитата:
А Besier вы посмотрите получше, там даже пример вроде был с движением по пути, и количество точек не играет значения.
если вы про шестой пример, то я как раз его и смотрел и если я правильно понял то им можно воспользоваться только если рисовать много кривых по заданным точкам типа от предыдущего к последующему и уже по нему гнать объект, но тогда получается к координатам х и у надо добавлять еще координату якоря, как ее высчитывать я к сожалению не представляю .

Или я все же неверно понял пример?

Старый 28.12.2010, 17:15
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Всё это слишком сложно и не нужно.
Возьмите TweenMax, там есть движение по кривой.

Код AS3:
import com.greensock.*; 
import com.greensock.easing.*;
 
TweenMax.to(mc, 3, {bezier:[{x:72, y:344}, {x:282, y:189}, {x:300, y:345}], orientToBezier:true, ease:Bounce.easeOut});
__________________
мой пустой блог

Старый 28.12.2010, 18:52
MetSerp вне форума Посмотреть профиль Отправить личное сообщение для MetSerp Найти все сообщения от MetSerp
  № 8  
Ответить с цитированием
MetSerp
 
Аватар для MetSerp

Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
iflamberg, спасибо, вроде бы то что нужно, но столкнулся с проблемой.
Объект летает совершенно вопреки заданным точкам и задом наперед О_о
Если в прикрепленной флэшке вы нажмете "проложить маршрут" затем двойными щелчками обозначите точки на прямоугольнике в красной рамке, а затем нажмете тестировать, то машина изобразит странный кульбит вдалеке от заданных точек.
Как я понимаю это из за того что ее гонят по глобальным координатам хотя запланировано по локальным.
но метод to через который я создаю движение является статичным и я не знаю как ему сказать что координаты не глобальные, а принадлежат определенному объекту
непосредственно код выполняющийся при нажатии кнопки "тестировать"
Код AS3:
		function test (e:MouseEvent) {
			var pointsArray = new Array();
			var car:Track = new Car();
			car.x = outPutXML.pathGrid.pointGrid[0]. @ x;
			car.y = outPutXML.pathGrid.pointGrid[0]. @ y;
			pathGridPano.graphics.clear ();
			pathGridPano.graphics.lineStyle (3,0xff0000,1);
			pathGridPano.graphics.moveTo (outPutXML.pathGrid.pointGrid[0].@x,outPutXML.pathGrid.pointGrid[0].@y);
 
			for (var i:int=0; i <= outPutXML.pathGrid.pointGrid.length() - 1; i++) {
				pathGridPano.graphics.lineTo (outPutXML.pathGrid.pointGrid[i].@x,outPutXML.pathGrid.pointGrid[i].@y);
				pointsArray.push ({x:outPutXML.pathGrid.pointGrid[i].@x,y:outPutXML.pathGrid.pointGrid[i].@y});
			}
 
			workPano.addChild (car);
			TweenMax.to (car,7,{bezierThrough:pointsArray,orientToBezier:true});
 
		}
непосредственно двигает объект
Код AS3:
TweenMax.to (car,7,{bezierThrough:pointsArray,orientToBezier:true});
массив pointsArray содержит правильные точки, я проверял.
Вложения
Тип файла: zip xmlGen.zip (63.0 Кб, 38 просмотров)

Старый 28.12.2010, 19:11
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 9  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Цитата:
задом наперед
значит или запихиваете в xml, или достаёте из xml в неправильном порядке. Замените push на unshift.

Цитата:
Как я понимаю это из за того что ее гонят по глобальным координатам хотя запланировано по локальным.
Её гоняют по координатам того клипа, который для неё родительский. Конвертировать координаты с помощью функций localToGlobal,globalToLocal.
__________________
мой пустой блог

Старый 28.12.2010, 19:43
MetSerp вне форума Посмотреть профиль Отправить личное сообщение для MetSerp Найти все сообщения от MetSerp
  № 10  
Ответить с цитированием
MetSerp
 
Аватар для MetSerp

Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
Цитата:
Замените push на unshift.
не так выразился, объект улетает по оси х, ровно в противоположную сторону от точки к которой должен стремиться.
По координатам, родителем является нужный элемент, значит дело не в них попробую докопаться до истины.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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