Развитие игровой вспышки
Текущее время: Сб окт 21, 2017 8:52 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Нужна помощь.
СообщениеДобавлено: Пн янв 19, 2015 3:37 pm 
Не в сети

Зарегистрирован: Пн янв 19, 2015 3:24 pm
Сообщений: 1
Привет всем. Нужна помощь с haxe.
У меня есть объект Scene, это родитель всех сцен(комнат). Он создает все объекты и хранит ссылки на них в массиве listOfEntity. Родитель всех объектов, класс Entity. У всех объектов есть свойство identifier. Для того что бы можно было получить ссылку на объект в сцене есть такая функция getIdentifier.
Как сделать что бы функция возвращала объект не Entity, а того класса к которому принадлежит объект.
Пробовал так но все равно что то странное выходит.
Код:
private function getIdentifier(ident:String = "none")
{
var returnEnt:Dynamic;
var identEnt:Entity = listOfEntity[0];

for (i in 0...listOfEntity.length)
{
if (listOfEntity[i].identifier == ident)
{
identEnt = listOfEntity[i];
break;
}
}

if (Std.is(identEnt, BtnMenu))
{
returnEnt = cast(identEnt, BtnMenu);
}
else
{
returnEnt = cast(identEnt, Entity);
}

return returnEnt;
}

Знаю что можно как то на макросах сделать но я пытался у меня ничего не вышло. Помоги пожалуйста, как реализовать эту функцию. Или как еще можно получать ссылку на определенный объект...


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Нужна помощь.
СообщениеДобавлено: Чт янв 22, 2015 6:52 pm 
Не в сети

Зарегистрирован: Сб апр 30, 2011 11:19 pm
Сообщений: 110
Сомневаюсь, что это возможно.
Можно сделать почти также, используя type parameters
Тогда вызов функции будет таким:
Код:
getIdentifier(id, BtnMenu); // возвращает BtnMenu


а сама функция
Код:
function getIdentifier<T>(ident:String, class:Class<T>):T
{
   for (i in 0...listOfEntity.length)
   {
      if (listOfEntity[i].identifier == ident)
      {
         identEnt = listOfEntity[i];
         break;
      }
   }

   return cast(identEnt, T);
}


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB