Отображение контента через Flash 9 SWF? - PullRequest
2 голосов
/ 31 июля 2009

У меня есть swf, который требует flash 9, и я пытаюсь показать содержимое поверх него. Чтобы облегчить это, я установил прозрачный wmode. Проблема в том, что это ТОЛЬКО работает, когда у пользователя установлена ​​flash 10, и я действительно не хочу требовать flash 10 для просмотра контента на сайте, над которым я работаю. Когда я поднимаю div над содержимым флэш-памяти с помощью flash 9, swf обливается или полностью перезаписывает div.

Как я могу предотвратить это, не устанавливая flash 10 как требование пользователя?

Я использую swfobject для встраивания SWF и JQuery-UI для отображения Div над содержимым флэш-памяти.

EDIT:

Такое поведение при сбое отмечается только в Safari.

Ответы [ 5 ]

3 голосов
/ 01 августа 2009

wmode прозрачный уже много лет является частью Flash и не ограничивается только Flash Player 10.

независимо от того, вам не нужно использовать прозрачный wmode; если вам действительно не нужна прозрачность в вашем SWF, вы должны использовать wmode opaque. это меньше глючит и использует меньше вычислительной мощности.

хитрость заключается в том, чтобы гарантировать, что ваши HTML-элементы имеют «положение», указанное в CSS.

попробуйте следовать примерам и инструкциям здесь: http://learnswfobject.com/advanced-topics/placing-html-elements-over-a-flash-movie/

2 голосов
/ 06 сентября 2009

Я не уверен, поможет ли это вам само по себе. Но я использовал следующий метод, чтобы показать контент поверх flash.

Я столкнулся с этой проблемой некоторое время назад. Я должен был показать пользователю всплывающее окно с Условиями для регистрации на сайте. Всплывающее окно появлялось нормально, но в верхней части страницы был флэш-фильм, который скрывал верхнюю часть диалога. Испытанный и широко используемый метод заключается в размещении Iframe там, где вы хотите показать свой контент, а также в абсолютном положении своего контента и IFrame. Например, если вы хотите показать div над флэш-фильмом, поместите IFrame следующим образом:

    <iframe style="position:absolute;top:250;left:150;"></iframe>

Затем поместите div точно над этим iframe, как:

    <div style="position:absolute;top:250;left:150;"></div>

Я использовал jquery на странице, чтобы показать диалог с помощью плагина ui.dialog. Поработав, я разработал следующее простое решение.

1) поместите атрибут id в элемент фильма, чтобы однозначно идентифицировать объект фильма. Как,

<object id="movie1"></object>

2) перед показом диалога (или другого содержимого по этому вопросу) вызовите функцию javascript, чтобы скрыть фильм. Как,

$("#movie1").css("display","none");

3) теперь показывать диалог. Как,

$("#dialog").dialog("open");

4) после закрытия диалогового окна снова показать фильм. Как,

  $("#dialog").dialog("close");
  $("#movie1").css("display","inline"); 
1 голос
/ 04 сентября 2009

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

Вместо того, чтобы иметь (x) html-контент поверх флэш-содержимого в z-index

+------------+
|            |
| +-------------+
| |   html      |
| |             |
| +-------------+
|   Flash    |
+------------+

Как насчет размещения содержимого (x) html над Flash в окне:

+------------+
|  html      |
|            |
+------------+
+------------+
|            |
| Flash      |
|            |
|            |
|            |
|            |
+------------+

Это не идеально, но, по крайней мере, предлагает работоспособное решение, пока Flash / html не смогут сосуществовать более успешно.

0 голосов
/ 04 сентября 2009

попробуйте установить для параметра wmode значение opaque. Это, кажется, решает много проблем с уровнем и глубиной HTML, когда задействован Flash.

0 голосов
/ 04 сентября 2009

Я нашел это в своих закладках (и они относятся к эпохе до 10 лет). Хотя у меня нет Flash Player 9 / Safari, чтобы подтвердить это прямо сейчас. Дайте ему шанс.

Различные WM-коды для браузеров

Как сказал pipwerks, WMode должен это контролировать, но не все платформы / браузеры обрабатывают их правильно. В этом случае я бы посчитал, что это ошибка Safari / Flash9, которую нельзя исправить.

...