Просмотр полной версии : Движение объекта к пункту меню
Используя исходники сделал чтобы при наведении на пункт меню к нему приезжал Movie Clip. Подскажите как сделать чтобы Movie Clip останавливался в центре пункта меню, а не "как получится"?
Код: (поскольку мне нужно было только движение по оси Х, от оси Y избавился криво я понимаю)
Исходник (http://www.taosy.com/mc.fla)
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);
}
Вы бы еще написали, в каком флэше вы исходник даете.
Добавлено через 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);
};
Сорри конечно, я дизайнер, мне правда сложно понять, что и почему происходит, огромное спасибо!
Вот ещё вариант, работает точно так же, но код меньше
s.onRollOver = f.onRollOver = m.onRollOver = function () {
clearInterval(int_move);
int_move = setInterval(move, 10, this);
};
function move(obj) {
dx = obj._x - mc._x;
mc._x += dx * 0.1;
}
Спасибо большое, проверил – работает. Но заметил, что движение муви клипа стало немного дрожать.
Да, есть такая проблема, это потому что FPS 12
Я забыл добавить в конце функции updateAfterEvent()
function moveArr(obj) {
dx = obj._x - arr._x;
arr._x += dx * 0.1;
updateAfterEvent();
}
Поставил 24 всеравно рябит, мне проще старый, немного не правильный код использовать, времени уже совсем нету. Спасибо еще раз вам, что откликнулись.
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();
}
udaaff: Огромнейшее спасибо! В моем варианте если курсор попадал на мувик его колбасило, тут все супер! С меня пиво, водка, виски с колой, что угодно! =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.