PDA

Просмотр полной версии : Доступ к флеш-документу из класса


Shidan
19.10.2007, 18:12
Господа, у меня следующая проблема. Мне нужно из класса обратиться к методу, который написан во флеш-документе? Если бы это был метод другого класса, то мне всё было бы понятно - через интерфейсы. Но что собой представляет основной флеш-документ? И как сообщить классу, какие у него есть методы?

И можно ли обратиться к методу не основного флеш-документа, в котором данный класс будет использован, а внешнего?

screamge
21.10.2007, 08:29
Либо передавать ссылку на основной флеш документ в класс, либо обращаться через _root.
Второй части вопроса не понял, что значит внешнего?

Shidan
23.10.2007, 13:55
1) OK. Но для этого надо в классе указать интерфейс основного флеш документа. (Иначе как класс будет знать, что переданный ему объект реализует данный метод?) Отсюда развитие вопроса: что нужно сделать, чтобы основной флеш документ реализовывал интерфейс? Методы интерфейса в нём есть. Но как об этом сказать классу?

2) Т. е. где-то на файловой системе лешит откомпилированный fla-файл, к объектам и методам которого я хочу получить доступ.

son_of_war
23.10.2007, 14:07
Не путай описание класса и работающий мувик. Нельзя к произвольному файлу swf обратиться и спросить "а не являетесь ли вы потомком такого-то класса". Проверить наличие тех или иных функций на определенном уровне в мувике можно по имени, зная где он находится или передать ссылку в экземпляр этого класса, про который ты говоришь. Если объект с опреденным именем в данном месте отсутствует ты получишь значение undefined. Имей в виду - функции тоже являются экземплярами класса function и их наличие можно проверить точно также как и других объектов.
Если твой класс грузится в мувик, который сам в свою очередь подгружается где-то в основной мувик, то основной мувик будет доступен через ссылку _level0

Shidan
23.10.2007, 14:13
Про функциональный тип понял.

А можно простой пример кода про подгрузку и обращение к функциям fla- или swf-файла? Хочется разгрузить основной документ.

son_of_war
24.10.2007, 12:57
ну смотри допустим создаешь ты главный мувик m1.fla, в нем создаешь клип с именем экземпляра скажем my_mc и в этом клипе прописываешь функцию
function blabla()
{
trace("blablabla");
};
и в первом кадре главной ленты пишешь
loadMovieNum("m2.swf",1);

потом создаешь файл класса скажем test.as
class test{
function test()
{
if (_level0.my_mc.blabla == undefined)
{
trace("функция blabla клипа my_mc не найдена");
}else
{
_level0.my_mc.blabla();
}
}
};
потом создаешь второй мувик m2.fla, в который будешь грузить класс (я так делаю чтобы ты понял как пользоваться _level)

в его первом кадре пишешь
tst = new test();
trace(_root);
Если ты просто скомпилишь второй мувик - ты увидишь сообщение
функция blabla клипа my_mc не найдена
_level0
Это говорит о том что класс не нашел клипа my_mc и текущий мувик m2 является корневым - _level0
Если ты скомпилишь первый мувик m1 - ты увидишь сообщение

blablabla
_level1

Это говорит о том что класс, загруженный в m2 нашел в мувике верхнего уровня клип my_mc и в нем функцию blabla и запустил ее
И второе - то, что мувик m2 теперь не корневой а лежит на уровне _level1