我在C++/DirectX中創建了一個遊戲,並且遇到了存儲子畫面的問題。目前,我可以創建一個精靈,然後將它存儲在一個矢量中,這對於一個精靈來說是完美的。但是,當我插入另一個精靈時,之前精靈的紋理屬性被刪除。我將包含一些屏幕截圖以及一些代碼。將類存儲在向量中C++
我懷疑的問題是對象沒有放入向量中,而是依賴於用於創建精靈的臨時對象。下面是一些截圖:
https://www.dropbox.com/s/g5xdlaqf35w6q57/1.png
https://www.dropbox.com/s/xmcyv611nqc27xc/2.png
而且一些代碼:
// d2World.h
class d2World
{
public:
// Some functions
vector<d2Sprite> spritesList;
// More stuff
private:
d2Sprite *tempSprite;
// Other private variables
};
// d2World.h
// Some other functions
// A new object is created by re-assigning it
tempSprite = new d2Sprite();
// When a the sprite is completed, add it to the vector
spritesList.push_back(*tempSprite);
// More stuff here
我不明白的是爲什麼它只是受着紋理財產?
感謝您的幫助。
編輯: 下面是d2Sprite
類的頭代碼:
class d2Sprite
{
public:
d2Sprite(void);
~d2Sprite(void);
void Load(LPDIRECT3DTEXTURE9 tex);
void Position(int x, int y);
int x, y, frame, frameW, frameH, columns;
float Rotation;
D3DXVECTOR3 GetPosition();
D3DXVECTOR2 Scale;
D3DXVECTOR2 Center;
D3DXVECTOR2 Translation;
LPDIRECT3DTEXTURE9 texture;
D3DCOLOR colour;
};
'd2Sprite'的定義是什麼?你能把它壓縮成一個能證明問題的小例子嗎? – 2013-05-08 16:53:13
這裏是d2Sprite類:'類d2Sprite \t { \t公共: \t \t d2Sprite(無效); \t \t〜d2Sprite(void); \t \t void Load(LPDIRECT3DTEXTURE9 tex); \t \t void Position(int x,int y); \t \t INT的x,y,框架,框架原理,frameH,列; \t \t浮動旋轉; \t \t \t \t D3DXVECTOR3爲getPosition(); \t \t D3DXVECTOR2量表; \t \t D3DXVECTOR2 Center; \t \t D3DXVECTOR2翻譯; \t \t LPDIRECT3DTEXTURE9質感; \t \t D3DCOLOR color; \t};'這是你在做什麼? – Antony 2013-05-08 16:54:49
請通過編輯您的問題添加額外的代碼,代碼在評論中無法閱讀。 – 2013-05-08 16:57:03