0

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の互換性のないタイプ」

4

4 に答える 4

2

よく見ると、メッセージは、メソッドsetPositionではなく、というメソッドの引数1と互換性のないタイプに関するものであることがわかりますcalculatePointOnCircleFrom。プロパティのsetPositionセッターです。position

したがって、問題は行の一部にあり、メソッドpoint1.position =の呼び出しにはありません。メソッドが返すのはCGPoint型ではないので、変数calculatePointOnCircleFrompositionプロパティはCGPoint型ではないと思います。point1calculatePointOnCircleFrom

または、呼び出していると思われるメソッドを呼び出していない可能性があります。

于 2010-11-12T04:42:52.623 に答える
0

私は完璧ではない方法で問題を解決しましたが、それは機能します。

私は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

于 2010-11-12T06:22:12.180 に答える
0

このエラーメッセージは、によって返される[self calculatePointOnCircleFrom:Player.position PointB:touchPos radius:64]タイプがのタイプと一致しないことを示していますpoint1.positionpositionCGPointですか?

于 2010-11-12T04:00:55.280 に答える
0

メソッド宣言が見つからないという警告もおそらくあります。コンパイラはメソッドが返すタイプを認識しておらず、デフォルトでidになっているようです。

于 2010-11-12T04:52:05.020 に答える