PDA

Просмотр полной версии : SWFObject. Проблема области видимости.


enepx
23.08.2008, 16:09
Привет всем.
Интрегрирую флешку с веб-страницей через SWFObject-библиотеку так:

<div id="flashcontent" style="width:750; height:600;">
You need to upgrade your Flash Player
</div>
<script type="text/javascript">
var so = new SWFObject("diving/Gallery.swf", "Gallery", "750", "600", "9");
so.addParam("wmode", "transparent");
so.write("flashcontent");
</script>


Из флешки идет подгрузка данных из той же директории, что и флешка, т.е. new URLLoader("picture.jpg"). Как видно, эта директория с флешкой и контентом для нее лежит не в директории с веб-страницей, а в "diving/". Теперь флешка почему-то хочет подгружать данные из директории с html страницей, т.е. ее облать видимости стала как у html.
Поменять структуру возможности нет, уже утверждена и много что на ней завязано (кроме флеша).
Когда запускаю просто swf-ку, то все работает, т.е. грузит из директории флеша.

Как так могло получиться?

s8000_1
23.08.2008, 16:19
А кто мешает делать так?

new URLLoader("/diving/picture.jpg");

enepx
23.08.2008, 16:29
А кто мешает делать так?

new URLLoader("/diving/picture.jpg");

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

s8000_1
23.08.2008, 16:42
По идее должно работать так (не проверял):

so.addParam("base", "/diving/");



base - . or [base directory] or [URL]. Specifies the base directory or URL used to resolve all relative path statements in the Flash Player movie. This attribute is helpful when your Flash Player movies are kept in a different directory from your other files.



Однако плодить 200 флэшек не гут, вдруг в ней обнаружится баг? Мне кажется, должна быть одна на все, размещенная в одной папке. И которая делала бы запрос к галерее, путь к которой передавался бы через flashVars.


<script type="text/javascript">
var so = new SWFObject("/galleryFlashka/flashka.swf", "Gallery", "750", "600", "9");
so.addParam("wmode", "transparent");
so.addVariable("galleryDir", "/diving/");
so.write("flashcontent");
</script>

enepx
23.08.2008, 16:51
Однако плодить 200 флэшек не гут, вдруг в ней обнаружится баг? Мне кажется, должна быть одна на все, размещенная в одной папке. И которая делала бы запрос к галерее, путь к которой передавался бы через flashVars.


Ты прав, я предлагал одну флешку.
У заказчика все хитро на этот счет. Условие было такое, что все останется как было (типа это он делал наверное), т.е. стока swf, скока было! А то понты будут у 'клиента' от 'клиента клиента'.
Не такое еще встретишь в нашей работе :)

P.S. Ваш метод заработал, тока:

so.addParam("base", "diving/");

Круто! Спасибо! Где вычитали? Я все перерыл.

s8000_1
23.08.2008, 16:55
Вспомнил просто, что где-то видел, а именно, вот тут:
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701

enepx
23.08.2008, 16:56
Сенк, буду юзать теперь!