Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Problem ze sprawdzaniem danych w konsoli

Ostatnio zmodyfikowano 2013-07-22 09:36
Autor Wiadomość
domin568
Temat założony przez niniejszego użytkownika
[SFML] Problem ze sprawdzaniem danych w konsoli
» 2013-07-21 22:15:32
Witam , ucze się programować w SFML i jako że jestem dociekliwy to chce sprawdzić jak wszystkie funkcje działają , pracuje w trybie debug, więc mam otworzoną konsole , do niej wypisuje liczby , żebym wiedział o co chodzi . Jednak gdy wywołuje funkcje która sprawdza czy scroll został przekręcony , to wywołują mi się zupełnie inne funkcje (np położenie myszki w osi X ) , używałem ich wcześniej , no ale kod usunąłem , więc kompilator nie ma prawa ich "pamiętać" . Tutaj kod .

C/C++
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <SFML\Window.hpp>

int _tmain( int argc, _TCHAR * argv[] )
{
    using namespace std;
    sf::Event zdarzenie;
   
    sf::Window okno( sf::VideoMode( 800, 600, 32 ), "Drugi Program " );
   
    while( okno.isOpen() )
    {
       
        while( okno.pollEvent( zdarzenie ) )
        {
           
           
            cout << zdarzenie.mouseWheel.delta << endl;
           
            if( zdarzenie.type == sf::Event::Closed )
            {
                okno.close();
            }
            if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::F )
            {
                okno.create( sf::VideoMode( 1920, 1080, 32 ), "Drugi Program " );
               
            }
           
            if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
            {
                okno.close();
            }
            if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
                 okno.close();
           
        }
        okno.display();
    }
   
    return 0;
}
Z góry dzięki za pomoc :)
P-88503
Admixior
» 2013-07-22 00:02:37
I nic dziwnego że takie coś wychodzi. Nie sprawdzasz if-em czy na pewno ta struktura którą ty zakładasz jest odpowiednia (jeśli wiesz co to unia to zapewne wiesz o co chodzi, a jak nie to przeczytaj). w jednej zmiennej (tj. w jednym miejscu w pamięci) masz przesyłane wszystkie komunikaty. Więc jeśli nie sprawdzisz czy to jest scroll tylko bezwiednie wypiszesz to potraktujesz ten kawałek pamięci jako delta ze struktury mouseWheel. Twórcy SFML założyli (pewnie dla oszczędności pamięci) że informacje dla komunikatów będą przesyłane w ten sposób.
Niestety ale ten kawałek pamięci przy TYM RODZAJU komunikatu oznacza delte , a przy INNYM RODZAJU komunikatu (mousemove) oznacza pozycje x myszki.
Więc musisz sprawdzać:
if( zdarzenie.type == sf::Event::MouseWheelMoved )
 bo inaczej nic Ci z tego.
P-88510
domin568
Temat założony przez niniejszego użytkownika
» 2013-07-22 09:36:30
Ok. dzięki za pomoc . Zamykam .
P-88524
« 1 »
  Strona 1 z 1