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

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

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

Регистрация: Feb 2009
Сообщений: 180
По умолчанию Программное движение по элипсу, проблемы

Появилась задача реализовать подобное программно. Муви клип постоянно движется по определенной элиптической траектории. С помощью рисованной траектории и таймлайновой анимации реализовывать подобное не хочется.
Была попытка сделать это с помощью цикла и четырех движений классом TweenLite. Ничего вразумительного из этого не вышло.
Буду очень благодарен, если кто-то поделится своими предложениями и знаниями)


Последний раз редактировалось Acrossfy; 12.03.2009 в 23:19.
Старый 10.03.2009, 19:46
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
http://demiart.ru/forum/index.php?showtopic=78132
можно тут глянуть, пример Монстра весьма подробно изложен.

Старый 10.03.2009, 20:01
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 3  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Огромное спасибо, ссылка очень помогла. А то я тут велосипед изобретал)

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

Регистрация: Feb 2009
Сообщений: 180
На основе примера Монстра сделал нужное движение.
Код AS1/AS2:
var xdist:Number=2;
var radStep:Number=Math.PI/360;
var ydist:Number=8;
var speed:Number=1;
var angle:Number=0;
 
mc.onEnterFrame = function(){
	angle+=5;
	var rad=angle*radStep;
	mc._x=(Math.cos(rad)*xdist)/2;
	mc._y=(Math.sin(rad)*ydist)/2;
};
Столкнулся со следующей проблемой. Мувиклип движется относительно начала координат сцены. Мне нужно, поместить его на определенную точку. Допустим на (60, 60).
Решается это вот так:
Код AS1/AS2:
	mc._x=60 + (Math.cos(rad)*xdist)/2;
	mc._y=60 + (Math.sin(rad)*ydist)/2;
Однако это жутко портит всю малину, ведь с координатами "mc" работают и другие функции перемещающие объект по сцене.
И тогда, предварительно передвинув муви клип на точку (60, 60), я решаю проблему так:
Код AS1/AS2:
	mc._x=mc._x + (Math.cos(rad)*xdist)/60;
	mc._y=mc._y + (Math.sin(rad)*ydist)/60;
И вот после этого все работает, как надо, кроме самой функции. Объект в данном случае движется не по элипсу, а по элипсообразной спирали, медленно и плавно уходя за экран.
В чем может быть проблема? Как избавиться от этого побочного эффекта?
Один из нюансов. Когда вместо численных кординат, прописал "mc._x" и "mc._у", мувиклип крутился как бешенный, пока я не увеличил делитель в самой формуле. С 2 до 60.

P.S. Мувик обязательно должен быть на главной сцене. Конечно, если бы его можно было просто вложить в другой мувик, и тот уже двигать куда надо, проблем не было бы. Однако код моей флешки не позволяет делать этот клип вложенным.
Изображения
 


Последний раз редактировалось Acrossfy; 12.03.2009 в 23:18. Причина: поправил рисунок
Старый 12.03.2009, 23:23
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 5  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Вы подумайте, что вы сделали, заменив 60 на переменную, которую в этой-же строке изменяете, и поймёте, что не так.

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

Регистрация: Feb 2009
Сообщений: 180
Ну да.. Глупо было спрашивать почему при этом работает не так, как надо. Но как еще в данном случае заставить клип двигаться вокруг своего положения в сцене, не указывая координат?

Старый 13.03.2009, 00:02
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 7  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Эти цифры и есть положение клипа в сцене, т.е. центр эллипса. Вам нужно завести вместо них две новые переменные, и для движения клипа изменять их, а не mc._x,mc._y.

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

Регистрация: Feb 2009
Сообщений: 180
Ну допустим:
Код AS1/AS2:
//добавляем
var a:Number=prod._x;
var b:Number=prod._y;
 
//изменяем
prod._x=a + (Math.cos(rad)*xdist)/2;
prod._y=b + (Math.sin(rad)*ydist)/2;
Возникает побочный эффект, рассмотренный в первом случае, когда клип прибивался на координаты, и никакая другая функция его сдвинуть не могла.

Добавлено через 4 минуты
Имеется класс, в котором "mc._x" на "a" поменять никак нельзя. Координаты записываются иным способом.
Код AS1/AS2:
TweenLite.to(prod, 0.75, {_x:60, _y:60, ease:Back.easeIn, onComplete:onFinishTween});

Старый 13.03.2009, 01:31
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 9  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Вам надо всё-таки немного думать, что вы делаете и что в результате этого происходит. Если вы будете постоянно присваивать a и b значения _x и _y, какой тогда смысл в добавлении этих переменных?

Вторую проблему можно решить разными способами. Можно сделать невидимый объект, к которому вы будете применять трансформации, а потом перемещать на новое место видимый; можно сделать новый класс на основе нужного, и т.д.

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

Регистрация: Feb 2009
Сообщений: 180
Цитата:
какой тогда смысл в добавлении этих переменных?
Я был бы очень признателен, если бы вы продемонстрировали ваш пример использования переменных.

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

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

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


 


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


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