我试图返回一个CGPoint,但我做错了一些事情:
下面是我的方法:
- (CGPoint)calculatePointOnCircleFrom:(CGPoint)pointA PointB:(CGPoint)pointB radius:(float)rd {
float sryy = pointA.y - pointB.y;
float srxx = pointA.x - pointB.x;
float sry = pointA.y + sryy;
float srx = pointA.x + srxx;
float kpx = pointA.x + cos(atan2(pointA.y - sry, pointA.x - srx)) * rd;
float kpy = pointA.y + sin(atan2(pointA.y - sry, pointA.x - srx)) * rd;
return CGPointMake(kpx, kpy);
}
方法中的代码运行良好,但我在初始化时做了一些错误的事情。
这里我调用了这个方法:
point1.position = [self calculatePointOnCircleFrom:Player.position PointB:touchPos radius:64];
并得到愚弄错误:“‘setPosition:’的参数1的类型不兼容”
发布于 2010-11-12 12:52:05
可能还有一个警告,说它找不到方法声明。这听起来像是编译器不知道该方法返回什么类型,而是缺省为id。
发布于 2010-11-12 12:00:55
该错误消息告诉您[self calculatePointOnCircleFrom:Player.position PointB:touchPos radius:64]
返回的类型与point1.position
的类型不匹配。position
是CGPoint吗?
发布于 2010-11-12 14:22:12
我用一种不完美的方法解决了这个问题,但它是有效的。
我返回know a NSValue:
- (NSValue *)calculatePointOnCircleFrom:(CGPoint)pointA PointB:(CGPoint)pointB radius:(float)rd {
float sryy = pointA.y - pointB.y;
float srxx = pointA.x - pointB.x;
float sry = pointA.y + sryy;
float srx = pointA.x + srxx;
float kpx = pointA.x + cos(atan2(pointA.y - sry, pointA.x - srx)) * rd;
float kpy = pointA.y + sin(atan2(pointA.y - sry, pointA.x - srx)) * rd;
return [NSValue valueWithCGPoint:CGPointMake(kpx, kpy)];
}
并像这样调用方法:
NSValue *pos = [self calculatePointOnCircleFrom:Player.position PointB:touchPos radius:64];
CGPoint cgpos = [pos CGPointValue];
point1.position = cgpos;
感谢大家的帮助:D
https://stackoverflow.com/questions/4161413
复制相似问题