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

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

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

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
По умолчанию Узнать, имеется ли "стена"

Есть код расстановки и добавления спрайтов:
Код AS3:
public function init_walls():void {
			var xrow:int = stage.stageWidth / step;
			var yrow:int = stage.stageHeight / step;
 
 
			for (var i:int = 1; i < xrow; i+=2) {
				for (var ii:int = 1; ii < yrow; ii+=2) {
					wall = new Wall();
					this.addChild(wall);
 
					wall.x = step * i;
					wall.y = step * ii;
				}
			}
		}
и имеется еще спрайт, который может передвигаться (шаг перемещения равен step)

Вопрос, как узнать что стена имеется и соответственно не столкнутся с ней?

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

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Создайте модельку - матрицу тайлов (ваших стен) иточку с координатами движущегося объекта в этой матрице.

пример:
Код:
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 0 1 0 0 1
1 0 0 0 1 0 1
1 0 0 0 0 1 1
1 1 1 1 1 1 1
[1] - стена;
[0] - не стена.
Теперь вам надо всего лиш работать с массивом и точкой в нем. при изменении положения точки перемещать объект на экране

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
или сделать аналогичную проверку через bitmapData и заполненные/пустые пиксели
__________________
low +

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Jewelz
А зачем это через битмапу делать ?
__________________
Дети не должны знать о своих родителях

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
как альтернативный вариант

можно сразу визуализировать - удобно
упрощаются проверки если клетки не только 1x1
ну и использование разных плюшек битмапдаты в определенных условиях, например можно ли попасть из одной точки в другую просто используя заливку

по скорости доступа к ячейке не знаю насколько медленнее (или быстрее), чем доступ к элементам массива, но не думаю что сильно медленней, завтра проверю для интереса =)
__________________
low +

Старый 06.02.2012, 21:44
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 6  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
решил, правда самому не нравиться, но работает

Код AS3:
var a:int = 0;
				if (this.x <= 0) {
					this.x = this.x;
				}else {
					for (var i:int = 0; i < f.length; i++) { // f - это массив со стенами :)
						w = f[i];
						if ((w.y == this.y) && (w.x == this.x - step)) {
							a = 1;
							break;
						}
					}
					if (a == 1) {
						this.x = this.x;
					}else {
						this.x -= step;
						i = 0;
					}
				}
P.S: возможно есть более легкое решение

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

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

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


 


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


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