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

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

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
По умолчанию Отображение настроек в диалоговом окне

Извиняюсь, что зачастил с вопросами тут на форуме, но столкнулся с ситуацией, которая поставила меня в тупик, и больше обратиться некуда. Для изучения экшнскрипта 3.0 пишу игру во Flash CS5 + FlashDevelop. В игре есть главное меню, в котором при клике на пункте «Опции» создается и выводится на экран экземпляр класса Settingsdialog потомок мувиклипа. В нем расположено несколько компонентов - чекбоксы, радиобаттоны, слайдеры и т.д. Есть статический класс GameSettings, в котором хранятся настройки игры. С Settingsdialog’а с помощью компонентов осуществляется редактирование свойств класса GameSettings. Судя по трассируемым переменным редактирование проходит успешно. Затем я закрываю Settingsdialog и хочу открыть его заново с тем состоянием компонентов, которое отображает сделанные настройки. Для этого в конструкторе этого класса я прописал функции, которые обращаются к GameSettings, и приводят значения компонентов в соответствующее состояние. Опять же судя по результатам трассировки (и свойств GameSettings и состояний компонентов) это проходит успешно, значения присваиваются, но окно открывается с настройками выставленными по умолчанию!!! Вот пример кода из класса Settingsdialog (лишнее вырезал, оставил только методы, которые должны выставлять компоненты в нужное состояние). В комментариях значения второй трассировки переменных при втором открытии окна (после того как дефолтные настройки были изменены).
Код:
package dialogs
{

	import fl.events.SliderEvent;
	import flash.display.MovieClip;
	import dialogs.DialogWindow; 
	import flash.events.Event;
	import flash.events.MouseEvent;
	import main.GameSettings;
	import fl.controls.*;
	import fl.lang.Locale;


	public class Settingsdialog extends DialogWindow 
	{
		private var settings:GameSettings;


		public function Settingsdialog()
		{
			slider.addEventListener(SliderEvent.CHANGE, sliderChanged);
			languageCombobox.addEventListener (Event.CHANGE, languageSelected); 
			nosound.addEventListener (Event.CHANGE, onRadioButton); //это три радиобаттона, обрабатываются одной функцией
			gamesound.addEventListener (Event.CHANGE, onRadioButton);
			allsounds.addEventListener (Event.CHANGE, onRadioButton);
			configureRadioAndCheck ();
			configureSlider ();
		}
		public function configureRadioAndCheck ():void
		{
			trace (GameSettings._nosound + "nosound"); // по дефолту false, во второй раз, после редактирования показывает true как надо
			if (GameSettings._nosound)
			{
				nosound.selected = true;
				trace (nosound.selected + " nosound.selected") // тут тру – как надо, но при отрисовке окна выбран не этот радиобаттон, а дефолтовый
			}
			if (GameSettings._gamesound)
			{
				gamesound.selected = true;
			}
			if (GameSettings._allsound)
			{
				allsounds.selected = true;
			}
}
			
			
		public function configureSlider ():void
		{
			slider.value = GameSettings.DIFFICULTY;
			trace (GameSettings.DIFFICULTY + "difficulty");
			trace (slider.value + "slider"); // Значение слайдера соответствует значению диффикульти, но отображается опять же дефолтовое значение
		}
Добавлено через 53 секунды
извиняюсь за криво расставленные скобки :-(

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
RadioButtonGroup не пробовали использовать?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.09.2011, 20:25
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 3  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
а в чем разница? вешать обработчик отдельно на радиобаттоны или на группу в целом?

Добавлено через 46 часов 36 минут
Кстати насчет этого вопроса, разобрался в чем причина. Если на клипе, в настройках компонента, стоит галочка selected, то он будет загружаться выбранным независимо от кода приведенного выше. Это очень неудобно, и не ужели никто, кто работал с Flash CS5 с этим не сталкивался? Видимо, придется создавать компоненты программно, что в моем случае очень неудобно.

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

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

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


 


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


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