Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.11.2011, 11:30
Roman_Konyukhov вне форума Посмотреть профиль Отправить личное сообщение для Roman_Konyukhov Найти все сообщения от Roman_Konyukhov
  № 1  
Ответить с цитированием
Roman_Konyukhov

Регистрация: Oct 2011
Сообщений: 18
По умолчанию SimpleButton как сбрасывать состояние Over

Замечено, если удалить SimpleButton со сцены, в тот момент, когда над ним находится указатель мыши (состояние Over), а затем переместить указатель в другое место и вновь добавить кнопку SimpleButton на сцену, у этой кнопки так и останется состояние over, пока указатель мыши снова не пройдет над этой кнопкой.

Как программно сбрасывать состояние в зависимости от того находится ли указатель мыши над кнопкой или нет?

Старый 29.11.2011, 12:07
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 2  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Может стоит создавать новый инстанс?
Состояние over "сбрасывается", когда кнопка получает событие MouseEvent.MOUSE_OUT. Если до прохождения этого события убрать кнопку, увести мышку, и снова сделать кнопку видимой - не вижу ничего странного, что кнопка, не обработав никаких событий смиренно ждёт новых приказов оставаясь в последнем указанном ей состоянии.
__________________
Дебаггер не предлагать

Старый 29.11.2011, 12:24
Roman_Konyukhov вне форума Посмотреть профиль Отправить личное сообщение для Roman_Konyukhov Найти все сообщения от Roman_Konyukhov
  № 3  
Ответить с цитированием
Roman_Konyukhov

Регистрация: Oct 2011
Сообщений: 18
Что значит создать новый инстанс? (не понял термин) Есть ли какие-нибудь готовые или универсальные решения, для того, чтоб программно сбросить состояние кнопки? Кто как делает?

Старый 29.11.2011, 12:53
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 4  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Как вариант, делать кнопке mouseEnabled = false, а за тем, через фрейм или 1 мс удалять со сцены. За это время, в следующем тике, эта кнопка получит событие о том, что мышка ушла с объекта и её состояние будет дефолтным. После этого, можно добавлять и все будет гуд. Не забудь вернуть mouseEnabled = true.

Старый 29.11.2011, 14:23
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 5  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
для программного "сброса" можно попробовать SimpleButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT); Это как бы съэмитирует убирание курсора с кнопки.

Старый 29.11.2011, 15:14
dsdbonus вне форума Посмотреть профиль Отправить личное сообщение для dsdbonus Найти все сообщения от dsdbonus
  № 6  
Ответить с цитированием
dsdbonus

Регистрация: Sep 2011
Адрес: http://infinityapps.ru
Сообщений: 36
Roman_Konyukhov создать новый инстанс, это значит создать новый экземпляр класса, т.е. его объект. В данном случае класс SimpleButton. Если на старую кнопку не где не храниться ссылка, то сборщик мусора удалит её из памяти и все будет хорошо.

Старый 29.11.2011, 15:49
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 7  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Если класс не имеет необходимого функционала, нужно не костыли плодить, а расширить компонент и добавить нужный функционал в него. А если это невозможно или опять же костыльно, то написать свой компонент, и опыт, и в будущем пригодится. Написать свою кнопку ничего сложно. Можно посмотреть как это реализовано в других библиотеках.
__________________
http://www.chessmax.ru

Старый 29.11.2011, 16:06
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 8  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
даже не знаю что вы делаете с кнопкой что она так себя ведет. В простейшем примере когда при наведении кнопка удаляется/скрывается и потом обратно добавляется/становится_видимой состояние у неё вполне нормальное (по крайней мере у меня так)

Старый 29.11.2011, 17:07
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
упражнения с бубном дали таки способ
кнопка удаляется\добавляется по любой клавише
Код AS3:
public class Main extends Sprite
{
	private var but:Symbol1;
 
	public function Main():void
	{
		but = new Symbol1();
		addChild(but);
		stage.addEventListener(KeyboardEvent.KEY_DOWN, stage_keyDown);
		// без этого имеем сабжевый эффект
		but.addEventListener(Event.ADDED, but_added);
	}
 
	private function but_added(e:Event):void
	{
		if (e.target == e.currentTarget)
		{
			// 'передергивание' фокуса решает вопрос
			var focus:InteractiveObject = stage.focus;
			stage.focus = but;
			stage.focus = focus;
		}
	}
 
	private function stage_keyDown(e:KeyboardEvent):void
	{
		but.parent ? removeChild(but) : addChild(but);
	}
}


Последний раз редактировалось silin; 29.11.2011 в 17:09.
Старый 29.11.2011, 17:39
Roman_Konyukhov вне форума Посмотреть профиль Отправить личное сообщение для Roman_Konyukhov Найти все сообщения от Roman_Konyukhov
  № 10  
Ответить с цитированием
Roman_Konyukhov

Регистрация: Oct 2011
Сообщений: 18
Спасибо за помощь.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.