![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2011
Сообщений: 15
|
Здравствуйте. Есть два класса StartPage и Game. В StartPage созданы кнопки. Есть ли возможность подключить к кнопкам слушатели из класса Game?
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; } } } 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. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 243
|
Здесь 2 варианта:
1) Вешать слушатели в StartPage и выкидывать события и уже ловить их 2) объявить кнопки не как локальные переменные, а как приватные поля и возвращать их по get-запросу |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 15
|
про get-запрос сам подумывал, просто искал более простое решение.
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 243
|
По хорошему стилю лучше события, но более муторно. Проще get только public переменные
|
|
|||||
|
Регистрация: Jul 2011
Сообщений: 15
|
Deimos747 так у меня переменные public, или я что-то не понимаю?
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 243
|
а надо
в идеале |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
У Вас в момент подписки на событие еще нет экземпляра кнопки.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 15
|
Wolsh спасибо.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|