PDA

Просмотр полной версии : Как управлять загруженым SWF?


Tr1te
03.08.2010, 23:52
Видел похожие топики но то что там работает у меня не работает.

Есть SWF, в котором просто анимация, и больше ничего.

Загрузил ее с сервера, и когда делаю так:
var Animation:MovieClip=new MovieClip();
Animation=uL_Loader.content;
addChild(Animation);
Animation.stop();
То анимация добавленная на сцену, продолжает проигрываться.
А когда на нее кликаю:

*** Нарушение безопасности изолированной среды ***
SecurityDomain "http://*********.swf" пытался получить доступ к несовместимому контексту "********"


Что я не правильно делаю?

TWETTI
04.08.2010, 00:04
Попробуй положить файл политики безопасности рядом с SWF файлом который ты хочешь загрузить. И затем загрузи его:
Security.loadPolicyFile("http://сайт/crossdomain.xml");

Tr1te
04.08.2010, 00:11
Попробовал, тоже самое.

Пробовал даже:
var context:LoaderContext = new LoaderContext();
context.securityDomain=SecurityDomain.currentDomain;
И в лоудэр прописывал context.
Таже самая ошибка, но сейчас больше волнует, как сделать так, чтобы мжно было управлять загруженным SWF.

Добавлено через 21 минуту
Ошибка в том, что если тестить флеш с локально, то будет эта ошибка, а когда запуская с сервера, то все нормально, нет нарушения среды.

Но все же по сабжу, почему не могу управлять MovieClip'ом?

Alex Lexcuk
04.08.2010, 00:50
Поглядите как управлять
http://www.murmadillo.tut.su/as3/load-swf-metod.html

Tr1te
04.08.2010, 09:07
Смотрел, и чем моя отличается?

-De-
04.08.2010, 11:45
Я бы рекомендовал управлять через шаблон медиатор http://en.wikipedia.org/wiki/Mediator_pattern Ну т.е. загруженная флэшка имплементит интерфейс какой надо, через методы которого рулить. Или она имплементит интерфейс, в котором один метод "отдать обьект, который имплементит интерфейс, какой надо", чтоб не было относящегося к взаимодействию кода в документ классе.
Насчёт "Ошибка в том, что если тестить флеш с локально, то будет эта ошибка, а когда запуская с сервера, то все нормально, нет нарушения среды." http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html

Diestro
04.08.2010, 11:59
Это все из-за того что переменная Animation начинается с большой буквы.

Tr1te
04.08.2010, 19:06
-De-, спасибо с SecurityDomain разобрался.

А вот с управлением анимации не очень. Пишу так:
Главный класс:
public function Main():void {
var _uLoader:uLoader=new uLoader();
addChild(_uLoader);
addEventListener("Loading complete",LoadingCcomplete);
_uLoader.Load(0,1);

function LoadingCcomplete(e:Event):void {
removeEventListener("Loading complete",LoadingCcomplete);
var Anim:MovieClip=new MovieClip();
Anim=_uLoader.date;
addChild(Anim);
Anim.stop();
}
}


И класс в которым загружаю:

public var date;
public function Load(uL_Server:int,uL_ID:int) {
var URL_Path:String="TestAnim.swf";
var uL_Loader:Loader=new Loader();

uL_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE,uL_Loader_Complete);
uL_Loader.load(new URLRequest(URL_Path));

function uL_Loader_Complete(e:Event):void {
uL_Loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,uL_Loader_Complete);
date=uL_Loader.content;
parent.dispatchEvent(new Event("Loading complete"));
}

}


Все предельно просто. По идеи должно работать. Но не работает. Думаю что проблема в том, как я создаю этот SWF с видео, может тут что-то не правильно:

Открываю флеш, добавляю видео, создаю новый символ, кидаю в него видео. Потом правой кнопкой на символ, и нажимаю "Export SWF". Сохраняю на диск SWF.

Когда я открываю этот SWF, у меня все видео зациклено и проигрывается.

Добавлено через 1 час 19 минут





==================================================================================================
О God, все оказалось проще, надо нормально создавать SWF. Просто создать новый fla, вставить видео и публиковать в swf.

Но тогда зачем кнопка "Export SWF"...