• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SFML mouse.getPosition() w wątku

Object Storage Arubacloud
+3 głosów
701 wizyt
pytanie zadane 27 czerwca 2015 w C i C++ przez Pan Kulomb Pasjonat (18,630 p.)
edycja 28 czerwca 2015 przez Pan Kulomb

Witam, ostatnio odczytywałem współrzędne myszy w wątku, jednak wtedy program się sypał.

Wie ktoś może dlaczego tak się dzieje?

#include "Button.h"

Button button("3D");
sf::RenderWindow window(sf::VideoMode(500, 500), "Graph");
sf::Event event;
sf::Mouse mouse;

void thread_function()
{
    while(window.isOpen())
    {
        sf::Vector2f position = sf::Vector2f(mouse.getPosition(window));
        button.setPosition(position);
        sf::sleep(sf::seconds(1));
    }
}

int main()
{
    window.setFramerateLimit(60);

    button.setWindow(window);
    button.setMouse(mouse);

    sf::Thread thread(&thread_function);
    thread.launch();

    while(window.isOpen())
    {
        window.clear(sf::Color(31, 31, 31));

        while(window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
                window.close();
        }

        window.draw(button);
        window.display();
    }
}

Dałem tutaj opóźnienie 1s, bo wtedy przynajmniej przez kilka sekund się nie sypie, a później po prostu okno znika, program przestaje działać (mimo, że nie klikałem na krzyżyk).

2 odpowiedzi

+2 głosów
odpowiedź 27 czerwca 2015 przez Dorion300 Szeryf (90,250 p.)
Aktualnie mogę wywnioskować że coś skopałeś.

Ale niestety nie mogę określić co, ponieważ posiadam niewystarczającą ilość informacji.

Czy mógłbyś podać kod?

Kod programu znacząco ułatwi nam pracę.
komentarz 28 czerwca 2015 przez Pan Kulomb Pasjonat (18,630 p.)
już jest kod
0 głosów
odpowiedź 27 czerwca 2015 przez daan Pasjonat (17,640 p.)
Może coś więcej ? Jakiś kod ? Może program nie sypał się z tego powodu ? :)
komentarz 28 czerwca 2015 przez Pan Kulomb Pasjonat (18,630 p.)
kod wstawiony
komentarz 28 czerwca 2015 przez daan Pasjonat (17,640 p.)

wyrzuciłem z niego obiekt Button, i sleep, uruchomiłem i działa więc wnioskuje, że problem jest w klasie Button :) Poniżej masz kod, który u mnie działa i sie nie wywala :P

#include <SFML\Graphics.hpp>
#include <iostream>
sf::RenderWindow window(sf::VideoMode(500, 500), "Graph");
sf::Event event;
sf::Mouse mouse;

void thread_function()
{
	while (window.isOpen())
	{
		sf::Vector2f position = sf::Vector2f(mouse.getPosition(window));
		std::cout << position.x << " " << position.y << std::endl;
		//sf::sleep(sf::seconds(1));
	}
}

int main()
{
	window.setFramerateLimit(60);

	sf::Thread thread(&thread_function);
	thread.launch();

	while (window.isOpen())
	{
		window.clear(sf::Color(31, 31, 31));

		while (window.pollEvent(event))
		{
			if (event.type == sf::Event::Closed)
				window.close();
		}
		window.display();
	}
}

 

Podobne pytania

+1 głos
3 odpowiedzi 537 wizyt
0 głosów
1 odpowiedź 165 wizyt
pytanie zadane 31 grudnia 2020 w C i C++ przez NieMaJuzNazw Użytkownik (890 p.)
+1 głos
2 odpowiedzi 1,294 wizyt
pytanie zadane 29 maja 2015 w C i C++ przez majkkel Użytkownik (530 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...