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

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

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

Регистрация: Jul 2005
Сообщений: 35
По умолчанию некорректно отрабатывается метод, в чем проблема?

День добрый джентельмены.Непонятная засада случилась.
Затея следующая,при попадании в определенную зону курсора мыши,объект (по событию нажатия клавиши) начинает двигаться к курсору мыши.при выходе курсора из "зоны",объект должен возвращаться в заданную точку с определенной скоростью.Для этого создаем метод slideTo.Код такой:
// создаем метод slideTo, мне кажеться,что его можно не проверять
MovieClip.prototype.slideTo = function(leaderX, leaderY, speed) {
if (mc._x != leaderX && mc._y != leaderY) {
this.onEnterFrame = function() {
var deltaX = mc._x-leaderX;
var deltaY = mc._y-leaderY;
var dist = Math.sqrt((deltaX*deltaX)+(deltaY*deltaY));
var moveX = speed*(deltaX/dist);
var moveY = speed*(deltaY/dist);
if (speed>=dist) {
mc._x = leaderX;
mc._y = leaderY;
delete this.onEnterFrame;
} else {
mc._x -= moveX;
mc._y -= moveY;
}
};
}
};
//здесь указан тестовый код,подтверждающий работоспособность метода slideTo
/*mc.onPress = function() {
mc.startDrag(true);
};
mc.onRelease = function() {
mc.stopDrag();
mc.slideTo(100, 100, 100);
};*/
// в данном коде метод slideTo,почему-то отрабатывается только один раз
mc.onMouseDown = function() {
if (_xmouse<300 && _ymouse<200) {
mc._x = mc._x+(_xmouse-mc._x)/5;
} else {
trace("sdfg");
mc.slideTo(50, 50, 100);
}
};
но почему-то метод slideTo отрабатывается только один раз (в отличии от кода,который я "заслешел",там он отрабатывается нормально всегда).
В чем причина "одноразовости" ,джентельмены?

Старый 16.08.2005, 11:22
Fokker вне форума Посмотреть профиль Отправить личное сообщение для Fokker Найти все сообщения от Fokker
  № 2  
Ответить с цитированием
Fokker

Регистрация: Jul 2005
Сообщений: 35
братья,неужели никто не поможет? (может я безтолково проблему описал?)...я уж тут коллег подгрузил,никто разобраться не может...

Старый 16.08.2005, 11:25
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 3  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
мой тебе совет, ставь trace и отрабатывай куда почему и с какими значениями он попадает!!! секрет прост - trace поможет тебе !

Старый 16.08.2005, 11:27
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 4  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
вот у меня допустим setInterval один раз отрабатывал и вырубался, ну я голову сломал "НУ ПОЧЕМУ" , оказалось функцию указал со скобками setInterval(noname(),500) вот такие штуки!!

Старый 16.08.2005, 14:03
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код:
MovieClip.prototype.slideTo = function(leaderX, leaderY, speed) {
	if (this._x != leaderX /*&& this._y != leaderY*/) {
		this.onEnterFrame = function() {
			var deltaX = this._x-leaderX;
			var deltaY = this._y-leaderY;
			var dist = Math.sqrt((deltaX*deltaX)+(deltaY*deltaY));
			var moveX = speed*(deltaX/dist);
			var moveY = speed*(deltaY/dist);
			if (speed>=dist) {
				this._x = leaderX;
				this._y = leaderY;
				delete this.onEnterFrame;
			} else {
				this._x -= moveX;
				this._y -= moveY;
			}
		};
	}
};
вот так работает, догадайся почему..(не потому, что mc на this заменили)

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

Регистрация: Jul 2005
Сообщений: 35
вот черт...ты прав,я этот орешек (на сегодняшний день) не расколол бы.
БОЛЬШОЕ Человеческое спасибо....[а то плохо сплю уже третий день )) кофе по ночам хлебаю )) ...
P.S. я this на mc уже от отчаяния поменял,потому,как все способы научного тыка перепробовал (т.к. ничего не изменилось,то так и оставил....а сейчас трезвым взглядом смотрю на код...и точно, надо this оставить)


Последний раз редактировалось Fokker; 16.08.2005 в 16:15.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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