Вызовите функцию в MovieClip родного брата - PullRequest
0 голосов
/ 27 февраля 2012

На моей сцене MovieClip с именем Box и MovieClip с именем InfoBox. В InfoBox есть функция setInfo. При нажатии кнопки Box (это мувиклип, а не кнопка) требуется вызвать функцию InfoInfo setInfo.

Я попытался использовать следующий код в поле:

MovieClip(this.parent).InfoBox.setInfo();

Это привело к следующей ошибке:

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::Stage@34a8ef99 to flash.display.MovieClip.
at Box/infoBox()

Как правильно вызывать функцию в MovieClip одного брата?

Редактировать
InfoBox.as выглядит так:

package  {

    import flash.display.MovieClip;

    public class InfoBox extends MovieClip {

        public function InfoBox() {
            //Constructor
        }

        public function setInfo(){
            trace("info set");
        }
    }
}

Ответы [ 4 ]

2 голосов
/ 27 февраля 2012

Вы не должны вызывать функцию в одном клипе. Вместо этого отправьте событие из дочернего класса, который хочет запросить вызов функции, попросите его прослушать родительский класс, а затем родительский вызов соответствующей функции. Это называется "слабой связью" и хорошо послужит вам в долгосрочной перспективе.

1 голос
/ 27 февраля 2012

Вы должны установить имя на InfoBox.Тогда вы можете получить к нему доступ так:

var b:InfoBox = this.parent.getChildByName(“InfoBox”) as InfoBox;
b.setInfo();
0 голосов
/ 27 февраля 2012

Имя класса - InfoBox, но вам нужно использовать имя для этого конкретного экземпляра класса.Когда вы помещаете мувиклип вручную в редактор Flash, вы можете дать ему имя в окне «Свойства».

0 голосов
/ 27 февраля 2012

из дочернего клипа вы можете сделать это:

(parent as MovieClip).InfoBox.setInfo();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...