Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.07.2014, 16:23

SFML Mouse Cursor bei der View mit bewegen ?

Hallo,

Ich war gestern dabei einige meiner Projekte zu durchwühlen. Bis mir dann schließlich ein Projekt aufviel das schon etwas älter war und ich es nie beendete hatte. Weil, ich an einem gewissen Punkt nicht weiter kam.
Ich wusste nämlich nicht wie ich in SFML einen Mouse Cusor mit der View mit bewege. Denn den Cousor hatte ich selbst erstellt und denn Window Coursor unsichtbar gemacht so das ich meinen an die aktuelle Stelle rendern
konnte. Das Problem ist halt nur das der Coursor relativ zum Fenster ist und wenn ich dann die View bewege wird der von mir erstellte Coursor auch nur im Fenster gerendert zumindestens verschiebt sich die Position.
Also meine Frage: Wie kann ich denn selbsterstellten Coursor mit der View bewegen ?

Freue mich über jede Antwort.

Ps: Beim bewegen der View kann ich die Maus bewegen nur die Position meines Coursorsprites wird dann nicht mehr auf die aktuelle Position des Windowcursor gerendert.

MFG
Sceiwen

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

02.07.2014, 16:31

Das klingt eher so als hättest Du die Render-Position Deines Cursors nicht verschoben. Wenn Du die View um 100 nach rechts schiebst, musst Du auch die Cursor-Position um 100 nach rechts schieben. Mehr gibt's dazu glaub ich einfach nicht zu sagen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

02.07.2014, 17:22

Wäre es nicht einfacher, den Cursor im Standard-View zu rendern? Gilt doch für alle GUI-Overlays auch, sonst muss man ja immer alles mitverschieben, ist doch auch doof.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

02.07.2014, 17:49

Geht genauso, klar.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

02.07.2014, 17:56

Wäre es nicht einfacher, den Cursor im Standard-View zu rendern? Gilt doch für alle GUI-Overlays auch, sonst muss man ja immer alles mitverschieben, ist doch auch doof.
Die Idee hört sich gut an doch wie setzte ich das um ?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

02.07.2014, 18:18

Erstell einen neuen View und setz den?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

02.07.2014, 18:31

Erstell einen neuen View und setz den?

Habe ich ja schon gemacht doch wie mache ich ihn abhängig vom Cursor ?

Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

8

02.07.2014, 19:02

Wenn du den View bewegst, bewegst du den Cursor in die gleiche Richtung um den gleichen Wert mit.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

9

02.07.2014, 21:20

Zitat

Die Idee hört sich gut an doch wie setzte ich das um ?

Vielleicht hilft ja das ein bisschen weiter.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int main()
{
    RenderWindow window( VideoMode( 800, 600 ), "Testwindow" );
    sf::RectangleShape shape;
    shape.setSize( { 40, 100 } );

    sf::RectangleShape cursor;
    cursor.setSize( { 20, 20 } );
    cursor.setFillColor( sf::Color::Red );
    cursor.setPosition( { 20, 20 } );

    sf::View view( { 0, 0 }, { 800, 600 } );

    while( !sf::Keyboard::isKeyPressed(sf::Keyboard::Space) )
    {
        window.clear();
        window.setView( view );
        window.draw( shape );
        window.setView( window.getDefaultView() );//wichtig!
        window.draw( cursor );
        window.display();
        view.move( { 0.001f, 0.001f } );
    }

    return 0;
}


Der Cursor wird seine Position nicht verändern während du die View bewegst.

Mfg,
Maxomann

10

09.07.2014, 21:12

Zitat

Die Idee hört sich gut an doch wie setzte ich das um ?

Vielleicht hilft ja das ein bisschen weiter.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int main()
{
    RenderWindow window( VideoMode( 800, 600 ), "Testwindow" );
    sf::RectangleShape shape;
    shape.setSize( { 40, 100 } );

    sf::RectangleShape cursor;
    cursor.setSize( { 20, 20 } );
    cursor.setFillColor( sf::Color::Red );
    cursor.setPosition( { 20, 20 } );

    sf::View view( { 0, 0 }, { 800, 600 } );

    while( !sf::Keyboard::isKeyPressed(sf::Keyboard::Space) )
    {
        window.clear();
        window.setView( view );
        window.draw( shape );
        window.setView( window.getDefaultView() );//wichtig!
        window.draw( cursor );
        window.display();
        view.move( { 0.001f, 0.001f } );
    }

    return 0;
}


Der Cursor wird seine Position nicht verändern während du die View bewegst.

Mfg,
Maxomann

Danke ist hilfreich ^^

Werbeanzeige