我希望cocos2d在坐标小于1时使用节点位置作为标准化因子,否则当坐标大于1时,我希望cocos2d像处理坐标一样正常处理Cocos2D - 添加对标准化位置的支持
对于instater位置(1,1)将定位节点在屏幕的右上角,而(.5,.5)将定位节点在屏幕中心。
我想重写代码只是所在的坐标cocos2d的传递到像下面的伪代码顶点缓冲
if (Position.x <= 1)
BufferPosition.x = Screen.Width * Position.x;
else
BufferPosition.x = Position.x;
if (Position.y <= 1)
BufferPosition.y = Screen.Height * Position.y;
else
BufferPosition.y = Position.y;
所以我的问题是在哪里会你把这个代码,这样的cocos2d这样工作有没有问题,或者你会采取istead如果它是从上面
更新显示的不同
我改变了每一个呼叫/分配什么办法在整个cocos2d库中为positionInPixels
这意味着每一次,相应的getter和setter被caled而不是CCNode的positionInPixels_成员变量。
然后我CCNode.m
改变,并setPositionInPixels
这样
setPosition两种
-(void) setPosition: (CGPoint)newPosition
{
CGSize winSize = [[CCDirector sharedDirector] winSize];
position_ = newPosition;
if (position_.x <= 1.0) {
positionInPixels_.x = position_.x * winSize.width;
}
else
{
if(CC_CONTENT_SCALE_FACTOR() == 1)
positionInPixels_.x = position_.x;
else
positionInPixels_.x = newPosition.x * CC_CONTENT_SCALE_FACTOR();
}
if (position_.y <= 1.0) {
positionInPixels_.y = position_.y * winSize.height;
}
else
{
if(CC_CONTENT_SCALE_FACTOR() == 1)
positionInPixels_.y = position_.y;
else
positionInPixels_.y = newPosition.y * CC_CONTENT_SCALE_FACTOR();
}
isTransformDirty_ = isInverseDirty_ = YES;
#if CC_NODE_TRANSFORM_USING_AFFINE_MATRIX
isTransformGLDirty_ = YES;
#endif
}
setPositionInPixels
-(void) setPositionInPixels:(CGPoint)newPosition
{
CGSize winSize = [[CCDirector sharedDirector] winSize];
positionInPixels_ = newPosition;
if (position_.x <= 1.0) {
position_.x = positionInPixels_.x/winSize.width;
}
else
{
if(CC_CONTENT_SCALE_FACTOR() == 1)
position_.x = positionInPixels_.x;
else
position_.x = newPosition.x * 1/CC_CONTENT_SCALE_FACTOR()/winSize.width;
}
if (position_.y <= 1.0) {
position_.y = positionInPixels_.y/winSize.height;
}
else
{
if(CC_CONTENT_SCALE_FACTOR() == 1)
position_.y = positionInPixels_.y;
else
position_.y = newPosition.y * 1/CC_CONTENT_SCALE_FACTOR()/winSize.height;
}
isTransformDirty_ = isInverseDirty_ = YES;
#if CC_NODE_TRANSFORM_USING_AFFINE_MATRIX
isTransformGLDirty_ = YES;
#endif
}
这是工作到目前为止,即使使用CCActionInterval标准化坐标
祝你好运,关于可维护性。我很肯定你很快就会找到x,y值<1,正常化位置> 1等合法用例,并且positionInPixels不是cocos2d 2.0版本的一部分。 – YvesLeBorg 2013-04-11 09:59:04
@YvesLeBorg我知道修改库并不是最好的做法,但在这种情况下(使用v1.x)会帮助我获得理想的结果,我希望最新版本会添加这样的功能,它会来适用于不同的屏幕尺寸。 – rraallvv 2013-04-11 10:13:54