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

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

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

Регистрация: Jan 2014
Сообщений: 27
По умолчанию Проблема с "прилипанием"

Есть такая функция, которая отвечает за "прилипание" одних объектов к другим объектам (Frame[0] - Frame[17]), как сделать чтоб к уже занятой ячейке объект не прилипал, а прилипал, например, к следующей?
Помогите пожалуйста!
Код AS3:
function fun2 (e:MouseEvent):void
	{
			for(i = 0; i < 6; i++)
		{
			if(e.currentTarget.hitTestObject(Frame[i]))
			{
						e.currentTarget.x = X[0];
						e.currentTarget.y = Y[i];
			}
			else if(e.currentTarget.hitTestObject(Frame[i+6]))
			{
						e.currentTarget.x = X[1];
						e.currentTarget.y = Y[i];	
			}
			else if(e.currentTarget.hitTestObject(Frame[i+12]))
			{
						e.currentTarget.x = X[2];
						e.currentTarget.y = Y[i];
			}
		}
      }

Старый 25.04.2014, 00:42
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
Скорее всего, только мне не понятно о чем идёт речь. Можете подробно рассказать, что Вы хотите в итоге получить?

Старый 25.04.2014, 00:51
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 3  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Akopalipsis, о чём речь-то понятно, а вот код непонятный в виду отсутствия комментариев.
__________________
There is no thing in this world that is not simple.

Старый 25.04.2014, 02:20
Youngflasher вне форума Посмотреть профиль Отправить личное сообщение для Youngflasher Найти все сообщения от Youngflasher
  № 4  
Ответить с цитированием
Youngflasher

Регистрация: Jan 2014
Сообщений: 27
Извините
Код AS3:
// элементы массива Fact перетаскиваются на области из массива Frame,
// проверка происходит в функции fun2
//нужно чтоб на одно место прилипал только один элемент, 
//а другой, в случаи попадания, прилипал в другую свободную ячейку
 
//массив элементов
var Fact: Array = new Array(Fact_1, Fact_2, Fact_3, Fact_4, Fact_5, Fact_6, Fact_7, Fact_8, Fact_9, Fact_10, Fact_11, Fact_12); 
//массив полей на которые элементы перетаскиваются 
var Frame: Array = new Array(frame_01, frame_02, frame_03, frame_04, frame_05, frame_06, frame_07, frame_08, frame_09, frame_10, frame_11, frame_12, frame_13, frame_14, frame_15, frame_16, frame_17, frame_18); 
// массивы координат элементов Frame
var X: Array = new Array(158, 471, 784);
var Y: Array = new Array(88, 151, 214.95, 278.45, 341.95, 405.45); 
//цикл для всех элементов 
for(i = 0; i < Fact.length; i++)
{
	Fact[i].addEventListener(MouseEvent.MOUSE_DOWN, fun1);
	Fact[i].addEventListener(MouseEvent.MOUSE_UP, fun2);
 
}
 
function fun1 (e:MouseEvent):void
	{
		e.currentTarget.startDrag();
 
	}
function fun2 (e:MouseEvent):void
	{
			for(i = 0; i < 6; i++)
		{
			if(e.currentTarget.hitTestObject(Frame[i]))
			{
						e.currentTarget.x = X[0];
						e.currentTarget.y = Y[i];
			}
			else if(e.currentTarget.hitTestObject(Frame[i+6]))
			{
						e.currentTarget.x = X[1];
						e.currentTarget.y = Y[i];	
			}
			else if(e.currentTarget.hitTestObject(Frame[i+12]))
			{
						e.currentTarget.x = X[2];
						e.currentTarget.y = Y[i];
			}
		}
                e.currentTarget.stopDrag();
}

Старый 25.04.2014, 04:20
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Я, конечно, понял логику, но код ужасный и странный. Чтобы реализовать прилипание в вашем кодУ, необходимо принять вашу логику и думать по ней, что убийственно, так как код просто ужасен
Поэтому если кто-то и согласится помочь, то он напишет всё с нуля и в классах.
__________________
There is no thing in this world that is not simple.

Старый 25.04.2014, 15:00
Youngflasher вне форума Посмотреть профиль Отправить личное сообщение для Youngflasher Найти все сообщения от Youngflasher
  № 6  
Ответить с цитированием
Youngflasher

Регистрация: Jan 2014
Сообщений: 27
SuriTheAngel, Извините, по другому пока не умею.
alexcon314, Вы не могли бы подробнее объяснить?

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Почему бы не ввести у объектов Frame логическое свойство filled (заполнено)? При помещении Fact в ячейку выставлять filled=true; а перед попыткой поместить Fact в ячейку проверять if(!filled).

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

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

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


 


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


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