我通常使用java或C++編程,最近我使用objective-c開始編程。在objective-c中尋找向量,我發現NSMutableArray似乎是最好的選擇。我正在開發一款opengl遊戲,我正在嘗試爲我的精靈創建一個紋理四邊形的NSMutableArray。下面是相關的代碼:Objective-c:將自定義對象添加到NSMutableArray
我定義紋理四邊形:
typedef struct {
CGPoint geometryVertex;
CGPoint textureVertex;
} TexturedVertex;
typedef struct {
TexturedVertex bl;
TexturedVertex br;
TexturedVertex tl;
TexturedVertex tr;
} TexturedQuad;
創建在界面的數組:
@interface Sprite() {
NSMutableArray *quads;
}
我啓動陣列和我創建基於texturedQuads「寬度「和」高度「,它們是單個精靈的尺寸,以及」self.textureInfo.width「和」self.textureInfo.height「,它們是整個精靈表的尺寸:
quads = [NSMutableArray arrayWithCapacity:1];
for(int x = 0; x < self.textureInfo.width/width; x++) {
for(int y = 0; y < self.textureInfo.height/height; y++) {
TexturedQuad q;
q.bl.geometryVertex = CGPointMake(0, 0);
q.br.geometryVertex = CGPointMake(width, 0);
q.tl.geometryVertex = CGPointMake(0, height);
q.tr.geometryVertex = CGPointMake(width, height);
int x0 = (x*width)/self.textureInfo.width;
int x1 = (x*width + width)/self.textureInfo.width;
int y0 = (y*height)/self.textureInfo.height;
int y1 = (y*height + height)/self.textureInfo.height;
q.bl.textureVertex = CGPointMake(x0, y0);
q.br.textureVertex = CGPointMake(x1, y0);
q.tl.textureVertex = CGPointMake(x0, y1);
q.tr.textureVertex = CGPointMake(x1, y1);
//add q to quads
}
}
問題是我不知道如何將四方「q」添加到數組「四邊形」。簡單的寫法[quads addObject:q]不起作用,因爲參數應該是一個id而不是TexturedQuad。我見過如何從int等創建一個id的例子,但我不知道如何使用像我的TexturedQuad這樣的對象。
謝謝!教程看起來不錯。我已經看過其他一些教程,但是當你已經瞭解其他編程語言時,其中很多教程都很慢,很無聊。這些教程看起來不錯並且直截了當。 –