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

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

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

Регистрация: Jul 2011
Сообщений: 15
По умолчанию Доступ к кнопке из другого класса

Здравствуйте. Есть два класса StartPage и Game. В StartPage созданы кнопки. Есть ли возможность подключить к кнопкам слушатели из класса Game?
Код AS3:
package components 
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
 
	public class StartPage extends Sprite
	{
		private static const URL:String = "planeLib.swf";
		private static const START:String = "startPage";
		private static const BTN_PLAY:String = "btn_play";
		private static const BTN_RULES:String = "btn_rules";
		private static const BTN_about:String = "btn_about";
 
		private var contentLoaderInfo:LoaderInfo;
 
		private var startPage:MovieClip;
		public static var btn_Play:SimpleButton;
		public var btn_Rules:SimpleButton;
		public var btn_about:SimpleButton;
 
		public function StartPage()
		{
			addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
		}
		private function onAddedToStage(e:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
			var loader:Loader = new Loader();
			var request:URLRequest = new URLRequest(URL);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete);
			loader.load(request);
		}
		private function onLoadingComplete(e:Event):void
		{
			contentLoaderInfo = e.target as LoaderInfo;
			var oStartPage:Class = contentLoaderInfo.applicationDomain.getDefinition(START) as Class;
			startPage = new oStartPage();
			addChild(startPage);
 
			var oPlay:Class = contentLoaderInfo.applicationDomain.getDefinition(BTN_PLAY) as Class;
			btn_Play = new oPlay();
			addChild(btn_Play);
			btn_Play.x = 547;
			btn_Play.y = 285;
 
			var oRules:Class = contentLoaderInfo.applicationDomain.getDefinition(BTN_RULES) as Class;
			btn_Rules = new oRules();
			startPage.addChild(btn_Rules);
			btn_Rules.x = 528;
			btn_Rules.y = 374;
 
			var oabout:Class = contentLoaderInfo.applicationDomain.getDefinition(BTN_ABOUT) as Class;
			btn_About = new oAbout();
			startPage.addChild(btn_About);
			btn_About.x = 520;
			btn_About.y = 465;
		}
	}
}
Код класса Game:
Код AS3:
package
{
	import components.*;
 
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	[SWF(width="800", height="600", frameRate="30")]
 
	public class Game extends Sprite
	{
		private var startPage:StartPage;
 
		public function Game():void
		{
			startPage = new StartPage();
			addChild(startPage);
			StartPage.btn_Play.addEventListener(MouseEvent.CLICK, traceFunc);
		}
		public function traceFunc(e:MouseEvent):void
		{
			trace("traceFunc");
		}
	}
}
Трэйс не работает. В чем может быть проблема?


Последний раз редактировалось bogomol17; 21.02.2012 в 17:51.
Старый 21.02.2012, 17:52
Deimos747 вне форума Посмотреть профиль Отправить личное сообщение для Deimos747 Найти все сообщения от Deimos747
  № 2  
Ответить с цитированием
Deimos747
 
Аватар для Deimos747

Регистрация: Mar 2011
Сообщений: 243
Здесь 2 варианта:
1) Вешать слушатели в StartPage и выкидывать события и уже ловить их
2) объявить кнопки не как локальные переменные, а как приватные поля и возвращать их по get-запросу

Старый 21.02.2012, 17:57
bogomol17 вне форума Посмотреть профиль Отправить личное сообщение для bogomol17 Найти все сообщения от bogomol17
  № 3  
Ответить с цитированием
bogomol17

Регистрация: Jul 2011
Сообщений: 15
про get-запрос сам подумывал, просто искал более простое решение.

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

Регистрация: Mar 2011
Сообщений: 243
По хорошему стилю лучше события, но более муторно. Проще get только public переменные

Старый 21.02.2012, 18:01
bogomol17 вне форума Посмотреть профиль Отправить личное сообщение для bogomol17 Найти все сообщения от bogomol17
  № 5  
Ответить с цитированием
bogomol17

Регистрация: Jul 2011
Сообщений: 15
Deimos747 так у меня переменные public, или я что-то не понимаю?

Старый 21.02.2012, 18:05
Deimos747 вне форума Посмотреть профиль Отправить личное сообщение для Deimos747 Найти все сообщения от Deimos747
  № 6  
Ответить с цитированием
Deimos747
 
Аватар для Deimos747

Регистрация: Mar 2011
Сообщений: 243
Код AS3:
var oStartPage:Class
а надо
Код AS3:
public var oStartPage:Class
в идеале
Код AS3:
public var oStartPage:MovieClip

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У Вас в момент подписки на событие еще нет экземпляра кнопки.
__________________
Reality.getBounds(this);

Старый 21.02.2012, 18:26
bogomol17 вне форума Посмотреть профиль Отправить личное сообщение для bogomol17 Найти все сообщения от bogomol17
  № 8  
Ответить с цитированием
bogomol17

Регистрация: Jul 2011
Сообщений: 15
Wolsh спасибо.

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

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

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


 


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


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