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

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

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

Регистрация: Mar 2012
Сообщений: 61
По умолчанию Menu navigation

Дорогие форумчане-программисты... подскажите мне, пожалуйста... как написать код программы, чтобы после нажатия выбранной кнопки цвет (розовый) текста в кнопке должен измениться на другой (белый) . После нажатия на другую кнопку из Меню - та станет белым, а предыдущая выбранная кнопка возвращается розовым.

Код AS3:
import flash.events.Event;
 
navigation.btn_MenuHome.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuAbout.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuTraining.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuTest.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuReviews.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuContact.addEventListener(MouseEvent.CLICK, butClick);
 
function butClick(e: Event = null)
{
	switch (e.target.name)
	{
		case "btn_MenuHome":
		outputText.text = "Home";
		break;
 
		case "btn_MenuAbout":
		outputText.text = "About";
		break;
 
		case "btn_MenuTraining":
		outputText.text = "Training";
		break;
 
		case "btn_MenuTest":
		outputText.text = "Test";
		break;
 
		case "btn_MenuReviews":
		outputText.text = "Reviews";
		break;
 
		case "btn_MenuContact":
		outputText.text = "Contact";
		break;
	}
}
Вложения
Тип файла: swf Navigation-MenuButton-Content-Switch.swf (249.7 Кб, 22 просмотров)


Последний раз редактировалось mariamarfi; 29.04.2014 в 14:04.
Старый 25.04.2014, 22:44
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
У меня не работают компоненты адоби, но вот приблизительно так можно сделать -
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
	public class Main extends Sprite 
	{
		private static const PINC:uint = 0xFF6986;
		private static const WHITE:uint = 0xF8FAFF;
		private static const LILAC:uint = 0xBB63CC;
 
		private const BUTTON_WIDTH:int = 70;
		private const BUTTON_HEIGHT:int = 45;
 
		private var _currentButton:Sprite;
		private var _container:Sprite;
 
 
		public function Main() 
		{
			_container = new Sprite();
			super.addChild(_container);
 
			var button:Sprite;
			var label:TextField;
			var offsetX:int;
 
 
 
			for (var i:int = 0; i < 8; i++) 
			{
				button = createButton(BUTTON_WIDTH, BUTTON_HEIGHT, LILAC);
				button.x = offsetX;
				offsetX += BUTTON_WIDTH + 5;
				label = createLabel(i.toString());
				button.addChild(label);
				_container.addChild(button)
			}
 
			_container.addEventListener(MouseEvent.MOUSE_UP, container_mouseUpHandler);
		}
 
		private function container_mouseUpHandler(event:MouseEvent):void 
		{
			var button:Sprite = event.target as Sprite;
			var label:TextField;
			if (button != _currentButton)
			{
 
				if (_currentButton != null)
				{
					label = _currentButton.getChildAt(0) as TextField;
					label.setTextFormat(defauilTextFormat());
 
				}
 
				_currentButton = button;
				label = _currentButton.getChildAt(0) as TextField;
				label.setTextFormat(pincTextFormat());
			}
		}
		private function createLabel(text:String):TextField
		{
			var label:TextField = new TextField();
			label.defaultTextFormat = defauilTextFormat();
			label.mouseEnabled = false;
			label.text = text;
 
			return label;
		}
		private function defauilTextFormat():TextFormat
		{
			var textFormat:TextFormat = new TextFormat();
			textFormat.size = 40;
			textFormat.bold = true;
			textFormat.color = WHITE;
 
			return textFormat;
		}
 
		private function pincTextFormat():TextFormat
		{
			var textFormat:TextFormat = new TextFormat();
			textFormat.size = 40;
			textFormat.bold = true;
			textFormat.color = PINC;
 
			return textFormat;
		}
		private function createButton(w:Number, h:Number, color:uint):Sprite
		{
			var button:Sprite = new Sprite();
			button.graphics.beginFill(color);
			button.graphics.drawRect(0, 0, w, h);
			button.graphics.endFill();
 
			return button;
		}
 
	}
}
Добавлено через 12 минут
Вы наверняка будете использовать встроенные компоненты, по этому нужно обратить внимание лишь на строки ниже. Смысл в том, чтобы все кнопки сложить в один контейнер и подписать его на клик.
В обработчике клика вытаскивать кнопку, у неё лейбел и уже его свойству текст задавать цвет.
И так же сделать поле текущая кнопка, чтобы отменять у предыдущей розовый цвет.
Код AS3:
private var _currentButton:Sprite;
private var _container:Sprite;
private function container_mouseUpHandler(event:MouseEvent):void 
{
	var button:Sprite = event.target as Sprite;
	var label:TextField;
	if (button != _currentButton)
	{
 
		if (_currentButton != null)
		{
			label = _currentButton.getChildAt(0) as TextField;
			label.setTextFormat(defauilTextFormat());
 
		}
 
		_currentButton = button;
		label = _currentButton.getChildAt(0) as TextField;
		label.setTextFormat(pincTextFormat());
	}
}
Цитата:
Pink Floyd плачет...
Шарик все таки отскочил чтоль?)


Последний раз редактировалось Akopalipsis; 26.04.2014 в 00:46.
Старый 26.04.2014, 00:15
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Akopalipsis
Pink - розовый. Pinc - выдуманный язык. C англ тоже беда, да чтож такое то...

Добавлено через 1 минуту
Pink Floyd плачет...
__________________
Марк Tween

Старый 26.04.2014, 00:31
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Да ладно, у него равномерно получилось опечататься в названии обоих методов изменения цвета.
Цитата:
defauilTextFormat
Цитата:
pincTextFormat
Причём их вызовы выглядят так же.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Mar 2012
Сообщений: 61
Код AS3:
import flash.events.Event;
import flash.display.SimpleButton;
import flash.display.DisplayObjectContainer;
import flash.text.TextFieldAutoSize;
import flash.text.TextField;
 
var _currentBtn:SimpleButton; // Текущая кнопка
 
navigation.btn_MenuHome.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuAbout.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuTraining.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuTest.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuReviews.addEventListener(MouseEvent.CLICK, butClick);
navigation.btn_MenuContact.addEventListener(MouseEvent.CLICK, butClick);
 
function butClick(e: Event = null)
{
	switch (e.target.name)
	{
		case "btn_MenuHome":
		outputText.text = "Home";
		break;
 
		case "btn_MenuAbout":
		outputText.text = "About";
		break;
 
		case "btn_MenuTraining":
		outputText.text = "Training";
		break;
 
		case "btn_MenuTest":
		outputText.text = "Test";
		break;
 
		case "btn_MenuReviews":
		outputText.text = "Reviews";
		break;
 
		case "btn_MenuContact":
		outputText.text = "Contact";
		break;
	}
	changeColor(e.target as SimpleButton);
}
 
//====Изменение цвета текущей кнопки=====//
function changeColor(btn:SimpleButton):void
{
	if(_currentBtn)
	{
		(_currentBtn.upState as TextField).textColor=0xFDBDF9;
	}
	_currentBtn = btn;
	//trace(btn.upState);
	(btn.upState as TextField).textColor=0xF8FAFF;
}

При компиляции выдаётся ошибка.... почему?:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Fon_fla::MainTimeline/changeColor()
at Fon_fla::MainTimeline/butClick()
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Fon_fla::MainTimeline/changeColor()
at Fon_fla::MainTimeline/butClick()
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Fon_fla::MainTimeline/changeColor()
at Fon_fla::MainTimeline/butClick()
Вложения
Тип файла: rar Fon & Hard & Menu - копия2.rar (10.5 Кб, 7 просмотров)
Тип файла: swf Fon & Hard & Menu - копия2.swf (394.3 Кб, 22 просмотров)


Последний раз редактировалось mariamarfi; 26.04.2014 в 14:02. Причина: Добавление файлов
Старый 26.04.2014, 14:06
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Попробуйте e.currentTarget

Добавлено через 9 минут
У вас в кнопках статические текстовые поля. Тем временем вы обращаетесь к спрайту кнопки принимая его за TextField и пытаетесь у него вызвать textColor.
__________________
There is no thing in this world that is not simple.

Старый 26.04.2014, 15:11
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Создаю кнопку и лейблу присваиваю значение. Затем btn.textField.defaultTextFormat задаю текст формат.
Компилирую, долю секунды кнопки на сцене нет, но есть надпись желаемого цвет в нулевых координатах.
Затем появляется кнопка с моим лейблем но черного цвета. Почему? Опять глюк или в чем-то другом?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
Создаю кнопку и лейблу присваиваю значение. Затем btn.textField.defaultTextFormat задаю текст формат.
Компилирую, долю секунды кнопки на сцене нет, но есть надпись желаемого цвет в нулевых координатах.
Затем появляется кнопка с моим лейблем но черного цвета. Почему? Опять глюк или в чем-то другом?
Покажите пожалуйста ваш код, если можно.

Старый 26.04.2014, 16:50
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 9  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вот, сделал с текст форматом, но потом все переделывать ища проблему и на этом и оставил.
Меня не вдохнавляют стандартные компоненты.
Код AS3:
package
{
	import fl.controls.Button;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
	public class Main extends Sprite 
	{
		public function Main() 
		{
			var _group:Sprite = new Sprite();
			_group.addEventListener(MouseEvent.MOUSE_UP, group_mouseUpHandler);
			super.addChild(_group);
 
			var btn:Button;
 
			var offsetX:Number = 0;
 
			for (var i:int = 0; i < 1; i++) 
			{
				btn = new Button();
				btn.x = offsetX;
				offsetX += btn.width + 5;
 
				btn.label = 'assd';
				btn.textField.textColor = 0x52AD25;
				_group.addChild(btn);
			}
		}
		private static const PINK:uint = 0x52AD25;
		private static const WHITE:uint = 0xFFF9F9;
 
		private var _currentButton:Button;
		private function group_mouseUpHandler(event:MouseEvent):void 
		{
			var btn:Button = event.target as Button;
 
 
			if (btn != _currentButton)
			{
				var textField:TextField;
 
				if (_currentButton != null)
				{
					textField = _currentButton.textField;
					textField.textColor = WHITE;
				}
 
				_currentButton = btn;
				_currentButton.textField.textColor = PINK;
			}
		}
 
		private function whiteTextFormat():TextFormat
		{
			var textFormat:TextFormat = new TextFormat();
			textFormat.color = 0x52AD25;
 
			return textFormat;
		}
 
	}
 
}

Старый 26.04.2014, 17:37
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
У меня вообще не получилось изменить цвет в кнопке (fl.controls.Button). Он всегда чёрный почему-то. Может так и надо.. не знаю.

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

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

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


 


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


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