|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Вызов методов основного класса приложения
У меня есть основной класс приложения с public методом.
package mainparts { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.SimpleButton; import flash.events.MouseEvent; import mainparts.menuparts.FieldPiece; public class JobInterface extends MovieClip { private var buildingMenu:MovieClip; private var fieldPiece1:MovieClip; private var fieldPiece2:MovieClip; public function JobInterface() { addFields(); }; private function addFields():void { var field1:Sprite = new Sprite(); var field2:Sprite = new Sprite(); fieldPiece1 = new FieldPiece(); fieldPiece2 = new FieldPiece(); addChild(field1); addChild(field2); field1.addChild(fieldPiece1); field2.addChild(fieldPiece2); }; public function addMenu():void { trace("3124235434654654766357865756"); }; }; } package game.menuparts { import flash.display.MovieClip; import flash.events.MouseEvent; import game.JobInterface; public class FieldPiece extends MovieClip { public function FieldPiece() { addEventListener(MouseEvent.MOUSE_DOWN, addBuildingMenu); }; private function addBuildingMenu(e:MouseEvent):void { (parent as JobInterface).parent.addMenu(); //выдает ошибку }; }; } |
|
|||||
нужно либо внуку передавать ссылку на метод, либо внук должен генерировать событие, которое должен слушать родитель и запускать нужный метод
|
|
|||||
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
parent не лишний ли поставили? плюс, парент кого у вас в обработчике?
(e.target.parent as JobInterface).addMenu(); |
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
если протрассировать:
- мой вариант: Output: [object JobInterface] - ваш вариант Output: null Знач мой вариант правильнее, только вот когда Выскакивает: 1061: Call to a possibly undefined method addMenu through a reference with static type flash.displayisplayObjectContainer. |
|
|||||
если я не ошибаюсь то через парент нельзя вызывать пользовательские методы как в ас2, а ссылка точно работать будет
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Тогда еще вопрос (можете закидывать меня тухлыми яйцами и помидорами ): как внуку передать ссылку на прародителя?
|
|
|||||
Регистрация: May 2009
Сообщений: 220
|
можно. Тип только нужно привести.
|
|
|||||
2switcher!: даже если и можно то лучше так не делать... потому что количество предков может меняться...
Последний раз редактировалось dsQuadro; 26.11.2009 в 16:44. |
|
|||||
Регистрация: May 2009
Сообщений: 220
|
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Еще вопросики.
1) Почему лучше так не делать? 2) Обязательно ли link должен быть параметров конструктора, нельзя ли его использовать в качестве параметра для метода? 3) Я все таки решил генерировать событие, является ли такой подход лучшим среди трех? |
Часовой пояс GMT +4, время: 16:30. |
|
« Предыдущая тема | Следующая тема » |
|
|