2011-01-19 6 views
1

スプライト1にスプライト2を追加し、スプライト2をスケーリングせずにスプライト1の幅を拡大したいとします。cocos2d、CC_HONOR_PARENT_TRANSFORM_SCALE、このenumプロパティはどのように使用しますか?

以下のコードはCocos2d APIの一部です。 CCSprite.h行54、しかし、私はそれを使用する方法も、 "1 < < 2"の意味も分かりません。

基本的に、私は次のことをやっているが、それは働いていない:

[自己にaddChildを:スプライト1];

[スプライト1にaddChild:sprite2]

sprite1.scaleX = 2。

sprite2.CC_HONOR_PARENT_TRANSFORM_SCALE = false; ???

エニュームの使い方がわかりません。

typedef enum { 
//! Translate with it's parent 
CC_HONOR_PARENT_TRANSFORM_TRANSLATE = 1 << 0, 
//! Rotate with it's parent 
CC_HONOR_PARENT_TRANSFORM_ROTATE = 1 << 1, 
//! Scale with it's parent 
CC_HONOR_PARENT_TRANSFORM_SCALE  = 1 << 2, 

//! All possible transformation enabled. Default value. 
CC_HONOR_PARENT_TRANSFORM_ALL  = CC_HONOR_PARENT_TRANSFORM_TRANSLATE | CC_HONOR_PARENT_TRANSFORM_ROTATE | CC_HONOR_PARENT_TRANSFORM_SCALE, 

} ccHonorParentTransformをお願いします。

答えて

2

< < - シフトのビット操作です(私の母国語はロシア語であり、私はそれが正しいとは確信していません)。しかし、この場合、enum値を埋め込む方法なので、この状況でどのように動作するかを理解する必要はありません。 cocos2dのドキュメント親transfomrationsに応じて変換するかどうかを

- (ccHonorParentTransform) honorParentTransform [read, write, assign] から

。ヘルスバーに便利です。例:親が回転していても、ヘルスバーを回転させないでください。 重要:CCSpriteBatchNodeを使用してレンダリングされる場合にのみ有効です。

バッチレンダリングを使用していますか?

EDIT:

この行は非常に奇妙である(?それは警告を与えるものではありません)

sprite2.CC_HONOR_PARENT_TRANSFORM_SCALE = false 

あなたは

sprite2.honorParentTransform &= ~CC_HONOR_PARENT_TRANSFORM_SCALE; 

PS書く必要があります。を列挙ビット操作を使用して作成されます。これは、設定を誤ってしまうためです。たとえば、あなたはそれが有効両方 翻訳し、回転します

sprite2.honorParentTransform &= ~(CC_HONOR_PARENT_TRANSFORM_SCALE | CC_HONOR_PARENT_TRANSFORM_ROTATE); 

を書くことができますので、honorParentTransformは、あなたがそれは、構成の設定を可能にするビットマスクです - いくつかの定義済みの値を使用するだけでなく、そこの組み合わせを使用していないだけ。

ここでは、私たちの場合はビット演算 http://www.cprogramming.com/tutorial/bitwise_operators.html

についての詳細を書くことができますが、このような何かが起こっている: あなたは一例01101111のための現在のマスクを持っている(それは32ビット本当にある) をしてCC_HONOR_PARENT_TRANSFORM_SCALEはこのようなものです00001000 - 非ゼロのビットが1つだけあります。 - は反転ですので、を11101111に変換してから、現在のマスクをビット単位で加算します - したがって、4番目のビットを除くすべてのビットが保存されます!

+0

はい、私はccSpriteBatchNodeを使用していますが、どうすればhonorParentTransformを使用するのですか? – stone

+0

honorParentTransforプロパティの値をtrue、false、0,1,2,3,4に設定していますか? – stone

+0

ありがとう – stone

関連する問題