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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.09.2006, 22:49
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 21  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
1. Он знает начальную и конечную координаты клеток
2. Ему нужно вернуть массив клеток входящ в прямоугольник, диоганаль которого проходит по этим клеткам.
3. Двумерного и вообще никакого массива у него нет.
Днём лень было писать:
Код:
//w - количество клеток в строке сетки, в горизонтальном ряду ;
//Ax, Ay - координаты первой точки;
//Bx, By - координаты второй точки
ar = []
while(Ay<=By){
     t = Number(Ax);
     while(t<=Bx) {
            ar.push(Number((Ay-1)*w+t))
            t+=1
     }
     Ay+=1
}
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 18.09.2006 в 23:24.
Старый 18.09.2006, 23:09
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 22  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Вот 12 клеток в сетке и я могу их разместить 6-ю разными способами (указал 4). Указывая одни и теже координаты (возможные конечно), я буду получать разные числа выделения.
[ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10][11][12]

[ 1][ 2][ 3][ 4][ 5][ 6]
[ 7][ 8][ 9][10][11][12]

[ 1][ 2][ 3][ 4]
[ 5][ 6][ 7][ 8]
[ 9][10][11][12]

[ 1][ 2][ 3]
[ 4][ 5][ 6]
[ 7][ 8][ 9]
[10][11][12]
...
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.09.2006, 23:21
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 23  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от iNils
Вот 12 клеток в сетке и я могу их разместить 6-ю разными способами (указал 4). Указывая одни и теже координаты (возможные конечно), я буду получать разные числа выделения.
[ 1][ 2][ 3][ 4][ 5][ 6][ 7][ 8][ 9][10][11][12]

[ 1][ 2][ 3][ 4][ 5][ 6]
[ 7][ 8][ 9][10][11][12]

[ 1][ 2][ 3][ 4]
[ 5][ 6][ 7][ 8]
[ 9][10][11][12]

[ 1][ 2][ 3]
[ 4][ 5][ 6]
[ 7][ 8][ 9]
[10][11][12]
...
Тьфу блин, заплёлся
W - Я имел ввиду количество клеток в ряду, строчке. А сколько всего клеток в сетке не важно и не нужно.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
2iNils: Рассказываю, что имеется и что нужно получить ,как можно более понятно. Есть игровое поле с ячейками, произвольного размера. Все ячейки пронумерованы целыми числами от 1 до (размер поля в ячейках по горизонтали)*(размер поля в ячейках по вертикали). Именно так как в твоем примере про 12 клеток, все предложенные тобой варанты возможны. Мы знаем любые параметры поля: размер его ячеек, размер самого и т.п.
Имеется прямоугольная область (знаем все её параметры: координаты левого верхнего угла, длину и высоту).
Задача получить массив номеров ячеек, которое перекрывает эта область.

p.s. Все объекты это данные визуального представления они не имеют поэтому hitTest не подходит.

2maxmara: есть просто массив всех ячеек, кто тебе сказал что вообще никакого массива нет? Нет массива двумерного. Твой код забивает массив координатами (а речь идет о номерах ячейках) - если тебе, как ты говоришь "лень писать" - то не пиши вообще такого кода. Спасибо за помощь.

2silin: Спасибо, сейчас подумаю попробую.


Последний раз редактировалось Sneg; 19.09.2006 в 00:30.
Старый 19.09.2006, 00:32
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 25  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Sneg
2iNils: Рассказываю, что имеется и что нужно получить ,как можно более понятно. Есть игровое поле с ячейками, произвольного размера. Все ячейки пронумерованы целыми числами от 1 до (размер поля в ячейках по горизонтали)*(размер поля в ячейках по вертикали). Именно так как в твоем примере про 12 клеток, все предложенные тобой варанты возможны. Мы знаем любые параметры поля: размер его ячеек, размер самого и т.п.
Имеется прямоугольная область (знаем все её параметры: координаты левого верхнего угла, длину и высоту).
Задача получить массив номеров ячеек, которое перекрывает эта область.

p.s. Все объекты это данные визуального представления они не имеют поэтому hitTest не подходит.

2maxmara: есть просто массив всех ячеек, кто тебе сказал что вообще никакого массива нет? Нет массива двумерного. Твой код забивает массив координатами (а речь идет о номерах ячейках) - если тебе, как ты говоришь "лень писать" - то не пиши вообще такого кода. Спасибо за помощь.
Я бы сначала посмотрел что делает код maxmara, а делает он как раз то что нужно.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.09.2006, 00:38
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 26  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Код:
   [ 1][ 2][ 3][ 4][ 5][ 6]
[1]  1   2   3   4   5   6 
[2]  7   8   9  10  11  12
[3] 13  14  15  16  17  18
[4] 19  20  21  22  23  24
я слегка код переделал (не люблю я while)
Код:
arrayPoint = [];
a = {x:2, y:2};
b = {x:4, y:3};
w = 6;

for (var i = a.y; i <= b.y; i++) {
	var id = w * (i - 1);
	for (var j = a.x; j <= b.x; j++) {
		arrayPoint.push (id + j);
	}
}

 
trace (arrayPoint); //8,9,10,14,15,16 - что и требовалось
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.09.2006, 01:01
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 27  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Туплю уже страшно - пора домой, утром разберусь с кодом - спасибо всем за ответы.

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

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Чуть-чуть подкоректировал код - все работает как нужно. Вот только на полях больше чем 100x100 при выделении большой области. Flash при таком алгоритме очень долго обрабатывает данные :-(

2miramax: твой код был абсолютно верным, но из-за стиля написания и "while" мой мозг категорически отказывался его понимать. Спасибо, прошу прощения за не дружелюбный тон.

2iNils: отдельная благодарность :-)


Последний раз редактировалось Sneg; 20.09.2006 в 20:13.
Старый 20.09.2006, 17:10
Leezard вне форума Посмотреть профиль Отправить личное сообщение для Leezard Посетить домашнюю страницу Leezard Найти все сообщения от Leezard
  № 29  
Ответить с цитированием
Leezard
 
Аватар для Leezard

Регистрация: Oct 2004
Сообщений: 141
Чтобы не возникало проблем при построении тайлов надо иметь две координатных сетки:
1. Реальная
2. Тайловая
и метод перехода от одной к другой.
Допустим все тайла имеют атрибуты xx и yy , где xx - порядковый номер по иксу а yy порядковый номер по y. Имена тоже удобней строить из этой концепции например ["tile_"+xx+"_"+yy] будет легче обращятся на прямую.
Тогда если нам известен левый ферхний тайл выделения tile1 и нижний правй тайл выделения tile2 имеем простейшую систему перебора:
Код:
for(var i=tile1.xx;i<=tile2.xx;i++){
 for(var j=tile1.yy;j<=tile2.yy;j++){
 _root["tile_"+i+"_"+j]
//Сюда попадут все тайлы выделения
 }
}

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

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Конечно удобнее, но к сожалению интерфейс ячейки сетки и самой сетки не предоставляет такой возможности, поэтому приходится делать несколько иным способом.

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

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

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


 


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


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