我想添加一个sprite2到sprite1,缩放sprite 1的宽度而不缩放sprite2。
我找到了Cocos2d api的以下代码;CCSprite.h第54行,但我不知道如何使用它,也不知道"1<<2“是什么意思。
基本上,我正在执行以下操作,但它不起作用:
self addChild: sprite1;
sprite1 addChild: sprite2
sprite1.scaleX = 2;
sprite2.CC_HONOR_PARENT_TRANSFORM_SCALE =假;?
是啊,不知道怎么用枚举。
谢谢
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;
发布于 2011-01-20 05:06:39
<< -是一个小小的转换操作(我的母语是俄语,我已经按原样翻译了--我不确定它是否正确)。但是您不需要了解它在这种情况下是如何工作的,因为在这种情况下,它只是一种填充枚举值的方法。
来自cocos2d文档
- (ccHonorParentTransform) honorParentTransform [read, write, assign]是否根据其父变换进行变换。对健康吧很有用。不要旋转健康条,即使父级旋转也是如此。重要信息:只有在使用CCSpriteBatchNode呈现时才有效。
你在使用批渲染吗?
编辑:
这一行非常奇怪(它不会给出警告吗?)
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 -它只有一个非零位。~ - is反转:所以它将00010000转换成11101111,然后你用你的当前掩码进行逐位加法-所以所有的位都将被保留,除了第四个位!
https://stackoverflow.com/questions/4739312
复制相似问题