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

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

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

Регистрация: Apr 2012
Сообщений: 70
По умолчанию Гексагональная сетка и координаты ячейки

Добрый день!
Подскажите или Ткните пальцем, пожалуйста, в формулу, которая бы на входе получила координаты клика мышкой и вернула значения индексов ячейки, например (3, 2). Пример моей сетки ниже. Гугл не помогает =(
Изображения
 

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Напишите на вашей картинке координаты ячеек, а то непонятно где начало координат. Вообще, я в этом случае вешал прослушку клика на ячейки, а в каждой ячейке хранил информацию о ее координатах.

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

Регистрация: Apr 2012
Сообщений: 70
координаты идут так
0,0 1,0 2,0 3,0 4,0
0,1 1,1 2,1 3,1 4,1
0,2 1,2 2,2 3,2 4,2

прослушку на каждую ячейку? а если у меня будет поле 600 ячеек? 600 листенеров?

Старый 18.10.2012, 21:30
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 4  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Нет, клики же всплывают.

Старый 18.10.2012, 21:43
Wazzabi вне форума Посмотреть профиль Отправить личное сообщение для Wazzabi Найти все сообщения от Wazzabi
  № 5  
Ответить с цитированием
Wazzabi

Регистрация: Apr 2012
Сообщений: 70
хм.. если я правильно Вас понял, легче сделать так?
Код AS1/AS2:
private function drawGrid():void
		{
			for (var i:int = 0; i < HexaGrid.grid.length; i++)
			{
				for (var j:int = 0; j < HexaGrid.grid[i].length; j++)
				{
					add(grid, HexaGrid.getSellPoss(i, j), new Cell(i, j), HexaGrid.grid[i][j]);
				}
			}
		}
 
		private function add(cont:Object, coor:Point, cell:Cell, value:int):void
		{
			cont.addChild(cell);
			cell.gotoAndStop(value);
			cell.x = coor.x;
			cell.y = coor.y;
		}
прицепить на стейдж
Код AS1/AS2:
private function onClick(e:MouseEvent):void 
		{
			if(e.target is Cell) trace(e.target.cellCoor);
		}


Последний раз редактировалось Wazzabi; 18.10.2012 в 21:59.
Старый 18.10.2012, 21:49
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 6  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Ну к координатам вам вообще цепляться-плохая идея, это низкоуровневые детали и должны быть скрыты, по хорошему. Если вам потом нужно будет определять пересечение двух объектов по координатам, или расстояние, или путь, или что-то еще-то должны быть функции от объектов, а не координат.
И на стейдж цеплять не обязательно, логичнее взять общий наименьший для всех гексагональных ячеек предок.

Старый 18.10.2012, 22:38
NoisyFlasher вне форума Посмотреть профиль Отправить личное сообщение для NoisyFlasher Найти все сообщения от NoisyFlasher
  № 7  
Ответить с цитированием
NoisyFlasher
 
Аватар для NoisyFlasher

Регистрация: Aug 2012
Сообщений: 70
Не знаю, поможет или нет - сам не читал, но в закладках лежало уже давно. Авось пригодится)

http://habrahabr.ru/post/115689/

Старый 19.10.2012, 11:55
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 8  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
у нас в игре персы бегают по гексагонной сетке. координаты гексагона ищем так:

Код AS3:
var _y:int = Math.round(object.y / 50 / 1.5);
var _x:int = Math.round(object.x / 50 / Math.sqrt(3) - _y/2);
где object содержит координаты клика, а 50 это длина грани гекса, если что пишите - распишу подробнее. алгоритм кстати используем как раз из указанной выше статьи с хабра


Последний раз редактировалось bifidokk; 19.10.2012 в 12:22.
Старый 20.10.2012, 14:24
Wazzabi вне форума Посмотреть профиль Отправить личное сообщение для Wazzabi Найти все сообщения от Wazzabi
  № 9  
Ответить с цитированием
Wazzabi

Регистрация: Apr 2012
Сообщений: 70
спасибо большое, разобрался

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

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

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


 


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


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