Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Загрузка внешнего swf со встроенным кодом AS2.0 (http://www.flasher.ru/forum/showthread.php?t=161758)

bas784 27.07.2011 16:10

Загрузка внешнего swf со встроенным кодом AS2.0
 
Есть возможность подгрузить внешнии swf командой

Код AS1/AS2:

NewMovie.loadMovie("1.swf");

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

dark256 27.07.2011 17:48

Вы уверены что ТАМ внутри именно АС2 ?

E.Q. 27.07.2011 17:58

Код загружаемого клипа должен выполняться.

А что за код внутри него? Если этот код обращается к своему кодовому содержимому через _root, то он будет стучаться к руту клипа его загрузившего. Попробуйте установить свойство _lockroot = false у загружаемого клипа.

bas784 28.07.2011 10:28

Вот пример, который не получается запустить.

Для примера в загружаемом клипе
создаем мувик Anim с простой анимацией по кадрам
во внешнем слое пишем
Код AS1/AS2:

_root.GetStatus=function():Boolean
{
        return true;
}
 
setExam= function(value)
{
        _root.Anim.gotoAndStop(Number(value+1));
}
addProperty("Exam1",GetStatus,setExam);
Exam1 = 20;

Запускаем смотрим - сцена теперь статична на 20-м кадре.
//----------------------------------------------------------
Создаем новый флеш с отдельным мувиком Symb внутри
во внешнем слое пишем
Код AS1/AS2:

Symb.loadMovie("Example.swf");
Symb.Exam1 = 10;

Запускаем все мигает и мерцает.
И зто только самый простой пример!


Продолжение изыскания по совету E.Q. пишу
Код AS1/AS2:

Symb.loadMovie("Example.swf");
Symb._lockroot = true;

Но как оказывается это свойство работает, только начиная с 7 версии плеера и в шестой не поддерживается, что мне и нужно в итоге.
Есть ли альтернатива?

dark256 28.07.2011 11:26

Ха! Так это, батенька, система безопасности!
Подгружаемый клип идет далеко и надолго с доступом к нулевому уровню.
Этак можно что угодно подгрузить куда угодно и все там перелопатить.

_root.GetStatus=function() - вот тут SandBox и пресекает все ваши дальнейшие поползновения.

bas784 28.07.2011 12:00

Мне нужно загрузить готовый флешь в отдельный мувик с доступом только у уровню самого мувика, в который он был загружен. Т. е. для меня он должен являться отдельным готовым объектом со своими функциями и свойствами.

Добавлено через 30 минут
Итог: Необходима альтернатива свойству _lockroot, для шестой версии плеера. Для определения, на что ссылкается ключевое слово _root при загрузке внешнего SWF файла в мувиклип.Какие могут быть предложения и замечания?

Добавлено через 2 часа 9 минут
Как решение, можно полностью отказаться от полного пути через _root в подгружаемом swf.

dark256 28.07.2011 14:38

Цитата:

Сообщение от bas784 (Сообщение 1015448)
Как решение, можно полностью отказаться от полного пути через _root в подгружаемом swf.

Да. Это будет истинно правильное решение.

MaxGr 29.07.2011 00:36

Нужно писать так:

Код AS1/AS2:

setExam= function(value)
{
        _root.ldr.Anim.gotoAndStop(Number(value+1));
}
addProperty("Exam1",GetStatus,setExam);
Exam1 = 20;

где ldr - имя клипа, в который вы подгрузили свою флешку. Ведь _root - это слой в главном клипе. А если вы загрузили в него другой клип то в нем нет рута. у него есть только _parent, а рут для него - это рут главного клипа. Соответственно если вы используете мувиклип для загрузки вашего клипа, то нужно еще указывать имя этого мувиклипа.

silin 29.07.2011 13:39

Цитата:

Сообщение от dark256 (Сообщение 1015443)
Ха! Так это, батенька, система безопасности!
Подгружаемый клип идет далеко и надолго с доступом к нулевому уровню.
Этак можно что угодно подгрузить куда угодно и все там перелопатить.

_root.GetStatus=function() - вот тут SandBox и пресекает все ваши дальнейшие поползновения.

не путаешь с AS3 ?
в AVM1 все именно так и обстоит: можно что угодно подгрузить куда угодно и все там перелопатить.
никто ничего не пресекает..

как вариант можно еще грузить с помощью loadMovieNum в другой уровень плеера, тогда его _root будет _leve1 плеера, например, и не совпадет с _root загружающего (_level0)

но отказаться от адресации через _root по-любому правильнее/надежнее

bas784 02.08.2011 10:25

А можно ли указать уже нарисованому объекту(мувику) в графической среде, уровень вложености?


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

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