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

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

1

09.02.2011, 21:23

SFML Erste Schritte

Hi bin ja erst seit kurzem mit der SFML Bibliothek zugange wollte mal fragen wie man es hinbekommt das wenn der Mauszeiger über einen String also Text ist dieser Text aufleuchtet bzw. die Farbe ändert. bin im moment soweit:




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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#pragma comment(lib, "sfml-system-d.lib")
#pragma comment(lib, "sfml-graphics-d.lib")
#pragma comment(lib, "sfml-audio-d.lib")
#pragma comment(lib, "sfml-window-d.lib")
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <String>

int main()
{
//Fenster wird gerendert.
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Game");
    
    //sf::Music Music;
    //if (!Music.OpenFromFile("Test.wav"))
    //   return EXIT_FAILURE;
    //Music.Play();
    //Musik startet.
sf::Font MyFont;
if (!MyFont.LoadFromFile("arial.ttf", 50))
{

}
sf::String Text("Spiel starten", MyFont, 50);
sf::String Text1("Spiel beenden", MyFont, 50);


// Lädt eine Font datei.


    //Schleife startet.
    while (App.IsOpened())
    {

        sf::Event Event;
        while (App.GetEvent(Event))
        {
            if (Event.Type == sf::Mouse::Left)
                App.GetInput();
            if (Event.Type == sf::Event::Closed)
                App.Close();
        }
        

        
        App.Display();
        Text.SetPosition(300, 200);
        Text1.SetPosition(300, 300);
            App.Draw(Text);
            App.Draw(Text1);
    }
    
    return EXIT_SUCCESS;
}





Das hier war eher und versuch etwas hinzubekommen, es ist mir bekannt das das hier höchstwahrscheinlich falsch ist







C-/C++-Quelltext

1
2
3
 if (Event.Type == sf::Mouse::Left)

                App.GetInput();





Danke für die Antworten im Vorfeld
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

2

09.02.2011, 21:53

keine hilfe?
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

09.02.2011, 22:31

Bitte vermeide Doppelposts und vermeide es auch 30 Minuten(!) nach deiner Fragestellung, schon deinen Thread zu pushen, weil du noch keine Antwort bekommen hast. In einem Forum kann es auch mal etwas länger dauern, bis man eine Antwort bekommt.

Funktioniert dein sf::Mouse::Left denn ohne Fehler zu werfen? Afaik kann man damit prüfen, ob die linke Maustaste bspw. gedrückt ist.
Was du brauchst ist eher ein MouseMoved-Event.
Aus diesem Event kannst du dir dann die Position der Maus holen und kannst prüfen, an welcher Position sie sich gerade befindet und entsprechend den Text verändern, wenn nötig.

EDIT: Ansonsten könntest du es auch mit der Input-Klasse lösen.

4

09.02.2011, 22:33

keine hilfe?

Also erst mal sind ca. 30 Minuten in einem Forum nicht lange!

Zum Problem:
Du rufst die Methode Clear() nicht auf.
Les dir mal die Tutorials durch.

5

09.02.2011, 22:36

Und hier noch ein Codesnippet, wie du es machen könntest:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
sf::FloatRect TextRect = Text.GetRect();
sf::Vector2f MousePosition(App.GetInput().GetMouseX(), App.GetInput().GetMouseY());

if(TextRect.Contains(MousePosition))
{
    Text.SetColor(sf::Color(255,0,0)); // Maus über Text: Farbe -> rot
}
else
{
    Text.SetColor(sf::Color(0,0,0));  // Maus nicht über Text: Farbe -> schwarz
}


Vielleicht hilft das.

Gruß
SaRu_

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

6

10.02.2011, 07:30

soweit so gut habe versucht den codesnippet einzufügen kommt aber dashier bei raus:


1>------ Erstellen gestartet: Projekt: Game, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Game.cpp
1>c:\users\marcel\documents\visual studio 2008\projects\sf1\sf1\game.cpp(30) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\users\marcel\documents\visual studio 2008\projects\sf1\sf1\game.cpp(30) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\users\marcel\documents\visual studio 2008\projects\sf1\sf1\game.cpp(56) : error C2660: 'sf::Rect<T>::Contains': Funktion akzeptiert keine 1 Argumente
1> with
1> [
1> T=float
1> ]
1>Das Buildprotokoll wurde unter "file://c:\Users\Marcel\Documents\Visual Studio 2008\Projects\sf1\sf1\Debug\BuildLog.htm" gespeichert.
1>Game - 1 Fehler, 2 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

7

10.02.2011, 11:16

Genau deswegen habe ich kein komplettes Code-Stück gepostet, das du einfach nur kopieren musst. Du bist gerne dazu aufgerufen, auch mal selbst etwas zu tun.
Die Fehlermeldung:

Quellcode

1
error C2660: 'sf::Rect<T>::Contains': Funktion akzeptiert keine 1 Argumente

Da steht eigentlich ziemlich klar, dass die Funktion nicht nur ein Arugment akzeptiert, sondern eben irgendwie anders definiert sein muss und dass man sie nicht so verwendet, wie du sie verwendest. Wenn man sich dessen bewusst geworden ist, sucht man sich die Doku der SFML und schaut dort nach der Funktion Rect<T>::Contains und schon weiß man, was man falsch gemacht hat und was man ändern muss :).

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fred« (10.02.2011, 12:59)


8

10.02.2011, 12:40

Jo,
kryptisch ist diese Fehlermeldung bei weitem nicht. Man sollte halt auch lesen können und wissen und verstehen was sie sagt.

Wie schon gesagt: Eigeninitiative wäre hier locker mal angebracht.

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

9

10.02.2011, 13:21

sry vergessen zu bearbeiten ^^
Problem gelöst!!
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

Werbeanzeige