2016-10-18 13 views
1

私はsfmlを使用しているC++の小さなゲームに取り組んでいます。 TABボタンを押すと、画面の右側に4つのボタンがある小さなメニューが表示されます。私はclass Buttonを作成し、クラスにはsf::Textという属性があります。ここで私はメニューを描画するために使用するコードです。リストイテレータのsf :: Text属性を取得できません

このコードを実行する前に、すべてのボタンが別の機能で作成されています。 rectInGameMenuはちょうど長方形で、うまくいきます。 win.draw(*currentButton);は正常に動作しますが、期待されるボタンのテキストはありません。だから私はGetButtonText()を使うとプログラムがクラッシュする。これでボタンにテキストを描くことができます。私はメモリ内のその場所を読み取ることができないというエラーが表示されます(違反は0x550030BDにあります)。フランス語で申し訳ありませんが、私はフランス語でVisual Studioを使用しています。私は本当にこの問題を解決するために何ができるのか分かりません。私はちょっと研究しましたが、同じ問題を抱えている人はいませんでした...私はこの問題を数日間は受けましたが、私はそれを解決するために何ができるのか本当に分かりません。これを行うより良い方法があれば、私に教えてください。

EDIT:

ここでは、私は私のボタンを作成するコードは次のとおりです。

Button aButton; 
aButton = Button(10, "Ressources/Fonts/font.ttf"); 
aButton.SetButtonText("Button Text"); 
aButton.setSize(Vector2f(246, 60)); 
aButton.setFillColor(Color(22, 235, 65)); 
aButton.setPosition(773, 120); 
aButton.GetButtonText().setPosition(240, 30); 
rightSideMenuButtons.push_back(aButton); 

これは、ゲームウィンドウが作成されたときに呼び出される関数です。

Button::Button(int inFontSize, string inFontButton) 
{ 
    fontSize = inFontSize; 
    fontButton.loadFromFile(inFontButton); 
} 

void Button::SetButtonText(string inButtonText) 
{ 
    buttonText.setString(inButtonText); 
    buttonText.setFont(fontButton); 
    buttonText.setCharacterSize(fontSize); 
    buttonText.setColor(Color(255, 255, 255)); 
} 

これらの関数によって使用されているメソッドです。今ここに私は私のclass Buttonに使用私の方法があります。 buttonTextText属性です。 fontButtonFont属性です。これはあなたに少し助けてくれることを願っています。

答えて

0

これらをチェックしてください:

  • は、あなたのテキストのフォントが正しく
  • はここ

をレンダリングすることは、私のエンジンから、関数の前に、それを文字列を与えるあなたのテキスト

  • に色を付けlaodedていることを確認しますゲームにテキストを追加する:

    void Actor::addRenderedElement(sf::Text * txt, const char * font_name, const char* text, sf::Color color) 
    { 
        if (checkGameData()) { 
         sf::Font* _font = gamedata->getFont(font_name); 
         if (_font != nullptr) { 
          txt->setFont(*_font); 
          txt->setString(text); 
          txt->setColor(color); 
          renderedShapes.push_back(txt); 
         } 
         else 
          std::cout << "Invalid font name " << font_name << " for " << name << std::endl; 
        } 
    } 
    

    のEt installe L'ホルンシュルビジュアル・;)

    EDIT:編集したコードから :
    ボタンも形状のようですので、あなたはそれをテクスチャを与えたことをあなたは確かにありますか?
    フォントが正しく読み込まれていること、エラー処理が表示されないことをどうでしたか
    GetButtonText()の機能はありますか?
    ボタンにdraw()関数をオーバーロードしてテキストを描画しないのはなぜですか?
    rightSideMenuButtonsアレイに新しいボタンを追加しますか?

    これは機能していますか?

    win.draw(currentButton->GetButtonText()); 
    
  • +0

    ありがとう、私は今夜帰宅するときにそれを試してみます。そして、はい、私はおそらく英語バージョンhahahahaに切り替えるでしょう! – Matduss

    +0

    フォントが正しく読み込まれていること、テキストに色が付いていること、文字列がありますが、それでも良いことは確認しました。もう少し研究を重ねるうちに、これがポインターの問題である可能性が高いことがわかりました。私は解決策を探し続けるか、あるいは自分のやり方を変えるだけです。 – Matduss

    +0

    何が間違っているか把握するためにコードをもう少し必要とします – Treycos

    関連する問題