Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получить доступ к функции в загруженной флешке (http://www.flasher.ru/forum/showthread.php?t=153267)

bumblebee 31.03.2011 01:57

Получить доступ к функции в загруженной флешке
 
Здравствуйте!

Есть две флешки одна материнская, вторая дочерняя.
Материнская флешка:
Код AS3:

private var containerSWF:MovieClip;                                                                        // контейнер для мувиков
private var loaderSWF:Loader;                                                                                // загрузчик для мувиков
 
loadPage("under.swf");
/*
 * Загружаем swf
 */

private function loadPage(link:String):void {
        loaderSWF = new Loader();
        loaderSWF.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSWFComplete);
        loaderSWF.load(new URLRequest(link));
        containerSWF.addChild(loaderSWF);
}
 
/*
 * Загрузка страницы закочилась
 */

private function loadSWFComplete(event:Event):void {
        trace("complete ");
        // отсюда требуется выполнить функцию hideText() - находящуюся в загруженной флешке
}

Дочерняя флешка:
Код AS3:

// Класс и инструкции
 
//
public function hideText() {
        // Инструкции...
}

Собственно вопрос обратиться к функции hideText, чтобы она выполнилась
Методом научного тыка, в другом проекте получилась вот такая строка(здесь не работает):
Код AS3:

((loaderSWF.getChildAt(0) as Loader).content as MovieClip).hideText();

Есть ли какой нибудь более простой вариант?

Спасибо!

DZHETIGAPA 31.03.2011 02:36

Код AS3:

var cl:Class = new loaderSWF.content.loaderInfo.applicationDomain.getDefinition("Main") as Sprite;
cl.hideText()


FlashWizard 31.03.2011 03:23

DZHETIGAPA, а что это вы у переменной сl указали тип Class ? Получается вы пытаетесь вызвать статический метод hideText.

i.o. 31.03.2011 03:30

Можно из дочерней послать событие со всплытием. А в загрузчике поймать и использовать e.target как ссылку на дочернюю флэшку. А, следовательно, её (ссылку) можно записать в какую-либо переменную загрузчика и уже через нее дергать методы / свойства загруженной флэхи.

GBee 31.03.2011 11:07

Код AS3:

((loaderSWF.getChildAt(0) as Loader).content as MovieClip).hideText();

У MovieClip нет hideText()

Может к объекту приводить?

cleptoman 31.03.2011 11:26

MovieClip динамический..у него что угодно может быть )
Код AS3:

(loaderSWF.content as MovieClip).hideText();


GBee 31.03.2011 11:29

Цитата:

MovieClip динамический..у него что угодно может быть )
Хм, я не знал, спасибо.

cleptoman 31.03.2011 11:40

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

bumblebee 31.03.2011 13:09

Цитата:

Сообщение от cleptoman (Сообщение 985354)
вообще, по-хорошему, автору надо дать щелбан и заставить написать нормальный документ-класс загружаемой флэшке, прописать интерфейс с нужными в загружающей флэшке методами и приводить контент лоадера к нему, чтоб не тягать весь класс по всему приложению.

Расскажите как это сделать или по возможности покажите ссылку, где об этом почитать

cleptoman 31.03.2011 14:55

читать там где пишут про интерфейсы в AS3, предпочтительно Мука


Часовой пояс GMT +4, время: 07:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.