Da pa ocekivao sam da nece biti bas jasno evo skracenog koda za ovo...upravo tako,dostavljanje
te reference na objekat je problem.
Code:
#include <stdio.h>
#include "SDL/SDL.h"
#include "SDL/SDL_mixer.h"
#include "../core/gameengine.h"
#include "gamestate.h"
#include "intro.h"
#include "../core/tajmer.h"
cIntro cIntro::m_Intro;
class MyMouseListener : public gcn::MouseListener
{
void mouseReleased(gcn::MouseEvent& mouseEvent)
{
std::cout << "Mouse released: " << mouseEvent.getX() << " " << mouseEvent.getY() << std::endl;
// text->setText("Neki text"); << text je polje za text koje je private u klasi cIntro,njemu treba pristupiti
// iz ovog listenera kada se pritisne dugme
}
};
MyMouseListener myMouseListener;
void cIntro::Init(cGameEngine* game)
{
...
text = new gcn::TextField("");
text->setDimension(gcn::Rectangle(0, 0, 150, 20));
text->setPosition(326, 180);
top->add(text); //top je root kontejner koji drzi gui elemente
...
dugme = new gcn::Button("Kreni");
dugme->setPosition(455,141);
dugme->addMouseListener(&myMouseListener); //listener se dodeljuje dugmetu
top->add(dugme);
...
}
void cIntro::Cleanup(cGameEngine* game){...}
void cIntro::Pause(){...}
void cIntro::Resume(){...}
void cIntro::HandleEvents(cGameEngine* game){...}
void cIntro::Update(cGameEngine* game){ ...}
void cIntro::Draw(cGameEngine* game){ ...}
itd.
ovo je skraceni intro.h
Code:
class cIntro : public cGameState
{
public:
void Init(cGameEngine* game);
void Cleanup(cGameEngine* game);
void Pause();
void Resume();
void HandleEvents(cGameEngine* game);
void Update(cGameEngine* game);
void Draw(cGameEngine* game);
static cIntro* Instance() {
return &m_Intro;
}
protected:
cIntro() { }
private:
static cIntro m_Intro;
...
gcn::TextField* text;
gcn::Button* dugme;
...
};
to je skraceni code za klasu cIntro. Dakle u istom fajlu imam klasu tog listenera koji se nasledjuje
iz gcn::MouseListener (radi se o Guichan gui biblioteci za igrice). cIntro i gcn::MouseListener
nisu niukakvoj vezi.