Problem mit eigener Scrollfunktion...



  • So, ich hab mir diesen Code hier geschrieben, als eine Scrollfunktion für eine Karte... Das klappt auch mit 1 TFighter auf dem Panel (MainObjects) ganz gut... Wenn ich aber jetzt mehr als ein Objekt (TFighter) im Panel hab, verschwindet das 2. Objekt einfach... D.h., es wird vermutlich irgendwo hin gescrollt, wo es gar nicht hingehört... Aber eigentlich sollte das ja genau so funktionieren wie beim 1. Objekt... Kann mir jemand sagen was ich machen muss, damit es richtig läuft?

    //Alle Komponenten auf ihre Eigenschaften hin untersuchen
        for(int i=0;i<MainObjects->ComponentCount;i++)
        {
            //Objekte abbilden, die noch nicht da waren...
            if(MainObjects->Components[i]->ClassNameIs("TFighter"))
            {
                dynamic_cast<TFighter*>(MainObjects->Components[i])->Left=(dynamic_cast<TFighter*>(MainObjects->Components[i])->XPos-Horizontal->Position+5.5)*64;
                dynamic_cast<TFighter*>(MainObjects->Components[i])->Top =(dynamic_cast<TFighter*>(MainObjects->Components[i])->YPos-Vertical  ->Position+5.5)*64;
            }
        }
    


  • Hallo,

    das ist jetzt so, schwer zu sagen. Wo kommen denn Horizontal und Vertical her? Bist du deinen Code mal mit dem Debugger durchgegangen?
    Desweiteren würde ich der Übersichtlichkeit halber nur einmal casten.
    Z.Bsp. so

    //Alle Komponenten auf ihre Eigenschaften hin untersuchen
        for(int i=0;i<MainObjects->ComponentCount;i++)
        {
            //Objekte abbilden, die noch nicht da waren...
            TFighter *fight = dynamic_cast<TFighter*>(MainObjects->Components[i]);
            if(fight != NULL)
            {
                fight->Left=(fight->XPos-Horizontal->Position+5.5)*64;
                fight->Top =(fight->YPos-Vertical  ->Position+5.5)*64;
            }
        }
    

    Ciao

    [ Dieser Beitrag wurde am 26.06.2003 um 10:59 Uhr von Braunstein editiert. ]

    [ Dieser Beitrag wurde am 26.06.2003 um 11:00 Uhr von Braunstein editiert. ]



  • Meinst du mit "Scrollen" das Bewegen deiner Objekte über den Schirm? Denn üblicherweise versteht man darunter das Verschieben des Hintergrundes bzw. einer grösseren Fläche, und davon is in deinem Code ja nichts zu sehen.

    Und wozu die float-Werte? Bildschirmpixel (und damit Objektpositionen) gibt's doch nur als Integer.



  • Nee Horizontal und Vertical sind TScrollBars...
    @Jansen: Ich bewege damit die Objekte auf der Leinwand...
    So, dass es wie eine Scrollfunktion wirkt, nur dass ich keine Ahnung hatte, wie ich es anders hätte machen können...
    Und das mit den Float-Werten ist im Moment Egal, *64 gibt das wieder n Integer... Immer...

    Das mit dem nur 1 Mal casten werde ich mal ausprobieren, übersichtlicher ists bestimmt, vielleciht funktioniert das ganze ja auch so... Ein Fehler ist in meinem Code da oben ja anscheinend nciht, da es ja beim 1. Mal funktioniert...

    Danke für die Hilfe...



  • Problem hat sich erledigt, hab das ganze in ne einzelne Prozedur gepackt, die beim Scrollen aufgerufen wird, und jetzt läuft es... 😕

    Sachen gibt's...


Anmelden zum Antworten