|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
обращение из дополнительного класса к объекту главного класса
Есть главный класс MainClass, в нем есть объект obj. Внутри этого объекта obj, есть еще один объект с собственным классом AdditionalClass. Нужно из класса AdditionalClass обратиться к объекту класса MainClass
package { import flash.display.*; public class MainClass extends Sprite { private var obj:Sprite; public function MainClass():void { obj = obj_mc; } } } package { import flash.display.*; import flash.events.Event; public class AdditionalClass extends Sprite { public function AdditionalClass():void { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { trace(obj) } } } подскажите, плз, как правильно передавать данные из одного в другой класс Добавлено через 12 минут пытаюсь передать переменную, выдает ошибку package { import flash.display.*; import AdditionalClass; public class MainClass extends Sprite { private var obj:Sprite; public function MainClass(obj):void { obj = obj_mc; } } } package { import flash.display.*; import flash.events.Event; public class AdditionalClass extends Sprite { public function AdditionalClass(obj:Sprite):void { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { //trace(obj) this.addEventListener(Event.ENTER_FRAME, moveStar); } private function moveStar(e:Event):void { this.rotation += 1; } } } вообще можно ли в классе AdditionalClass, создать метод, который бы останавливал вращение при наведении на obj ? |
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Либо
А в главном классе объявляете листенер
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
пробуем со статик:
package { import flash.display.*; import AdditionalClass; public class MainClass extends MovieClip { public static var OBJ:MovieClip; private var star:AdditionalClass; public function MainClass():void { OBJ = obj_mc; star = obj_mc.star_mc; } } } package { import flash.display.*; import flash.events.Event; import flash.events.MouseEvent; public class AdditionalClass extends MovieClip { public function AdditionalClass():void { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { MainClass.OBJ.addEventListener(MouseEvent.CLICK, stopStar); this.addEventListener(Event.ENTER_FRAME, moveStar); } private function moveStar(e:Event):void { this.rotation += 1; } private function stopStar(e:MouseEvent):void { this.removeEventListener(Event.ENTER_FRAME, moveStar); } } } TypeError: Error #1009: Cannot access a property or method of a null object reference. at AdditionalClass/init() at flash.display::Sprite/constructChildren() at flash.display::Sprite() at flash.display::MovieClip() at flash.display::Sprite/constructChildren() at flash.display::Sprite() at flash.display::MovieClip() at MainClass() |
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Не совсем понял, что Вам надо, попробуйте так
package { import flash.display.*; import AdditionalClass; import flash.events.Event; public class MainClass extends MovieClip { public static var OBJ:MovieClip; private var star:AdditionalClass; public function MainClass():void { this.addEventListener('stopStar', stopStarFunc, true); OBJ = obj_mc; star = obj_mc.star_mc; } private function stopStarFunc(event:Event):void { trace('stopStar'); } } } package { import flash.display.*; import flash.events.Event; import flash.events.MouseEvent; public class AdditionalClass extends MovieClip { public function AdditionalClass():void { trace('added'); this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { this.addEventListener(MouseEvent.CLICK, stopStar); this.addEventListener(Event.ENTER_FRAME, moveStar); } private function moveStar(e:Event):void { this.rotation += 1; } private function stopStar(e:MouseEvent):void { dispatchEvent(new Event('stopStar')); this.removeEventListener(Event.ENTER_FRAME, moveStar); } } }
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг |
|
|||||
Регистрация: Sep 2010
Сообщений: 33
|
http://siliren.ru/content/view/115/1/
В этом примере использовано такое обращение: MainClass(root).obj.obj_property, строки 20,21. Попробуй, может получится))) |
|
|||||
я так понял нужно учить гет и сет методы
вот правильный скрипт package { import flash.display.*; import AdditionalClass; public class MainClass extends MovieClip { private var obj:MovieClip; private var star:AdditionalClass; public function MainClass():void { obj = obj_mc; star = obj.star_mc; star.mainClass = this; } } } package { import flash.display.*; import flash.events.Event; import flash.events.MouseEvent; public class AdditionalClass extends MovieClip { private var _mainClass:DisplayObjectContainer; public function AdditionalClass():void { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { this.addEventListener(Event.ENTER_FRAME, moveStar); } public function set mainClass(mainClass : DisplayObjectContainer):void { _mainClass = mainClass; _mainClass["obj_mc"].addEventListener(MouseEvent.CLICK, stopStar); } private function moveStar(e:Event):void { this.rotation += 1; } private function stopStar(e:MouseEvent):void { this.removeEventListener(Event.ENTER_FRAME, moveStar); } } } |
Часовой пояс GMT +4, время: 01:22. |
|
« Предыдущая тема | Следующая тема » |
Теги |
главный класс , дополнительный класс , обращение |
|
|