SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Реализация кнопок в программе
В этой теме 6 ответов, 4 участника, последнее обновление Heisenberg 8 года/лет, 4 мес. назад.
-
АвторСообщения
-
Скажите пожалуйста, как сделать так, чтобы при наведении курсора на спрайт, менялся его внешний вид, а при нажатии на него кнопкой мыши выполнялись определенные действия?
вот по прямоугольнику если наводишь if (IntRect(364, 330, 290, 40).contains(Mouse::getPosition(window)))
а это проверка на нажатие мыши if (Mouse::isButtonPressed(Mouse::Left))C++123456789if (IntRect(364, 330, 290, 40).contains(Mouse::getPosition(window))){mainMenuSprite.setColor(Color::Yellow);MenuNum = 1;}if (Mouse::isButtonPressed(Mouse::Left))if (MenuNum == 1)return 1;То есть, функции, которая проверяет наведен ли курсор на спрайт нет? Жаль. Если спрайт меняет положение, такой способ не прокатит
C++12345678910111213141516171819202122232425262728sf::FloatRect getRect() const{return sf::FloatRect(getPosition().x - getSize().x / 2, getPosition().y - getSize().y / 2, getSize().x, getSize().y);}bool contains(sf::Vector2f pos){if(getRect().contains(pos)){return true;}else return false;}void Inside(sf::Vector2f mousePos){if(contains(mousePos)){if(!m_isInsideMouse){m_isInsideMouse = true;}}else if(m_isInsideMouse){m_isInsideMouse = false;}}прокатит) следить просто надо за спрайтом во время нажатияя спрашивать координаты
И вот ещё какой вопрос волнует. Если кнопка круглая и нам надо, чтобы при наведении курсора строго на неё она светилась, то мы никак не сможем это сделать? Даже если бы существовала функция, проверяющая наведён ли курсор на спрайт, это было бы невозможно, так как сам спрайт имеет прямоугольную форму. То есть, как только курсор входит в область спрайта, кнопка начинает светится, даже если курсор ещё не дошел до неё.
C++1234567891011121314Метод который возвращает расстояние до точки.getDistance(sf::Vector2f pos){return sqrt(pow((getPosition().x - pos.x),2) + pow((getPosition().y - pos.y),2));}if(ringButton.getDistance(mousePos) <= ringButton.getSize().x/2.f){m_isInside = true;}else{m_isInside = false;} -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.