Можно ли встроить swf AS3 в DIV, расположенный выше встроенного swf AS2? - PullRequest
3 голосов
/ 10 декабря 2008

Я думаю, вопрос довольно понятен. Кто-нибудь делал это раньше?

ОБНОВЛЕНИЕ : Разъяснение того, почему мне нужно это сделать. У нас есть один SWF-бегемот сайта AS1 - AS2 с большим разделом видеогалереи. Клиент хочет обновить раздел видео, так как код AS2 не может обрабатывать их более свежие, гораздо большие видеофайлы. Клиент не будет платить за обновление всего сайта. Итак, я хотел бы иметь возможность накладывать видео-браузер и проигрыватель на основе AS3 на существующий сайт при переходе по этому разделу, чтобы остальная часть сайта работала правильно с существующим кодом AS2.

Надеюсь, что все объясняется немного яснее!

1 Ответ

4 голосов
/ 11 декабря 2008

Я бы не подумал, что это AS3 или AS2 имеет какое-либо отношение к этому.

С точки зрения веб-браузера они оба представляют собой черный ящик с надписью «Плагин Flash Player». Вы можете установить только одну версию плагина одновременно, поэтому, даже если у вас есть AS2 и AS3 swf, веб-браузер просто видит, что у него есть 2 экземпляра «Flash player plugin version 10»

Чтобы свести это к минимуму, вы пытаетесь сделать следующее:

  1. Создать страницу:
  2. Вставьте в нее SWF
  3. Добавьте div на страницу и используйте позиционирование CSS, чтобы поместить его поверх другого swf
  4. Вставьте еще один swf в этот div.

Так это работает? - Нет Да, очень хорошо, но вы должны установить wmode="transparent" для ваших встроенных flash-объектов (спасибо grapefrukt в комментариях).

Я провел тест: вот мой исходный код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <style type="text/css" media="screen">
            DIV{ width: 300px; height; 300px;}
            #background{ border: 1px solid green; background-color: green; z-index: 0; }
            #foreground{ border: 1px solid red; background-color: red; z-index: 50; }
        </style>
    </head>
    <body>
        <div id="background">
            <embed height="208" width="208" quality="high" bgcolor="#fff" src="bgswf.swf" type="application/x-shockwave-flash" wmode="transparent"/>
        </div>  

        <div id="foreground" style="position: absolute; left: 30px; top: 30px;">
            <embed height="208" width="208" quality="high" bgcolor="#fff" src="fgswf.swf" type="application/x-shockwave-flash" wmode="transparent"/>
        </div>  

    </body>
</html>

Результаты:

Без wmode=transparent, является несовместимым и незначительно сломан в Firefox и IE. При этом он делает именно то, что вы думаете, как в IE, так и в Firefox.
SWF-файлы ведут себя (с точки зрения компоновки), как если бы они были просто изображениями. Это круто.

...