2012-04-04 56 views
0

我想弄清楚.parent屬性在此方法中實現的目的以及一般以獲取此屬性的「獲取[ClassNameHere]」方法爲目的。這個Mtd的用途是什麼?

-(HudLayer*) getHud 
{ 
return (HudLayer*)[self.parent.parent.parent getChildByTag:kTagHudLayer]; 
} 
+0

我想說的主要目的是傳達糟糕的編程習慣。 「我父母的父母的父母」對節點的佈局做出了大膽的假設。只要你改變節點的層次結構,假設可能是錯誤的,這種間接性將失敗。這意味着getHUD函數將默默返回零,讓你找出原因。 – LearnCocos2D 2012-04-06 19:45:05

+0

你能解釋他到底在說什麼嗎?當他說 返回(HUDLayer *) 是他調用HUDLayer返回父節點時,這意味着什麼?整個語法真的很奇怪。 – GPP 2012-04-07 07:37:35

回答

2

從這裏顯示的方法中不可能知道細節。但.parent確實返回當前cocos對象作爲子對象所屬的Cocos父對象,精靈或圖層。從本質上講,這段代碼表明你有一個精靈或者圖層,它帶有一個擁有更多孩子和更多孩子的孩子,這是一種查找流上的大父母的方法,然後從父母中獲得一個新孩子。

就我個人而言,這似乎很sl to。我絕不會以自己的方式編碼。很難閱讀(正如你所看到的),並且擁有如此多的父母性質,這樣就爲蟲子開闢了很大的空間。如果頂級父母做了它需要做的事情而不是一個遙遠的孫子上鍊,那將是明智的。它打破了MVC模型做一點,如圖所示。

+1

對於「個人...」評論爲+1。一條高速公路難以避免的行爲和錯誤。 – YvesLeBorg 2012-04-05 20:01:17

+0

簽名並同意。# – LearnCocos2D 2012-04-06 19:45:41

1

大概類HudLayerparent屬性指向同類型的另一目的,因此具有parent屬性指向另一個HudLayer等,爬上了三個層次。然後它只發送一個getChildByTag消息給它。