Skocz do zawartości
DobryZiom

Tworzenie obiektu w klasie

Rekomendowane odpowiedzi

Witam. Chciałbym co setny raz tworzyć kilka obiektów. Wszystko robie w klasie C_WYRZUTNIA_KOLCOW. Mam takowy kod ale nie działa :/

void C_WYRZUTNIA_KOLCOW::Update()
{
    czas += 1;
    if( czas == 100 )
    {
        czas = 0;
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+20 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+40 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+60 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+80 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+100 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+120 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+140 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+160 ) ) );
        Game.RegisterActor( "MALY_KOLEC", new C_MALY_KOLEC( XE_VECTOR( Position.X+9, Position.Y+180 ) ) );
    }
}

 

błędy:

------ Build started: Project: XenoN Core Framework, Configuration: Debug Win32 ------
  XenonCoreFramework.cpp
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(335): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(335): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(335): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(335): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(336): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(336): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(336): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(336): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(337): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(337): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(337): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(337): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(338): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(338): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(338): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(338): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(339): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(339): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(339): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(339): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(340): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(340): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(340): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(340): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(341): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(341): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(341): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(341): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(342): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(342): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(342): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(342): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(343): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(343): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(343): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(343): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(344): error C2061: syntax error : identifier 'C_MALY_KOLEC'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(344): error C2660: 'XeCore::Com::C_APPLICATION::RegisterActor' : function does not take 3 arguments
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(344): error C2143: syntax error : missing ';' before ')'
c:\documents and settings\skovv\pulpit\xenon pacman\application\appdata.h(344): error C2143: syntax error : missing ';' before ')'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

 

i jeszcze jedno:

 

Mam obiekt maly_kolec. jak go zniszczyc? Sprawdzam kolizję i chciałbym aby po niej zniszczył się ten obiekt a nie wszystkie obiekty tej klassy

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

ad 1. nie widzi klasy C_MALY_KOLEC w tym miejscu, umiesc jej definicje przed klasa C_WYRZUTNIA_KOLCOW

ad 2. gdzie sprawdzasz kolizje tego obiektu?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Może walisz błąd bo silnik na pewno nie pozwala na rejestracje pojedynczo stworzonych obiektów na stercie ze względów optymalizacyjnych albo każdy obiekt, który dodajesz musi być zarządzany przez jakiś PoolAllocator i deklaracja funkcji wygląda inaczej(checknij header). Poza tym spr klasę C_MALY_KOLEC czy na pewno jest dostępna.

 

 

Co do zniszczenia(nie znam frameworka więc kilka opcji):

a) użyj smartptr, które oferuje silnik.

b)trzymaj grupę tych obiektów stworzoną wcześniej i operuj ich parametrami.

c)użyj FrameAllocatora silnika.

d)jeśli jest funkcja rejestrująca pewnie jest funkcja unregister.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tak jak pisałem wyrejestruj po prostu ten obiekt i trzymaj go sobie na stosie. Jak już alokujesz coś na stercie to użyj alokatorów dostarczanych przez bibliotekę!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

no to w tym obiekcie maly kolec, jesli nastapi kolizja to dajesz:

Game.UnregisterActor( this );

i aktor ktory to wywola zostanie wyrejestrowany

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×