2012-04-02 1 views
2

Общий вопрос: Можете ли вы использовать существование объекта как условие оператора if в Haxe? Если да, то как?Использование существования объекта в операторе if в Haxe

Конкретный вопрос: Я изучаю разработку игры Haxe и использую библиотеку игр/фреймворк/движок HaxePunk. Существует не так много учебников по его использованию, но после использования FlashPunk (в игровой библиотеке ActionScript/движке/фреймворке, на которой он основан) учебники были достаточно легкими. Однако способ обнаружения столкновения в HaxePunk заключается в том, что при столкновении метод collide возвращает объект, с которым столкнулся.

var b : Bullet = collide("bullet", x, y); 
if (b) { 
    b.destroy(); 
} 

Я пробовал проверять его на тип Null, но это, похоже, не работает.

+9

'if (b! = Null)' должен работать – kirilloid

+2

Herp, derp. Капитализация станет для меня концом. Благодаря! – mkosler

+2

@kirilloid: Этот комментарий должен быть ответом;) – back2dos

ответ

4

Как kirilloid упоминает в комментариях, попробуйте проверить, если b не равно нулю:

var b : Bullet = collide("bullet", x, y); 
if (b != null) { 
    b.destroy(); 
} 

Было решено для Haxe не иметь if(b) синтаксис для целого ряда причин. Вы можете найти обсуждение по теме на Google Groups: Test if exists.

+2

Предупреждение о падении: гибкость Haxe приводит к некоторому своеобразному поведению относительно нуля. Подробнее см. Http://haxe.org/manual/basic_types#nullability. – shiser

Смежные вопросы