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

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

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

Регистрация: Nov 2009
Сообщений: 124
По умолчанию Логика классов

В общем ситуация такова.
Только начинаю работать с классами.
Существует два класса, первый - Universe, второй Tiler.
Оба экстенды от мувиклипа.

Класс Universe создает мир. Проходит циклом по XML и размещает на сцене Tilerы.
Получается сетка.
Tiler простой мувиклип с набором дополнительных опций.

Создаю третий класс, Player. Стоит задача получить реальные(x,y) координаты Tilerа, пытаюсь в классе Player сделать
Код AS3:
stage.getChildByName(имя_тилера)
возвращяет нул, пытаюсь к карте обратится
(map - это обьект Universe)
Код AS3:
stage.map.getChildByName(имя_тилера)
ругается на мап.

В итоге я так и не осилил как добратся до нужного тилера. Может кто что подскажет?

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
1 - если вы создавали тайлы программно - проверьте, что при создании вы задаете тайлам свойство name, чтобы потом можно было обратиться к нужному через getChildByName
2 - у stage нет свойства map
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 31.01.2011, 10:52
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 3  
Ответить с цитированием
SONce

Регистрация: Nov 2009
Сообщений: 124
Цитата:
Сообщение от cleptoman Посмотреть сообщение
1 - если вы создавали тайлы программно - проверьте, что при создании вы задаете тайлам свойство name, чтобы потом можно было обратиться к нужному через getChildByName
2 - у stage нет свойства map

да, при создании тайла у него есть
Код AS3:
this.name = 'x'+gridX+'y'+gridY;
map в данном случае я пытался к обьекту обратится.

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
а вы тайлы на стейдж чтоле добавляете?
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 31.01.2011, 11:03
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 5  
Ответить с цитированием
SONce

Регистрация: Nov 2009
Сообщений: 124
тайлы добавляются внутрь обьекта map
тоесть в кадре:
Код AS3:
map:Universe = new Universe();
addChild(map);
в классе
Код AS3:
.......
var tileID:Tiler = new Tiler(gridX,gridY);
.......
addChild(tileID);
.......

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
ну а почему вы тогда их на стейдж ищите?..в мапе и ищите

внутри map

Код AS3:
...
super.getChildByName("someName")
...
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

Регистрация: Nov 2009
Сообщений: 124
Добавил в Universe:
Код AS3:
		function tileCoord(coordX,coordY){
			return this.getChildByName("x"+coordX+"y"+coordY);
		}
из плеера делаю
Код AS3:
			var un:Universe;
			trace(un.tileCoord(1,1));
получаю
"TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null"."

Добавлено через 28 минут
Тут я понимаю проблема обращения класс-класс

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Нет, здесь проблема в том что un не инициализирован. Это пустая переменная, в ней нет ссылки ни на какой Universe, так как Universe то Вы не создали. Так у кого Вы спрашиваете .tileCoord(1,1) ?
Код AS3:
var un:Universe = new Universe();
trace(un.tileCoord(1,1));
trace(un.getChildByName("x"+1+"y"+1));
Кроме того Ваш метод tileCoord должен что-то возвращать? Определите правильно сигнатуру.
__________________
Reality.getBounds(this);

Старый 31.01.2011, 11:57
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 9  
Ответить с цитированием
SONce

Регистрация: Nov 2009
Сообщений: 124
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Нет, здесь проблема в том что un не инициализирован. Это пустая переменная, в ней нет ссылки ни на какой Universe, так как Universe то Вы не создали. Так у кого Вы спрашиваете .tileCoord(1,1) ?
Код AS3:
var un:Universe = new Universe();
trace(un.tileCoord(1,1));
trace(un.getChildByName("x"+1+"y"+1));
Кроме того Ваш метод tileCoord должен что-то возвращать? Определите правильно сигнатуру.

если я иниализирую Universe то на стейдж добавиться еще одно поле) как быть?

Старый 31.01.2011, 12:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
))) Наверно,
Код AS3:
trace(map.tileCoord(1,1));
trace(map.getChildByName("x"+1+"y"+1));
, раз уже есть ссылка map на экземпляр Universe, добавленный на стейдж.
Метод перепишите!
Код AS3:
function tileCoord(coordX,coordY):Tiler
{
	return (this.getChildByName("x"+coordX+"y"+coordY) as Tiler);
}
__________________
Reality.getBounds(this);

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

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

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


 


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


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