|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2009
Сообщений: 141
|
не работает конструкция (this.parent as MovieClip).имя_функции_родителя
почему может не работать функция, вызывающая функцию родителя:
function quest_btn_click(event:MouseEvent):void { (this.parent as MovieClip).quest_click(); } at MethodInfo-306() при установке точки останова на эту строку - в поле Name находится this, на котором нет плюсика для открытия (то есть он есть но когда на него нажимаешь - он пропадает), - в поле Value стоит только: global(@2cb80f9) подумал, что все из-за того что стоит в обработчике кнопки, но следующая конструкция тоже не работает: зы компилятор никак не ругается |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Посмотрите трейсом кто родитель this.parent в обработчики событий.
Может просто оказаться, что родитель не тот. |
|
|||||
Регистрация: Apr 2009
Сообщений: 141
|
в том то и дело - показывает, что нет родителя
обычно конструкция вызова функции родителя работает, но иногда не работает, обычно нахожу способ как это обойти, но хотелось бы понять - из-за чего может такое происходить |
|
|||||
Это нужно делать так:
Или лучше так: function quest_click_th():void { var clip:MovieClip = this.parent as MovieClip; if(clip){ clip.quest_click(); }else{ trace('В this.parent отсутствует клип, потому-что нас никуда не добавили.'); } } п.с. Только вместо: MovieClip - Приводите к тому классу, к которому принадлежит ваш экземпляр, имеющий метод quest_click
__________________
Дети не должны знать о своих родителях |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
(один из хороших примеров, почему надо всеми силами избегать ситуаций когда дети командуют родителями).
Вы приводите парент к МувиКлип. Отлично, это же суперкласс и, что очень приятно, динамический, так что компилятор молча проглатывает вызов неизвестного метода, которого нет у Класса МувиКлип. Все красиво, но ровно до тех пор, пока у конкретного парента ДЕЙСТВИТЕЛЬНО есть такой метод, а вот этого класс-ребенок никак не может гарантировать, ведь создать его экземпляр мог совсем другой наследник МувиКлипа, у которого сроду не было метода quest_click(). По-хорошему нужна безопасная типизация, то есть приведение парента не к динамическому классу, а к конкретному классу, гарантированно имеющему метод quest_click(). Но тогда получается, что ребенок должен "знать" (импортировать) класс своего родителя, и использовать класс ребенка можно только всегда с одним и тем же классом родителя. Используйте События. Тем более, когда о событиях и идет речь.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Apr 2009
Сообщений: 141
|
Цитата:
как привести к руту (или как правильнее сказать?) не понимаю почему может не работать? может из-за того что вызывается из кнопки (которая уже в меню, а НЕ создавается динамически, на этапе выполнения) обратится к родителю элемента, вызывающего данное Событие? но мне показывает, что у кнопки нет родителя |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вам показывают, что родитель — не МувиКлип.
Может, Вы лепите кнопку на stage, или в какой-то Sprite. Цитата:
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 20:38. |
|
« Предыдущая тема | Следующая тема » |
|
|