4

私が取り組んでいるアプリで UIImageView の場所を示す配列を作成しようとしています。私がやろうとしているのは、配列を使用して、x、y、z 座標を使用して「プレーヤー」画像の位置を格納できることです。私が達成しようとしているスクリプトは次のようになります

NSArray *location[3];
-(IBAction)startup;{
[location addObject: player.center.x];
[location addObject: player.center.y];
[location addObject: playerheight];
}

したがって、この配列にアクセスして、画面上の「プレーヤー」を「3次元」で移動できますが、CGpoint値をNSValuesに変換して配列で使用できるようにする方法がわかりません。配列内でこれを行う簡単な方法は?

4

4 に答える 4

11

浮動小数点値をオブジェクトに変換するには、NSNumber を使用します。NSValue には、CGPoint などの幾何学的タイプのラッパーがあります。どちらもあなたのために働くでしょう。

[NSValue valueWithCGPoint:player.center];

[NSNumber numberWithFloat:player.center.x];
[NSNumber numberWithFloat:player.center.y];
于 2010-06-04T00:17:43.537 に答える
7

最初の答えに加えて。配列から読みCGPoint戻す必要がある場合は、次のようなものを使用できます。

CGPoint point = [(NSValue *)[pointsArray objectAtIndex:i] CGPointValue];
于 2010-06-04T00:54:47.587 に答える
0

NSArrayである必要がありますか?構造体の配列を使用してみませんか?

typedef struct {
    CGPoint location;
    CGFloat height;
} PlayerLocation;

PlayerLocation players[3];

players[0].location = player.center;
players[0].height   = playerheight;

または、設計によっては、x、y、z座標をivarとして含むObjective-Cクラスを宣言し、それらのオブジェクトをNSArrayに格納する方が理にかなっている場合があります。

@interface PlayerLocation : NSObject {
  CGPoint location;
  CGFloat height;
}
@end
于 2010-06-04T01:11:28.840 に答える
0

addObjectまた、メソッドがないことに注意してくださいNSArray(NSArray の作成後にオブジェクトを追加することはできません)。あなたがしたいNSMutableArray

それ以外の:

NSArray *location[3];

おそらく、次のようなものが必要です。

NSMutableArray *location = [NSMutableArray arrayWithCapacity:3];
于 2010-06-04T00:45:24.820 に答える