2011-10-17 219 views
1

我正在分配一个CGFloat animatedDistance,并且出现此错误。不兼容类型'双'

这里我指定值animatedDistance

static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3; 
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 140; 

heightFraction是CGFloat的为好。

if (orientation == UIInterfaceOrientationPortrait || 
    orientation == UIInterfaceOrientationPortraitUpsideDown) 
{ 
    animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction); 
} 
else 
{ 
    animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction); 
} 

什么类型应该是animatedDistace?有人能帮我吗?

回答

0

使用此得到一个向量... CGpoint vector = ccpSub(cgpoint 1, cgpoint 2); 如果你想要双/浮点值,那么做到这一点:

CGpoint.location

任何你正在努力寻找的坐标,然后分配一个浮点数到CGPoint.location.y另一个浮点数到CGPoint.location.x

您需要cocos2d。我认为。

+0

'CGPoint'没有'location'成员;它*是一个位置。那么'ccpSub'如何从另一个点中减去一个点,帮助提问者将一个距离乘以一个分数? –

1

floor返回double。在某些平台上,CGFloatfloatanimatedDistance应该输入为double(如果需要,您可以将其转换为CGFloat)。

+0

double给我同样的错误! – HardCode

+0

您可以在'double'和'float'之间隐式转换。你可能会得到一个警告,这取决于你设置编译器的偏执狂,但这不是一个硬性错误,除非你已经要求它是如此。 –

0

对我来说听起来像你宣称的animatedDistance持有某种指针,如NSNumber *或结构,如CGSize。无论哪种方式,您都不能在那里分配CGFloat

如果animatedDistance包含一个NSNumber对象,则围绕该值创建一个对象。回到你问这个问题时,要做到这一点的方法是[NSNumber numberWithDouble:floor(…)]。现在,您可以使用@(floor(…))

如果animatedDistance拥有CGSize或其他结构,您将不得不自己决定如何从单一数字有意义地转换为您想要的结构类型。