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

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

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

Регистрация: Jan 2012
Сообщений: 142
По умолчанию Можно ли отследить что какая кнопка была нажата

Можно ли отследить какая кнопка была нажата последней и в зависимости от этого перейти к определенному кадру. И как одно из условий, если никакая кнопка не была нажата.
Код AS3:
//ButtonContainer.as
package  {
 
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.events.MouseEvent;
	import flash.events.Event;
 
 
	public class ButtonContainer extends MovieClip {
		public var button1:SimpleButton;
		public var button2:SimpleButton;
		public var button3:SimpleButton;
		public var button4:SimpleButton;
		private var _index:int = 1;
		public function ButtonContainer() {
			// constructor code
			button1.addEventListener(MouseEvent.CLICK, buttonsHandler);
			button2.addEventListener(MouseEvent.CLICK, buttonsHandler);
			button3.addEventListener(MouseEvent.CLICK, buttonsHandler);
			button4.addEventListener(MouseEvent.CLICK, buttonsHandler);
		}
 
		private function buttonsHandler(event:MouseEvent):void{
			switch(event.target.name){
				case "button1":
					this.setChildIndex(this["button1"], this.numChildren-1);
					this.setChildIndex(this["button2"], this.numChildren-2);
					this.setChildIndex(this["button3"], this.numChildren-3);
					this.setChildIndex(this["button4"], this.numChildren-4);
					_index = 1;
					break;
				case "button2":
					this.setChildIndex(this["button2"], this.numChildren-1);
					this.setChildIndex(this["button1"], this.numChildren-2);
					this.setChildIndex(this["button3"], this.numChildren-3);
					this.setChildIndex(this["button4"], this.numChildren-4);
					_index = 2;
					break;
				case "button3":
					this.setChildIndex(this["button3"], this.numChildren-1);
					this.setChildIndex(this["button2"], this.numChildren-2);
					this.setChildIndex(this["button1"], this.numChildren-3);
					this.setChildIndex(this["button4"], this.numChildren-3);
					_index = 3;
					break;
					case "button4":
					this.setChildIndex(this["button4"], this.numChildren-1);
					this.setChildIndex(this["button2"], this.numChildren-2);
					this.setChildIndex(this["button1"], this.numChildren-3);
					this.setChildIndex(this["button3"], this.numChildren-3);
					_index = 4;
					break;
			}
			this.dispatchEvent(new Event(Event.CHANGE));
		}
 
		public function get index():int{
			return _index;
		}
	}
 
}
Код AS3:
//MenuItem.as
package  {
 
	import flash.display.*;
	import flash.events.*;
	import flash.external.ExternalInterface;
 
	public class MenuItem extends MovieClip {
		public var buttonContainer:ButtonContainer;
		public var slogan:MovieClip;
 
		public function MenuItem() {
			// constructor code
			this.addFrameScript(0, addedFrameScript);
			this.addFrameScript(24, addedFrameScript); 
			this.addFrameScript(50, addedFrameScript); 
			this.addFrameScript(76, addedFrameScript); 
			this.addFrameScript(102, addedFrameScript); 
			buttonContainer.addEventListener(Event.CHANGE, buttonContainerHandler);
			gotoAndPlay(2);
			// Загрузка в контейнер по умолчанию
			slogan.slogan.text = "Мы работаем, чтобы радоваться за Ваш бизнес";
			ExternalInterface.available ? ExternalInterface.call("loadHtmlContenet", {catid:1, id:163, Itemid:3}) : null;
		}
 
		private function buttonContainerHandler(event:Event):void{
			if(event.target is ButtonContainer){
				var container:ButtonContainer = event.target as ButtonContainer;
				var avalable:Boolean = ExternalInterface.available;
				switch(container.index){
					case 1:
						gotoAndPlay(2);
						slogan.slogan.text = "Мы работаем, чтобы радоваться за Ваш бизнес";
						avalable ? ExternalInterface.call("loadHtmlContenet", {catid:1, id:163, Itemid:3}) : null;
						break;
					case 2:
						gotoAndPlay(26);
						slogan.slogan.text = "Мы работаем, чтобы радоваться за Ваш бизнес";
						avalable ? ExternalInterface.call("loadHtmlContenet", {catid:1, id:164, Itemid:3}) : null;
						break;
					case 3:
						gotoAndPlay(52);
						slogan.slogan.text = "Мы работаем, чтобы радоваться за Ваш бизнес";
						avalable ? ExternalInterface.call("loadHtmlContenet", {catid:1, id:165, Itemid:3}) : null;
						break;
					case 4:
						gotoAndPlay(78);
						slogan.slogan.text = "Мы работаем, чтобы радоваться за Ваш бизнес";
						avalable ? ExternalInterface.call("loadHtmlContenet", {catid:1, id:166, Itemid:3}) : null;
						break;
				}
			}
		}
 
		private function addedFrameScript():void{
			stop();
		}
	}
 
}

Старый 20.11.2012, 15:05
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 2  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Создаёте класс кнопки (например ButtonClass), задаёте ей аттрибут frame (к примеру), при обработке нажатия gotoAndPlay(ButtonClass(e.target).frame).
Можете также прицепить к ней параметры вызова ExternalInterface, чтобы не было этого switch в buttonContainerHandler(), а ещё я б вам посоветовал в buttonsHandler() пройтись циклом по всем кнопкам, и те что не нажаты (e.target.name != "button1" , если нажата button1) уже обработать, ведь если кнопок будет много (а всё может быть, заказчик - он такой), то у вас будет ещё больше избыточного кода.

Старый 20.11.2012, 15:31
imediasun вне форума Посмотреть профиль Отправить личное сообщение для imediasun Найти все сообщения от imediasun
  № 3  
Ответить с цитированием
imediasun

Регистрация: Jan 2012
Сообщений: 142
Могли бы вы отобразить это в коде, что то не могу пока понять, низкий уровень AS3
Или объясните подробнее с примерами кода, не могу понять

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

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

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


 


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


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