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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Sep 2003
Сообщений: 5
По умолчанию Ошибается hitTest.... помогите

есть мувик, при нажатии мышки я делаю:
Код:
dr = this.duplicateMovieClip("dr",++drag_depth,this);
dr.parent = this;
затем таскаю копию.... когда отпускаю - копия возвращается на начальное место:
Код:
function obj_MouseUp() {
...........
angle_rad=Math.atan2(((dr._y+dr._height/2) - (dr.parent._y+dr._height/2)),	
                     ((dr._x+dr._width /2) - (dr.parent._x+dr._width /2)));
dy=Math.sin(angle_rad);
dx=Math.cos(angle_rad);
........
} // func

_root.onEnterFrame = function () {
    if (!return_obj) {
	return;
    } //if
	for(i=1;i<=12;i++) {
		dr._x -= dx*2;
		dr._y -= dy*2;
		var y = dr._y+dr._height/2;
		var x = dr._x+dr._width /2;
		if (dr.parent.hitTest(dr) ||
		   dr.parent.hitTest(x+20,y,false)    ||
		   dr.parent.hitTest(x-20,y,false) 	||
		   dr.parent.hitTest(x,y+20,false)	||
		   dr.parent.hitTest(x,y-20,false)) {
			
		   dr.removeMovieClip();
		   return_obj = false;
		   break;
		} // if
           } // for
} // func
проблема в том, что порожденный объект проходит через своего родителя и не удаляется... диаметр объекта 16 пикселей, пробовал проверять по нескольким точкам, увеличил дискретизацию перемещения -- все равно периодически проскакиевает :-( при этом визуально порожденный объект точно проходит через родителя !!!!
ошибка не периодична!!!
Помогите... кроме вычисления длины гипотинузы и проверки пройденного пути ничего в голову не приходит....

Старый 06.10.2003, 14:13
Пушистик вне форума Посмотреть профиль Отправить личное сообщение для Пушистик Посетить домашнюю страницу Пушистик Найти все сообщения от Пушистик
  № 2  
Пушистик
Bumble Bee
[+1 05.07.06]
 
Аватар для Пушистик

Регистрация: May 2003
Адрес: Третья планета от Солнца
Сообщений: 1,254
Отправить сообщение для Пушистик с помощью ICQ
не понял в чем проблема..... мувики не удаляются при перетаскивании на родителя?
__________________
Portfolio

Старый 06.10.2003, 14:24
asvserg вне форума Посмотреть профиль Отправить личное сообщение для asvserg Найти все сообщения от asvserg
  № 3  
asvserg

Регистрация: Sep 2003
Сообщений: 5
тащем мувик, при этом создается дубликат, а родитель остается на месте.... затем отпускаем и дубликат возвращается к родителю. при пересечении с родителем дубликат удаляется... проблема в том, что момент пересечения иногда не отлавливется и дубликат летит в бесконечность.... хотя визуально он пересекается с родителем.....
Вложения
Тип файла: zip drag.zip (56.9 Кб, 131 просмотров)

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

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Полчаса таскал твои кружочки, - все работает нормально, никаких сбоев.
Единственное замечание: ты излишне усложняешь код.
К примеру, последнюю часть кода я бы написал так:
Код:
_root.onEnterFrame = function () {
       for(i=1;i<=12;i++) {
          if(return_obj){
	dr._x -= dx*2;
	dr._y -= dy*2;
	if (dr.parent.hitTest(dr)) {
	dr.parent.onPress = obj_Press;
	dr.parent.useHandCursor = true;
	dr.parent._alpha  = 100;
	dr.removeMovieClip();
	return_obj = false;
                }
           } 
     }
}
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 08.10.2003, 12:24
asvserg вне форума Посмотреть профиль Отправить личное сообщение для asvserg Найти все сообщения от asvserg
  № 5  
asvserg

Регистрация: Sep 2003
Сообщений: 5
дык в том-то и дело, что ошибка возникает очень редко, особенно когда показываешь заказчику ... кроме этого, случаются проблемы с определением угла до родителя, в этом случае родитель и предок не пересекаются вообще (визуально)... решил все с помощью определения длины пройденного пути до родителя...работает 100%, пока глюков не было.... кому интересно - вот:
Код:
function obj_MouseUp() {

	var angle_rad=Math.atan2(((dr._y+dr._height/2) - (dr.parent._y+dr._height/2)),
 	         	                ((dr._x+dr._width /2) - (dr.parent._x+dr._width /2)));
	dy=Math.sin(angle_rad);
	dx=Math.cos(angle_rad);
	st_x = dr._x;
	st_y = dr._y;
	var y = (dr._y - dr.parent._y);
	var x = (dr._x - dr.parent._x);
	st_g =	Math.sqrt(y*y + x*x);
	return_obj = true;
} // func


_root.onEnterFrame = function () {
	if (!return_obj) {
		return;
	} //if

	dr._x -= dx*24;
	dr._y -= dy*24;
	
	var y = (dr._y - st_y);
	var x = (dr._x - st_x);
	var g =	Math.sqrt(y*y + x*x);
	if (dr.parent.hitTest(dr) ||
	    g >= st_g) {
		dr.parent.onPress = obj_Press;
		dr.parent.useHandCursor = true;
		dr.parent._alpha  = 100;
		dr.removeMovieClip();
		return_obj = false;
	} // if
} // func

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

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

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


 


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


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