![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2000
Сообщений: 7
|
Используя исходники сделал чтобы при наведении на пункт меню к нему приезжал Movie Clip. Подскажите как сделать чтобы Movie Clip останавливался в центре пункта меню, а не "как получится"?
Код: (поскольку мне нужно было только движение по оси Х, от оси Y избавился криво я понимаю) Исходник var startMove:Boolean=false; var speedMove:Number=10; function moveMC(xEnd:Number,yEnd:Number){ var rotation:Number=Math.atan2(yEnd-mc._y,xEnd-mc._x)+Math.PI/2; mc._x+=Math.sin(rotation)*speedMove; updateAfterEvent(); if(mc._x>xEnd-2 && mc._x<xEnd+2 && mc._y>yEnd-2 && mc._y<yEnd+2){ clearInterval(timer); } } _root.f.onRollOver = function(){ clearInterval(timer); timer=setInterval(moveMC,10,_xmouse,_ymouse); } |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Вы бы еще написали, в каком флэше вы исходник даете.
Добавлено через 2 минуты Неужели сложно понять, что происходит в коде, и почему объект приезжает в положение мышки? Вот ваш код: var startMove:Boolean = false; var speedMove:Number = 10; function moveMC(xEnd:Number, yEnd:Number) { var rotation:Number = Math.atan2(yEnd-mc._y, xEnd-mc._x)+Math.PI/2; mc._x += Math.sin(rotation)*speedMove; updateAfterEvent(); if (mc._x>xEnd-2 && mc._x<xEnd+2 && mc._y>yEnd-2 && mc._y<yEnd+2) { clearInterval(timer); } } _root.f.onRollOver = function() { clearInterval(timer); timer = setInterval(moveMC, 10, _root.f._x, _root.f._y); }; _root.s.onRollOver = function() { clearInterval(timer); timer = setInterval(moveMC, 10, _root.s._x, _root.s._y); }; _root.m.onRollOver = function() { clearInterval(timer); timer = setInterval(moveMC, 10, _root.m._x, _root.m._y); };
__________________
hauts.ru |
|
|||||
|
Регистрация: Jan 2000
Сообщений: 7
|
Сорри конечно, я дизайнер, мне правда сложно понять, что и почему происходит, огромное спасибо!
|
|
|||||
|
Вот ещё вариант, работает точно так же, но код меньше
|
|
|||||
|
Регистрация: Jan 2000
Сообщений: 7
|
Спасибо большое, проверил – работает. Но заметил, что движение муви клипа стало немного дрожать.
|
|
|||||
|
Да, есть такая проблема, это потому что FPS 12
Я забыл добавить в конце функции updateAfterEvent() Последний раз редактировалось samana; 12.02.2010 в 18:30. |
|
|||||
|
Регистрация: Jan 2000
Сообщений: 7
|
Поставил 24 всеравно рябит, мне проще старый, немного не правильный код использовать, времени уже совсем нету. Спасибо еще раз вам, что откликнулись.
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
import mx.utils.Delegate; var intervalID:Number; s.onRollOver = mc_onRollOverHandler; f.onRollOver = mc_onRollOverHandler; m.onRollOver = mc_onRollOverHandler; function mc_onRollOverHandler():Void { if (intervalID) { clearInterval(intervalID); intervalID = null; } intervalID = setInterval(Delegate.create(this, mc_intervalHandler), 10); trace("asdf") } function mc_intervalHandler():Void { mc._x += (this._x - mc._x) * 0.3; if (Math.abs(mc._x - this._x) < .2) { mc._x = this._x; clearInterval(intervalID); intervalID = null; } updateAfterEvent(); } |
|
|||||
|
Регистрация: Jan 2000
Сообщений: 7
|
udaaff: Огромнейшее спасибо! В моем варианте если курсор попадал на мувик его колбасило, тут все супер! С меня пиво, водка, виски с колой, что угодно! =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|