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

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

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

Регистрация: Jun 2007
Сообщений: 30
Question программная анимация

Господа подскажите, как правильней поступить. На главной временной линейке есть кнопка и рядом с ней объект. Нужно что бы при наведении на кнопку объект немного отодвинулся (по _x),
а при отводе встал на свое место. Я уже задавал вопрос про равноускоренное движение (спасибо всем кто учувствовал), эта вторая часть)). Думаю, все поняли, что кнопка делается программно. На первом кадре я написал код:

Код:
sc1._x = 69.1;
sc1._alpha = 0;
var X0 = 69.1;
var Vx = 0;
var t = 0;
var a = 0;
_root.onEnterFrame = function() {
	sc1._x = X0+Vx*t+a*t*t/2;
	t += 0.4;
	if (sc1._x<55) {
		Vx = xx;
		trace(sc1._x);
	}
};
«xx» неизвестная размерность – поэтому Action и стопорит Vx. Если за место этой строчки прописать delete onEnterFrame получается то же самое (остановка) но в дальнейшем код вообще работать отказывается.
На кнопку вешаю код:
Код:
on (rollOver) {
	sc1._alpha =100;
	X0 = 69.1;
	Vx = -3;
	t = 0;
	a = -3;
}
on (rollOut) {
	X0=53.25;
	Vx=3;
	t=1;
	a=3;	
}
В общем все работает, только при отводе (rollOut) не получается объект остановить. Пробовал на первом кадре в if прописать: if(sc1._x<55||sc1._x>69.1){..и т.д. вообще двигаться перестает .

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
Сообщение от Rasamaha
«xx» неизвестная размерность – поэтому Action и стопорит Vx.
Это жестко - сунуть лом в колесо и решить что машина остановилась. При этом мотор продолжает работать.

Выключайте мотор (delete onEnterFrame),
в нужный момент его снова включайте (onEnterFrame = motionFunction )

motionFunction - это то что предстоит вам написать.


Последний раз редактировалось Kikasso; 27.06.2007 в 08:03.
Старый 27.06.2007, 11:43
Rasamaha вне форума Посмотреть профиль Отправить личное сообщение для Rasamaha Найти все сообщения от Rasamaha
  № 3  
Ответить с цитированием
Rasamaha
 
Аватар для Rasamaha

Регистрация: Jun 2007
Сообщений: 30
Цитата:
Сообщение от Kikasso
Выключайте мотор (delete onEnterFrame),
в нужный момент его снова включайте (onEnterFrame = motionFunction )
motionFunction - это то что предстоит вам написать.
Полностью согласен, что код выходит корявый)) Но вернемся к проблеме. Т.е. вы имеете ввиду с новой строчки после вышеизложенного кода (на первом кадре) прописать:_root.onEnterFrame(){};И уже в фигурных скобках расписывать новое движение? Или прописать как у вас onEnterFrame=…и т.д. Извиняйте если туплю, учусь все таки)

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
Сообщение от Rasamaha
вы имеете ввиду с новой строчки после вышеизложенного кода (на первом кадре) прописать:
Код:
_root.onEnterFrame(){};
Только не так, это бессмыслица.
onEnterFrame - это то, что будет выполняться каждый кадр. Или
Код:
//поехали
onEnterFrame = function(){....}
//остановились
delete onEnterFrame;
//снова поехали
onEnterFrame = function(){....}
Или
Код:
function myMotion(){
// уравнение движения
}
//поехали
onEnterFrame = myMotion; // без скобок
//остановились
delete onEnterFrame; //или onEnterFrame = null;
//снова поехали
onEnterFrame = myMotion;
В принципе, это одно и то же, только в первом случае функция анонимна, и когда вы ее удаляете - она удаляется, и приходится ее повторно писать. А во втором случае функция остается, ее можно повторно использовать.
Удаление и присвоение надо поставить в нужные места в коде.

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

Регистрация: Jun 2007
Сообщений: 30
Спасиб) Сейчас буду разбираться)

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

Регистрация: Jun 2007
Сообщений: 30
А можно из под одного кадра контролировать этот процесс? К примеру через onRollOver=function(){}; т.е. не вешая код на кнопку

неполучется...


Последний раз редактировалось iNils; 27.06.2007 в 21:14.
Старый 27.06.2007, 21:14
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Rasamaha, есть кнопка , поэтому не надо создавать несколько сообщений подряд, надо исправить последнее в теме.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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