0

このメソッドで .parent プロパティが達成する目的と、このプロパティが呼び出されることを特徴とする「get [ClassNameHere]」メソッドの目的を理解しようとしています。

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

2 に答える 2

2

ここに示した方法だけでは詳細を知ることはできません。しかし、.parent は、現在の cocos オブジェクトが子として属する Cocos の親、スプライト、またはレイヤーを返します。基本的に、このコードは、より多くの子とそれらの子のより多くの子を持つスプライトまたはレイヤーがあることを示唆しています。これは、ストリームの上流にある大きな親が誰であるかを見つけ、その親から新しい子を取得する方法です。 .

個人的にはかなりずさんな気がします。私は自分でそのようにコーディングすることは決してありません。(ご覧のとおり) 読みにくく、このように非常に多くの親プロパティが一緒に並べられていると、バグの余地が大きくなります。遠い孫がチェーンを上るよりも、一番上の親が必要なことをした方が賢明です。ここに示すように、MVC モデルを少し壊します。

于 2012-04-05T04:09:24.890 に答える
1

おそらく、クラスHudLayerにはparent同じ種類の別のオブジェクトをparent 指すプロパティがあり、別の HudLayer を指すプロパティを持つなど、3 レベル上昇します。次に、getChildByTagメッセージを送信するだけです。

于 2012-04-05T01:09:19.400 に答える