2014-05-04 43 views
0

我只是現在試圖使用CCSprite在舞臺上顯示精靈。關於拋出'std :: length_error'實例後調用

字符類是一個成功的CCSprite類。

我寫的代碼如下:

bool HellowWorld::init()方法:

bool HelloWorld::init() 
{ 

int Indexes[9] = {5,11,15,16,17,19,20,21,25}; 
int x; 
int y; 
CCArray *filename = new CCArray(); 



filename->addObject(new CCString("1-1.png")); 
filename->addObject(new CCString("2-1.png")); 
filename->addObject(new CCString("1-2.png")); 
filename->addObject(new CCString("2-3.png")); 
filename->addObject(new CCString("2-3.png")); 
filename->addObject(new CCString("1-2.png")); 
filename->addObject(new CCString("2-3.png")); 
filename->addObject(new CCString("1-1.png")); 
filename->addObject(new CCString("1-1.png")); 




for(int i=0;i<9;i++){ 

    const char *MyImage = ((CCString*)filename->objectAtIndex(i))->getCString(); 
    characters *chara = (characters*)CCSprite::create(MyImage); 

    x = Indexes[i]%HORIZONTAL_AXIS; 
    y = Indexes[i]/HORIZONTAL_AXIS; 


    CCPoint point = ccp(MARGIN_WIDTH + PIPE_WIDTH * x,MARGIN_HEIGHT + PIPE_HEIGHT * y); 
    chara->setPosition(point); 


    this->addChild(chara,1); 


} 

不過,我收到以下錯誤消息:

libc++abi.dylib: terminating with uncaught exception of type std::length_error: basic_string::_S_create 

我應該如何解決這個問題?

+0

請不要投。 –

+0

感謝您的評論。 如果我沒有投射,則錯誤如下所示。 「不能初始化一個類型爲'cocos2d :: CCSprite *」的右值類型爲'Characters *'的變量 – user3321541

+0

那是因爲你正在創建一個精靈而不是字符實例 – LearnCocos2D

回答

0

這裏肯定有一些編碼問題。

const char *MyImage = ((CCString*)filename->objectAtIndex(i))->getCString(); 
characters *chara = (characters*)CCSprite::create(MyImage); 

你正在做很多鑄造,它很混亂。您投到(characters*)只是錯誤的。

  1. 字符似乎需要子類CCSprite*,我希望它的確如此。

  2. ,那麼你可以這樣做:

    字符*甜心=字符::創建(filename-> objectAtIndex(I) - >的getValue());

  3. 如果你的for循環你有一個硬編碼9。您可以將其更改爲filename->count(),這樣它總是循環到CCArray的大小。

這裏是CCSprite文檔:http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/d8/de9/group__sprite__nodes.html#ga0e84a5bd213dc1556503a4120243a390

相關問題