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

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

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

Регистрация: Oct 2009
Сообщений: 10
Question Полет программно

Добрый день, уважаемые флешеры!!! Поискала в поиске, но подобного не нашла и прошу у Вас помощи!!! Сама я дизайнер, в программировании понимаю кое чего, но написать такой скрипт не под силу

Вот задумала я такую анимашку: по экрану с растениями летает божья коровка, точнее иногда летает, а иногда ползает по растениям. Конечно, когда она летает, у нее крылышки открыты, а когда ползает закрыты. Вот летает она летает, ни о чем не думает, т.е. произвольно.
Также у нас есть кнопка (например для перехода на какой либо раздел), и когда курсор мыши находиться над этой кнопкой, то божья коровка подлетает к кнопке и кружит вокруг нее и только когда нажмем на кнопку божья коровка садиться на нее. Как только перейдем в нужный раздел, то божья коровка улетает и опять произвольно кружит до следующего наведения и/или нажатия кнопки. Кнопок будет не мало, а каждом разделе по разному, но коровка будет везде конечно

Вот не знаю как это сделать, может все программно прописать ... но не представляю как это сделать... Если делать анимашку произвольного полета, то когда курсор будет над кнопкой, как остановить эту анимацию и тут все равно нужно делать полет до кнопки программно и опять

Сделала маленький исходник для примера: ссылка

Помогите плз кто чем может

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

Регистрация: Oct 2009
Сообщений: 6
Можно написать программно, например пусть божья коровка подлетает к координатам кнопки. Грубо говоря, пусть b1_btn - имя кнопки.

Необходимо вычислить расстояние до кнопки и направление движения. Как вычислить направление и расстояние могу написать, но позже.

Допустим вычислили расстояние(rast) и направление(tx,ty) и напрявлем туду БК

Код AS1/AS2:
var mx:Number = b1_btn._x;
var my:Number = b1_btn._y;
 
_root.onEnterFrame = function()
{
  if(rast>=2)
 {
    bojya_korovka._mx+=tx;
    bojya_korovka._y+=ty;
 }
}
ICQ: 376657599
__________________
Мир дизайна

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

Регистрация: Oct 2009
Сообщений: 10
Цитата:
Сообщение от frops Посмотреть сообщение
Необходимо вычислить расстояние до кнопки и направление движения. Как вычислить направление и расстояние могу написать, но позже.
- напиши пожалуйста

да и можно ли этот программный полет сделать по небольшой дуге, т.е. чтоб она летела не прямо, а немного изогнуто????

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

Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
полет по прямой будет так:

Код AS1/AS2:
//координаты кнопки
var mx:Number = b1_btn._x;
var my:Number = b1_btn._y;
 
var spd:Number = 1;//скорость движения
 
//процедура
_root.onEnterFrame = function() {
delta_x = bojya_korovka._x-mx;
delta_y = bojya_korovka._y-my;
targetRotation = -Math.atan2(delta_x, delta_y)/(Math.PI/180);
rast = Math.sqrt((delta_x*delta_x)+(delta_y*delta_y));
  if(rast>=2) {
    bojya_korovka._x+=spd*Math.sin((targetRotation)*(Math.PI/180));
    bojya_korovka._y+=spd*Math.cos((targetRotation)*(Math.PI/180));
 }
}
а если вписать в процедуру bojya_korovka.rotation = targetRotation; то коровка будет поворачиваться в сторону курсора. Для полета по наклонной нуобходимо в начале движения задать отличный от рассчитанного угол в переменной targetRotation, а затем по ходу вдижения динамически приближать значение к первоначально рассчитанному. Если непонятно, то спрашивай еще...


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

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

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

Регистрация: Oct 2009
Сообщений: 10
Если честно не понятно

А можно это в код дописать??????

Старый 14.10.2009, 16:57
dirrect вне форума Посмотреть профиль Отправить личное сообщение для dirrect Найти все сообщения от dirrect
  № 7  
Ответить с цитированием
dirrect

Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
Вот готовый код:
Код AS1/AS2:
// координаты кнопки
var mX:Number = b1_btn._x;
var mY:Number = b1_btn._y;
var sA:Number = -45;//угол отклонения
// скорость движения
var spd:Number = 5;
// процедура
_root.onEnterFrame = function() {
	delta_x = bojya_korovka._x-mX;
	delta_y = bojya_korovka._y-mY;
	targetRotation = -Math.atan2(delta_x, delta_y)/(Math.PI/180)+sA;
	rast = Math.sqrt((delta_x*delta_x)+(delta_y*delta_y));
	bojya_korovka._rotation = targetRotation;
	if (rast>=spd) {
		bojya_korovka._x += spd*Math.sin((targetRotation)*(Math.PI/180));
		bojya_korovka._y -= spd*Math.cos((targetRotation)*(Math.PI/180));
	}
};
различные вариации переменных sA и spd дадут нужный результат, проеверено, работает...

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

Регистрация: Oct 2009
Сообщений: 10
Спасибо огромное!!!!! Завтра буду пробывать

Добавлено через 15 часов 12 минут
Все работает!!!! Летит по дуге спасибо спасибо!!!!!!!

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

я думаю нужно при наведении на кнопку мувик анимации нужно остановить программно, запомнить в каком кадре остановили, просчитать его координаты и поворот самой божьей коровки, и наверно сделать его прозрачной через альфаканал, а после этого загрузить с библиотеки божью коровку с открытыми крыльями, поместить ее на место нужных координат и при нужном угле и произвести полет программно. Потом при отвединии или нажатии на кнопку, вернуть божью коровку на те же координаты под нужным углом, сделать ее опять со 100% альфаканалом и продолжить проигрывание анимации...

возможно есть и другие способы.... не знаю

помогите плз с кодом

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

Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
Вот держи финальную версию:
Код AS1/AS2:
var goHome:Boolean = true;
_root.Rastenie.cel._visible = false;
// координаты кнопки
var homeX:Number = Rastenie._x;
var homeY:Number = Rastenie._y;
var mX:Number = homeX;
var mY:Number = homeY;
var sA:Number = -20;//угол отклонения
// скорость движения
var spd:Number = 4;
// скорость поворота
var spdR:Number = 2;
// процедура
getCelXY = function(){
	var myPoint = {x:0, y:0};
	_root.Rastenie.cel.localToGlobal(myPoint);
	mX=myPoint.x;
	mY=myPoint.y;
	//trace("myPoint_x - "+myPoint.x);
}
_root.onEnterFrame = function() {
	if (goHome){
		getCelXY();
	}
	delta_x = Math.floor(ladybird._x-mX);
	delta_y = Math.floor(ladybird._y-mY);
	targetRotation = -Math.atan2(delta_x, delta_y)/(Math.PI/180)+sA;
	rast = Math.sqrt((delta_x*delta_x)+(delta_y*delta_y));
	if (rast>=spd+20) {
		ladybird.gotoAndStop(2);
	} else {
		ladybird._rotation=targetRotation;
		ladybird.gotoAndStop(1);
 
	}
	if (rast>=spd+10) {//20 - это радиус круга попадая в который коровка перестает лететь
		if (Math.abs(Math.abs(Math.floor(ladybird._rotation))-Math.abs(targetRotation))<5) {
			ladybird._rotation=targetRotation;
		} else {
			ladybird._rotation += spdR;
		}
		ladybird._x += spd*Math.sin((ladybird._rotation)*(Math.PI/180));
		ladybird._y -= spd*Math.cos((ladybird._rotation)*(Math.PI/180));
	}
};
mouseOnButton = function(){
	goHome = false;
	mX = Math.floor(_xmouse);
	mY = Math.floor(_ymouse);
}
mouseOutButton = function(){
	goHome = true;
}
//кнопки
btn_1.onPress = function() {
};
btn_1.onRollOver = function(){
	mouseOnButton();
}
btn_1.onRollOut = function(){
	mouseOutButton();
}
//
btn_2.onPress = function() {
};
btn_2.onRollOver = function(){
	mouseOnButton();
}
btn_2.onRollOut = function(){
	mouseOutButton();
}
//
btn_3.onPress = function() {
};
btn_3.onRollOver = function(){
	mouseOnButton();
}
btn_3.onRollOut = function(){
	mouseOutButton();
}
в исходнике все понятно.
Вложения
Тип файла: rar fly_of_ladybird.rar (21.3 Кб, 69 просмотров)

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

Регистрация: Oct 2009
Сообщений: 10
dirrect СПАСИБО ОГРОМНОЕ!!!!!!

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

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

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


 


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


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