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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.02.2010, 17:26
Mr.Lexx вне форума Посмотреть профиль Отправить личное сообщение для Mr.Lexx Найти все сообщения от Mr.Lexx
  № 1  
Ответить с цитированием
Mr.Lexx

Регистрация: Jan 2000
Сообщений: 7
По умолчанию Движение объекта к пункту меню

Используя исходники сделал чтобы при наведении на пункт меню к нему приезжал Movie Clip. Подскажите как сделать чтобы Movie Clip останавливался в центре пункта меню, а не "как получится"?

Код: (поскольку мне нужно было только движение по оси Х, от оси Y избавился криво я понимаю)

Исходник

Код AS1/AS2:
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);
}

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Вы бы еще написали, в каком флэше вы исходник даете.

Добавлено через 2 минуты
Неужели сложно понять, что происходит в коде, и почему объект приезжает в положение мышки?

Вот ваш код:
Код AS1/AS2:
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

Старый 12.02.2010, 17:50
Mr.Lexx вне форума Посмотреть профиль Отправить личное сообщение для Mr.Lexx Найти все сообщения от Mr.Lexx
  № 3  
Ответить с цитированием
Mr.Lexx

Регистрация: Jan 2000
Сообщений: 7
Сорри конечно, я дизайнер, мне правда сложно понять, что и почему происходит, огромное спасибо!

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Вот ещё вариант, работает точно так же, но код меньше
Код AS1/AS2:
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;
}

Старый 12.02.2010, 18:16
Mr.Lexx вне форума Посмотреть профиль Отправить личное сообщение для Mr.Lexx Найти все сообщения от Mr.Lexx
  № 5  
Ответить с цитированием
Mr.Lexx

Регистрация: Jan 2000
Сообщений: 7
Спасибо большое, проверил – работает. Но заметил, что движение муви клипа стало немного дрожать.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Да, есть такая проблема, это потому что FPS 12
Я забыл добавить в конце функции updateAfterEvent()
Код AS1/AS2:
function moveArr(obj) {
	dx = obj._x - arr._x;
	arr._x += dx * 0.1;
	updateAfterEvent();
}


Последний раз редактировалось samana; 12.02.2010 в 18:30.
Старый 12.02.2010, 18:32
Mr.Lexx вне форума Посмотреть профиль Отправить личное сообщение для Mr.Lexx Найти все сообщения от Mr.Lexx
  № 7  
Ответить с цитированием
Mr.Lexx

Регистрация: Jan 2000
Сообщений: 7
Поставил 24 всеравно рябит, мне проще старый, немного не правильный код использовать, времени уже совсем нету. Спасибо еще раз вам, что откликнулись.

Старый 12.02.2010, 18:35
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
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();
}

Старый 12.02.2010, 23:48
Mr.Lexx вне форума Посмотреть профиль Отправить личное сообщение для Mr.Lexx Найти все сообщения от Mr.Lexx
  № 9  
Ответить с цитированием
Mr.Lexx

Регистрация: Jan 2000
Сообщений: 7
udaaff: Огромнейшее спасибо! В моем варианте если курсор попадал на мувик его колбасило, тут все супер! С меня пиво, водка, виски с колой, что угодно! =)

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

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

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


 


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


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