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

JRJ

Treue Seele

Beiträge: 113

Wohnort: Tirol

Beruf: Schüler

  • Private Nachricht senden

21

16.06.2011, 19:03

Zitat

@JRJ: afaik wird mit SetColor() einfach die Farbe des ganzen Sprites geändert. Sobald es also ein mehrfarbiges Bild ist, kannst du das vergessen ;).

Bei mir funktioniert dieser Code problemlos:

C-/C++-Quelltext

1
2
deineSprite.SetColor(sf::Color(0,0,0));  //ganz schwarz
deineSprite.SetColor(sf::Color(255,255,255));   //normal

22

16.06.2011, 19:04

ich habs fast geschaft, das einzige was nervt ist das des so blinkt, ich hab schon sf::Sleep() umgestellt aber des ist immernoch da

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
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

int main()
{
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Test");
    sf::Image image;
    if (!image.LoadFromFile("Test.jpg"))
    {
        return EXIT_FAILURE;
    }
    sf::Sprite sprite;
    sf::Sprite blend;
    sprite.SetImage(image);
    sprite.SetPosition(0.f, 0.f);
    App.Draw(sprite);
    blend.SetPosition(sprite.GetPosition().x, sprite.GetPosition().y);
    blend.Resize(sprite.GetSize().x, sprite.GetSize().y);
    while(App.IsOpened())
    {
        int x;
        for(x=0;x!=255;++x)
        {
        blend.SetColor(sf::Color(0, 0, 0, x));
        App.Draw(blend);
        App.Display();
        sf::Sleep(0.03);
        }
    }
        return 0;
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »C++-Coder« (16.06.2011, 19:10)


JRJ

Treue Seele

Beiträge: 113

Wohnort: Tirol

Beruf: Schüler

  • Private Nachricht senden

23

16.06.2011, 19:15

Das Sleep brauchst du nicht.
Du kannst mit App.SetFramerateLimit(60) die Framerate begrenzen.

24

16.06.2011, 19:19

@JRJ
danke, aber mein problem ist das es ständig so blinkt
bei deiner methode passiert es so "schlagartig", wenn ich eine variable einsetze geht es gar nicht mehr bei deiner methode :(

JRJ

Treue Seele

Beiträge: 113

Wohnort: Tirol

Beruf: Schüler

  • Private Nachricht senden

25

16.06.2011, 19:27

Wenn die for-Schleife einmal durchläuft wird das Bild dunkler wenn aber dann die for-Schleife von vorne beginnt wird das Bild wieder auf ganz hell gesetzt, darum blinkt es.
Hoffe das war verständlich.

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
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>

int main()
{
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Test");
    App.SetFramerateLimit(60);

    sf::Image image;
    if (!image.LoadFromFile("Bild.png"))
    {
        return EXIT_FAILURE;
    }
    sf::Sprite sprite(image);    Das Bild kann man im Konstruktor setzten
    //sprite.SetImage(image); darum ist das sinnlos.

    int x = 255;    //x am Anfang auf volle Helligkeit setzten

    while(App.IsOpened())
    {
        App.Clear();

        if(x>0)      //x darf nicht kleiner als 0 werden weil es sonst wieder zu blinken beginnt
            x--;

        sprite.SetColor(sf::Color(x,x,x));  //Die Helligkeit einstellen
        App.Draw(sprite);   //und zeichnen

        App.Display();
    }
        return 0;
}


Dieser Code funktioniert.
Hier wird nur eine Schleife verwendet, was die ganze Sache nicht so kompliziert macht.

26

16.06.2011, 19:29

danke :thumbsup:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »C++-Coder« (16.06.2011, 19:49)


valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

27

16.06.2011, 19:56

Zitat

@JRJ: afaik wird mit SetColor() einfach die Farbe des ganzen Sprites geändert. Sobald es also ein mehrfarbiges Bild ist, kannst du das vergessen ;).

Bei mir funktioniert dieser Code problemlos:

C-/C++-Quelltext

1
2
deineSprite.SetColor(sf::Color(0,0,0));  //ganz schwarz
deineSprite.SetColor(sf::Color(255,255,255));   //normal


Hm...Hab's gerade ausprobiert, und es funktioniert wirklich. Ich war immer der Meinung, dass die Funktion die Farbe einfach einheitlich für das ganze Sprite setzt. Wieder was gelernt :D.
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

28

16.06.2011, 20:00

danke an alle :thumbsup:
@valentin ich schau mir noch mal alle sfml tut an

29

16.06.2011, 20:24

Nur mal so am Rande, die Event-Schleife ist ein MUSS, wenn du auf Windows setzt, da die SFML ansonsten das interne WinAPI
Fenster nicht aktualisiert. Auch wenn die Schleife leer ist, sollte sie existieren ;)

30

16.06.2011, 20:28

@.:!Batzer!:.:
ok ich werde es zukünftig machen
ich habs davor wegen der konsole nicht gemacht

Werbeanzeige