2012-04-02 54 views
2

一般問題:您可以使用對象的存在作爲Haxe中if語句的條件嗎?如果是這樣,怎麼樣?在Haxe的if語句中使用對象的存在

具體問題:我正在學習Haxe遊戲開發,並使用HaxePunk遊戲庫/框架/引擎。關於使用它的教程並不多,但遵循FlashPunk(它基於的ActionScript遊戲庫/引擎/框架)教程很簡單。但是,碰撞檢測在HaxePunk中的工作方式是,如果發生碰撞,碰撞方法會返回碰撞的對象。

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

我試過對Null類型進行測試,但似乎沒有工作。

+9

'if(b!= null)'應該可以工作 – kirilloid 2012-04-02 22:20:56

+2

Herp,derp。資本化將是我的終結。謝謝! – mkosler 2012-04-02 22:25:20

+2

@kirilloid:該評論應該是一個答案;) – back2dos 2012-04-03 12:02:07

回答

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 2013-10-30 04:31:22