![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2009
Сообщений: 10
|
Добрый день, уважаемые флешеры!!! Поискала в поиске, но подобного не нашла и прошу у Вас помощи!!! Сама я дизайнер, в программировании понимаю кое чего, но написать такой скрипт не под силу
![]() Вот задумала я такую анимашку: по экрану с растениями летает божья коровка, точнее иногда летает, а иногда ползает по растениям. Конечно, когда она летает, у нее крылышки открыты, а когда ползает закрыты. Вот летает она летает, ни о чем не думает, т.е. произвольно. Также у нас есть кнопка (например для перехода на какой либо раздел), и когда курсор мыши находиться над этой кнопкой, то божья коровка подлетает к кнопке и кружит вокруг нее и только когда нажмем на кнопку божья коровка садиться на нее. Как только перейдем в нужный раздел, то божья коровка улетает и опять произвольно кружит до следующего наведения и/или нажатия кнопки. Кнопок будет не мало, а каждом разделе по разному, но коровка будет везде конечно Вот не знаю как это сделать, может все программно прописать ... но не представляю как это сделать... Если делать анимашку произвольного полета, то когда курсор будет над кнопкой, как остановить эту анимацию и тут все равно нужно делать полет до кнопки программно и опять ![]() Сделала маленький исходник для примера: ссылка Помогите плз кто чем может ![]() |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 6
|
Можно написать программно, например пусть божья коровка подлетает к координатам кнопки. Грубо говоря, пусть b1_btn - имя кнопки.
Необходимо вычислить расстояние до кнопки и направление движения. Как вычислить направление и расстояние могу написать, но позже. Допустим вычислили расстояние(rast) и направление(tx,ty) и напрявлем туду БК ICQ: 376657599
__________________
Мир дизайна |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 10
|
Цитата:
![]() да и можно ли этот программный полет сделать по небольшой дуге, т.е. чтоб она летела не прямо, а немного изогнуто???? ![]() |
|
|||||
|
Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
|
полет по прямой будет так:
//координаты кнопки 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)); } } Последний раз редактировалось iNils; 14.10.2009 в 16:23. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
dirrect, для оформления своего кода надо использовать теги [code][/code]
|
|
|||||
|
Регистрация: Oct 2009
Сообщений: 10
|
Если честно не понятно
![]() А можно это в код дописать?????? |
|
|||||
|
Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
|
Вот готовый код:
// координаты кнопки 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)); } }; ![]() |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 10
|
Спасибо огромное!!!!! Завтра буду пробывать
![]() Добавлено через 15 часов 12 минут Все работает!!!! Летит по дуге спасибо спасибо!!!!!!!с этим разобрались, но тут еще вопросы появились... у меня же эта божья коровка сначала летает (я сделала зацикленный мувик полета по траектории, где она когда ползает по растению, у нее крылышки закрыты, а когда летает открыты) - дак вот при наведении на кнопку она должна полететь к ней... я попробывала тупо остановить мувик и выполнить полет программно, но не так все просто думаю понятно что происходит.... этот весь мувик с траекторией летит, и конечно не так как нужно...я думаю нужно при наведении на кнопку мувик анимации нужно остановить программно, запомнить в каком кадре остановили, просчитать его координаты и поворот самой божьей коровки, и наверно сделать его прозрачной через альфаканал, а после этого загрузить с библиотеки божью коровку с открытыми крыльями, поместить ее на место нужных координат и при нужном угле и произвести полет программно. Потом при отвединии или нажатии на кнопку, вернуть божью коровку на те же координаты под нужным углом, сделать ее опять со 100% альфаканалом и продолжить проигрывание анимации... возможно есть и другие способы.... не знаю ![]() помогите плз с кодом ![]() |
|
|||||
|
Регистрация: Oct 2009
Адрес: Комсомольск-на-Амуре
Сообщений: 4
|
Вот держи финальную версию:
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(); } |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 10
|
dirrect СПАСИБО ОГРОМНОЕ!!!!!!
![]() ![]() ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|