2014-12-05 90 views
0

在下面的圖像(Character.cpp)中,我是否可以知道如何創建一個可以調用以存儲多個精靈的Initialize方法?我需要將Texture1SpritePosX,PosY等改爲數組嗎? 初始化方法將在我的MAIN.cpp中調用。對不起,如果解釋不夠好。這只是我的想法,但會有更好的,而不是有這麼多的數組?對象數組C++

void Character::Initialize1(string image1, float PosX1, float PosY1, float CenterX1, float CenterY1) 
{ 
    D3DXCreateTextureFromFile(Pull->GETd3ddev(), image.c_str(), &Texture1); 
    D3DXCreateSprite(Pull->GETd3ddev(), &sprite1); 
    RECT SpriteRect1; 
    SpriteRect1.top = 0; 
    SpriteRect1.bottom = 127; 
    SpriteRect1.left = 0; 
    SpriteRect1.right = 128; 
    SpritePos1 = D3DXVECTOR2(PosX1, PosY1); 
    SpriteCenter1 = D3DXVECTOR2(CenterX1, CenterY1); 
} 

void Character::Initialize2(string image2, float PosX2, float PosY2, float CenterX2, float CenterY2) 
{ 
    D3DXCreateTextureFromFile(Pull->GETd3ddev(), image.c_str(), &Texture2); 
    D3DXCreateSprite(Pull->GETd3ddev(), &sprite2); 
    RECT SpriteRect2; 
    SpriteRect2.top = 0; 
    SpriteRect2.bottom = 14; 
    SpriteRect2.left = 0; 
    SpriteRect2.right = 14; 
    SpritePos2 = D3DXVECTOR2(PosX2, PosY2); 
    SpriteCenter2 = D3DXVECTOR2(CenterX2, CenterY2); 
} 
+0

@Biffen對不起。編輯它 – Student 2014-12-05 21:23:58

+0

你可以有包含你的變量的結構數組 – kiwixz 2014-12-05 23:35:16

回答

1

在你的精靈類中創建必要的初始化方法。然後在main()創建你的精靈並調用適當的初始化方法。如果使用大量的精靈,將創建的精靈放入矢量中可能會很方便,從而減少清理代碼以及可能的其他事情。

Sprite類的一個簡單例子,名爲SpriteConfig,它只包含位置參數。

#include <iostream> 
#include <vector> 

using namespace std; 

class SpriteConfig { 
public: 
    SpriteConfig() { 
     top = 0; 
     bottom = 0; 
     left = 0; 
     right = 0; 
    } 

    void setPos(float aTop, float aBottom, float aLeft, float aRight) { 
     mTop = aTop; 
     mBottom = aBottom; 
     mLeft = aLeft; 
     mRight = aRight; 
    } 
private: 
    // position parameters 
    float mTop; 
    float mBottom; 
    float mLeft; 
    float mRight; 
}; 


int main() 
{ 
    vector<SpriteConfig*> spriteConfigs; 
    SpriteConfig *sprCfg; 

    sprCfg = new SpriteConfig(); 
    sprCfg->setPos(1,1,1,1); 
    spriteConfigs.push_back(sprCfg); 

    sprCfg = new SpriteConfig(); 
    sprCfg->setPos(2,2,2,2); 
    spriteConfigs.push_back(sprCfg); 

    // We now have a number of Sprites 
    // Add code here to do something with it. 
    // ... 

    for(vector<SpriteConfig*>::iterator it = spriteConfigs.begin(); 
     it != spriteConfigs.end(); 
     ++it) { 
     // cleanup 
     delete (*it); 
     (*it) = null; 
    } 

    return 0; 
} 
+0

非常感謝真棒指南:DD – Student 2014-12-06 07:37:55

+0

嘿@吉奧..但我該怎麼區分和調用某個精靈? – Student 2014-12-06 07:44:50

+1

如果你的精靈在一個矢量內,就像上面的例子。然後有各種方法從矢量中獲取你的精靈。例如。 'spriteConfigs.at(IDX)'。如果你想要更多的不同,你可以考慮爲你的索引創建一個定義。例如。 '#define CIRCLE 0',然後你把你的圓形精靈放在矢量的索引0處。現在你可以使用'spriteConfigs.at(CIRCLE)'來獲得你的精靈。 – Gio 2014-12-06 12:19:32