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

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

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

Регистрация: May 2010
Сообщений: 59
По умолчанию Вопрос про координаты (x y)

Здравствуйте,
решил спросить на примере, как мне получить x и y

главный класс TestPoint

Код AS3:
package
{
	import flash.display.*;
	import flash.geom.*;
 
	public class TestPoint extends Sprite
	{
		var test1:Test1;
 
		public function TestPoint()
		{
			test1 = new Test1();
 
			addChild(test1);
 
			trace(test1.x, test1.y);
		}
	}
}
Класс Test1

Код AS3:
package
{
	import flash.display.*;
 
	public class Test1 extends MovieClip
	{
		var test1:MovieClip;
 
		public function Test1()
		{
			test1 = new mc1();
			test1.x = 100;
			test1.y = 100;
 
			addChild(test1);
		}
	}
}
mc1() это просто фигура (круг), которая находится в библиотеки проекта

вопрос в следующем,
в главном классе я вызываю trace(test1.x, test1.y) и мне пишется 0 0

я понимаю, т.к. главная сцена находится в координатах 0 0, но как мне вытащить координаты круга (того, который создается в классе Test1) ???

подскажите плиз на примере, желательно с примером правильного кода

спасибо

Старый 20.09.2010, 19:26
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Так у вас вложенность какая? Смотрите сами: test1.test1
Все правильно, первый test1 лежит в (0, 0), а test1 в нем лежит в (100, 100), ясно? Вы берете координаты не того объекта и зачем-то создали вложенность.

Код AS3:
package
{
	import flash.display.*;
 
	public class Test1 extends MovieClip
	{
 
		public function Test1() {
			this.x = 100;
			this.y = 100;
		}
	}
}
__________________
тут я

Старый 20.09.2010, 19:35
DenverZ вне форума Посмотреть профиль Отправить личное сообщение для DenverZ Найти все сообщения от DenverZ
  № 3  
Ответить с цитированием
DenverZ

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

но тогда вопрос такой,
я собственно видимо не верно привел пример, расскажу на словах

есть объект (герой), он стреляет, создаются пули, их много
каждый созданный объект пули (bullet = new Bullet()) добавляется в массив
после чего происходит проверка каждой пули по массиву (на попадание), собственно у пуль надо брать их текущие координаты относительно сцены...

просто как я это вижу

Класс героя, в нем создается в цикле (например 10 пуль) объект пули
while (limi--)
{
bullet = new Bullet();
массив.push(bullet)
addChild(bullet)
}

прошу прощения за цикл, просто для краткости

а в классе пуль Bullet уже на сцену добавляются сами пули из обхектов библиотеки
bullet = new mc_myBullet();
bullet.x = координата например кончика пушки героя и y тоже самое
addChild(bullet)

и собственно как в этом случае быть? как мне в классе героя, когда я буду перебирать массив пуль, брать их координаты?

Добавлено через 4 минуты
КорДум, скажите, в моей первом примере получается класс Test1 Должен выглядеть вот так?

Код AS3:
package
{
	import flash.display.*;
 
	public class Test1 extends MovieClip
	{
		var object:MovieClip;
 
		public function Test1()
		{
			object = new mc1();
			this.x = 100;
			this.y = 100;
			addChild(object);
		}
	}
}
объект MovieClip надо же сделать и добавить на сцену
верно?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Класс героя, в нем создается в цикле (например 10 пуль) объект пули
while (limi--)
{
bullet = new Bullet();
массив.push(bullet)
addChild(bullet)
}
Почему пули вы создаёте в классе героя и добавляете их к нему? Не понимаю. Это отдельные элементы и не должны зависеть от героя.
Если это у вас всё не в документ классе, то тогда вам нужно создать класс уровня например Level1 и в него поместить героя, и когда надо пули.

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

Регистрация: May 2010
Сообщений: 59
с примерами бы =)
новичкам трудно понять некоторые вещи, в голове реальная каша

мне уже советовали про класс уровня (мир), но я не понял как это сделать, и пример не показали :-(

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Просто представьте, что герой и всё остальное будет находится в пустом муви-клипе по именем Level1, так же как они сейчас находятся на TimeLine - который тоже самый настоящий муви-клип. А вы полностью делаете игру на классах, или у вас главный код в кадрах, а класс пули просто создали для удобства?

Старый 20.09.2010, 20:32
DenverZ вне форума Посмотреть профиль Отправить личное сообщение для DenverZ Найти все сообщения от DenverZ
  № 7  
Ответить с цитированием
DenverZ

Регистрация: May 2010
Сообщений: 59
нет, я полностью делаю на классах
основной класс это TowerKiller (он же как Вы называете уровень)
класс героя это Hero
класс пуль это BulletLoader, у него есть еще один класс Bullet
BulletLoader подгружает данные их XML, после чего в цикле создает из класса Bullet пули и помещает их в массив
есть класс EnemyLoader и Enemy для загрузки данных врагов и создания врагов

на TimeLine ничего нет, я сразу отказался от программирования на временной шкале, т.к. для более мения серьезного проекта, это неудобно и не профессионально...

Добавлено через 43 секунды
Забыл сказать
в классе TowerKiller добавляется в addChild только герой
а вот в классе героя, уже идет управление всем...

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Но если вы всё добавляете в класс героя, то как оно работает? Наверняка ваш герой ходит туда-сюда, получается с ним одновременно так же ходит всё вокруг... Наверно я что-то не понял...

Старый 20.09.2010, 20:59
DenverZ вне форума Посмотреть профиль Отправить личное сообщение для DenverZ Найти все сообщения от DenverZ
  № 9  
Ответить с цитированием
DenverZ

Регистрация: May 2010
Сообщений: 59
герой это башня которая стреляет
Вы видимо не поняли...

вот тут http://www.flasher.ru/forum/showthread.php?t=140422 вконце темы, я пример привел небольшой, надеюсь более понятно будет :-)

Старый 20.09.2010, 23:49
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 10  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Итак, сами посудите: глупо, что герой является мозгом игры. Герой же не обдумывает, что пуля должна войти в стену, отскочить и свалиться воооон у того угла? Он же не должен знать, что сейчас думает монстр, куда бы ему свалить в кучу трупы прошлых "героев", верно же? Герой умеет только стрелять, ходить и смежные действия. О другом он не должен задумываться вообще.
Да, вам следует создавать пули в объекте Мир, а пули, в свою очередь, не должны думать о стороннем вообще тоже. Они только летят и проверяются на столкновение со стенами. Они не должны знать, что думает слесарь Вася - главный босс игры. Герой, в свою очередь, не должен знать как и куда летят пули. Это пули контролируют свои действия.
Вы должны делать логически обособленные объекты, иначе получится нечто вроде "сидение от унитаза управляет бочком и сливом".

Добавлено через 9 минут
И да, я вот честно, не знаю, какое самое нормальное решение для проверки хитТеста обособленных объектов между другими объектами. Читал, что самое то - использовать сетку. То есть, грубо говоря, пуля летит, она знает, в каком она квадратике, далее идет проверка, есть ли кто в этом квадратике, если есть - проверка на хитТест между теми, кто там есть. Логика ясна? Я на деле никогда не пробовал, как-то от игрушек отошел уже очень давно.
__________________
тут я


Последний раз редактировалось КорДум; 20.09.2010 в 23:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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