Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   Вставка нескольких SWF в PHP (http://www.flasher.ru/forum/showthread.php?t=141621)

Не В Меня Ем 30.06.2010 14:09

Вставка нескольких SWF в PHP
 
Доброго дня. У меня такая проблема:

В php страницу вставляю несколько раз один и тот же swf, но только с разными параметрами, и они грузятся не все. Т.е. могут загрузиться только 1-5, и 10-ый, например. При обновлении страницы, swf подгружаются в кэш браузера и уже начинают отображаться все. Опять нажимаю CTRL+F5 (перезагрузка страницы без кэша), и опять несколько флешек не показывается.

Вставлять swf'ки пробовал используя swfobject 1.5.1 - не помогло, и swfobject 2.2 - тоже работает нестабильно.

Флешка small.swf - маленькая картинка о стране. Параметры:
folder - откуда беруться фотки;
url - ссылка, на которую ведёт swf;
country - имя страны поверх фотографии;
vsego - количество фотографий, из которых случайным образом выбирается одна.

Вот мой сайт, на котором можно посмотреть avp-tour.ru

Вот код вставки (по стандартам swfobject 1.5.1):


Код:

<!--Болгария -->       
<div class="smallflash">
<div id="bulgaria">
<embed width="150" height="100" flashvars="folder=images/stories/bulgaria&amp;url=http://www.avp-tour.ru/countries/bulgaria&amp;country=Болгария&amp;vsego=5" wmode="window" quality="medium" name="bulgaria" id="bulgaria" src="images/stories/small.swf" type="application/x-shockwave-flash"></div>
        <script type="text/javascript">
                var bulgaria = new SWFObject("images/stories/small.swf", "bulgaria", "150", "100", "9", "#ffffff");
                bulgaria.addParam("wmode", "window");
                bulgaria.addVariable("folder","images/stories/bulgaria");
                bulgaria.addVariable("url","http://www.avp-tour.ru/countries/bulgaria");
                bulgaria.addVariable("country","Болгария");
                bulgaria.addVariable("vsego","5");
                bulgaria.write("bulgaria");
        </script></div>


Вот код вставки (по стандартам swfobject 2.2):

Код:

<!--Болгария -->
<div class="smallflash">
                <script type="text/javascript">
                swfobject.registerObject("bulgaria", "9.0.0", "expressInstall.swf");
                </script>
                        <object id="bulgaria" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="150" height="100">
                                <param name="movie" value="images/stories/small.swf?folder=images/stories/bulgaria&url=http://www.avp-tour.ru/countries/bulgaria&country=Болгария&vsego=5" />
                                <param name="quality" value="medium" />
                        <!--[if !IE]>-->
                                <object type="application/x-shockwave-flash" data="images/stories/small.swf?folder=images/stories/bulgaria&url=http://www.avp-tour.ru/countries/bulgaria&country=Болгария&vsego=5" width="150" height="100" quality="medium">
                                <!--<![endif]-->
                                <div><h1>Туры в Болгарию</h1>
                                        <p><a href="http://www.avp-tour.ru/countries/bulgaria/"><img src="http://www.avp-tour.ru/images/stories/bulgaria/1.jpg" alt="Туры в Болгарию" /></a></p>
                                </div>
                                <!--[if !IE]>-->
                                </object>
                                <!--<![endif]-->
                        </object></div>


И всё равно не работает.
Скажите, вообще имеет ли смысл сделать такую подборку по странам на флеше?

Заранее благодарен.

mooncar 30.06.2010 16:23

SWFObject v2.2 попробуйте публиковать в другом режиме.
Привожу код, который я повсеместно использую без проблем. Вот публикую несколько плееров на странице (их больше, чем 2). Пути убирать не стал, думаю все понятно.

Код:

<head>
.
.
<script type="text/javascript" src="js/swfobject.js"></script>
<script language="javascript">
var flashvars1 = { contPath: "video/autoclosing.flv" };
var params1 = { menu: "false", allowScriptAccess: "always", allowFullScreen: "true", quality: "high", bgcolor: "#ffffff", wmode: "transparent" };
var attributes1 = false;
swfobject.embedSWF("flash/player.swf", "player1", "190", "184", "9.0.0", "flash/expressInstall.swf", flashvars1, params1, attributes1 );

var flashvars2 = { contPath: "video/dempfing.flv" };
var params2 = { menu: "false", allowScriptAccess: "always", allowFullScreen: "true", quality: "high", bgcolor: "#ffffff", wmode: "transparent" };
var attributes2 = false;
swfobject.embedSWF("flash/player.swf", "player2", "190", "184", "9.0.0", "flash/expressInstall.swf", flashvars2, params2, attributes2 );
</script>
.
.
</head>
<body>
.
.
<div id="player1"></div>
<div id="player2"></div>
.
.
<body>


Не В Меня Ем 30.06.2010 19:56

mooncar, спасибо. Я пробовал этот метод (динамический, судя по документации), но я как-то по-другому параметры передавал. Сейчас ещё попробую твоим способом.

А обязательно запихивать в тег <head> сам скрипт? Могу я указать его в body и сразу после скрипта писать <div id="... ?

Добавлено через 18 минут
Не работает. Даже, если скрипт запихать в head, или в body перед div'ом.
Всё равно отображает не все картинки, только, если несколько раз перезагрузить страницу.

mooncar 30.06.2010 20:22

Желательно в head.
Не знаю почему, но некоторые браузеры при использовании публикации прямо в боди по всей видимости не успевают что-то сделать, пусто.
Попробуй хотя - и так я тоже делал.

PS. Даже не знаю. Кинь ссылку на тестовую страницу, можно посмотреть.

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

Не В Меня Ем 30.06.2010 20:33

вот тестовая страница http://avp-tour.ru/htm13.html
Должно быть 10 стран, начиная с Болгарии, заканчивая Черногорией.
Если перезагружать страницу CTRL+F5, то не все отображаются.
Причём так во всех браузерах.

mooncar 30.06.2010 20:53

FF вообще всегда только пару первых грузит.
Что-то странное.
Вот что HTTPfox выдает:
Код:

000:37:50.998        0.258        400        4011        GET        200        text/html        http://avp-tour.ru/htm13.html
00:37:51.254        0.374        385        8912        GET        200        application/x-javascript        http://avp-tour.ru/js/swfobject.js
00:37:51.660        0.972        454        72996        GET        200        application/x-shockwave-flash        http://avp-tour.ru/images/stories/small.swf
00:37:51.678        1.005        454        75900        GET        200        application/x-shockwave-flash        http://avp-tour.ru/images/stories/small.swf
00:37:51.694        0.262        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.712        0.283        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.728        0.286        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.745        0.271        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.762        0.413        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.779        0.446        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.795        0.446        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.813        0.430        454        1439        GET        (Aborted)        text/html (NS_BINDING_ABORTED)        http://avp-tour.ru/images/stories/small.swf
00:37:51.920        0.224        454        1439        GET        503        text/html (NS_ERROR_FAILURE)        http://avp-tour.ru/images/stories/small.swf
00:37:51.951        0.207        454        1439        GET        503        text/html (NS_ERROR_FAILURE)        http://avp-tour.ru/images/stories/small.swf
00:37:52.701        0.523        419        8912        GET        200        image/jpeg        http://avp-tour.ru/images/stories/bulgaria/2.jpg
00:37:52.750        0.475        417        7206        GET        200        image/jpeg        http://avp-tour.ru/images/stories/greece/3.jpg

Видно, что загружаются только первые два, для остальных NS_BINDING_ABORTED

Добавлено через 5 минут
Ответный заголовок для глючных запросов выгляди так:
Код:

HTTP/1.1 503 Service Temporarily Unavailable
И соединения стабильно отрубаются.

Код публикации вашей как будто верный.
Даже не знаю, что еще можно тут покопать....
То ли JS тупит, то ли браузер или сервер не успевает обрабатывать запросы.
Вообще без JS публиковать пробовали?

Добавлено через 16 минут
Вообще, конечно похоже, что кто-то не успевает обрабатывать очередь запросов, и соединение обрывается.

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

Не В Меня Ем 30.06.2010 21:26

Вот пример, вообще без java http://avp-tour.ru/htm5.html
Стабильнее, но всё равно - тоже самое. Особенно в IE8.

Я, кстати, думал встроить параметры прям во флешки, и вызывать 10 разных флешек, а не одну и ту же с разными параметрами. Но не успел. Да и мне кажется не поможет.

По задумке я хотел добавлять страны на сайт в полуавтоматическом режиме. Одну большую флешку ведь придётся компилировать всякий раз при добавлении новой страны.

Интересно, может это мне хостер такую подлянку делает?

Уже подумываю о том, чтобы сделать просто на HTML, вставить картинки и ссылки.

mooncar 30.06.2010 22:02

Цитата:

Сообщение от Не В Меня Ем (Сообщение 919066)
Одну большую флешку ведь придётся компилировать всякий раз при добавлении новой страны.

Совершенно не обязательно. Сделайте конфиг-файл XML для флешки и добавляете, меняйте там все что угодно - картинки, надписи.

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

Либо просто публиковать флешку по высоте с добавкой (если происходит добавление контента). Тогда скроллер не нужен.

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

Добавлено через 6 минут
Кстати, у вас тем небольшой косячек еще надо исправить во флешке самой - ту же функцию, что у вас на onRollOut, повесить еще и на onDragOut, иначе при уводе мышки с зажатой ЛКМ с кнопки-картинки она остается в наведенном состоянии.

Не В Меня Ем 30.06.2010 23:00

mooncar, спасибо огромное за проявленный интерес к моей проблеме. Думаю, всё-таки сделаю простые картинки с ссылками. Но я учту все замечания и советы!


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

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