Взаимодействие флеш-галереи Polaroid с html-контентом (порядок стека)

Я использую Polaroid Gallery во введении веб-сайта вместе с html-блоком, как показано в этом тесте. страница: http://www.intellectualloyd.com/ladybug/

При двойном клике по сумке происходит флеш-анимация и изображение увеличивается в середине страницы. В этой ситуации изображение (флэш-объект) должно оставаться перед html-блоком (логотип и т. д.) и возвращаться к наименьшему порядку стека при повторном двойном щелчке по нему.

В коде есть два основных div:

  • тот, который содержит блок html в середине
  • пустой, который будет содержать флэш-объект: <div id="flashfullscreen" class="fOff"></div>

После этого я загружаю .swf с библиотекой SWFObject, помещая ее в div #flashfullscreen:

<script type="text/javascript">
//<![CDATA[
var so = new SWFObject("polaroid.swf", "polaroid", "100%", "100%", "8");
// specify the url to the xml-file, default is photos.xml
so.addVariable("xmlURL","photos.xml");
so.addParam("wmode", "transparent");
so.write("flashfullscreen");
//]]>
</script>

Чтобы добиться эффекта двойного щелчка, изменив порядок стека двух div, я использовал jQuery:

<script type="text/javascript">
$(document).ready(function() {
    $('#flashfullscreen').dblclick(function() {
        $('#flashfullscreen').toggleClass('fOff');
    });
});
</script>

.fOff { z-индекс:99!важно; } – это стиль класса.
стиль div flashfullscreen имеет z-index:999.
блок в середине имеет z-index:100.

Грубо говоря, я использую jquery для удаления класса fOff из div flashfullscreen при двойном щелчке, чтобы установить более высокий z-индекс (999) для этого блока, который будет отображаться перед блоком html.

Вы бы, наверное, увидели проблему. Если вы дважды щелкните большое изображение, чтобы «закрыть» его, все в порядке, и порядок стека будет правильно изменен. Но если дважды щелкнуть по пустому месту вокруг, html-блок идет перед изображением, которое все еще «открыто».

Я уверен, что есть более простое и полное решение этой проблемы, редактирование флэш-объекта или использование методов SWFObject. Кто-нибудь может мне помочь?


person alliuca    schedule 07.09.2011    source источник


Ответы (1)


Flash Player не учитывает Z-Index. Независимо от того, какой индекс вы укажете, он всегда будет оставаться наверху, если SWF имеет position: absolute в CSS и wmode transparent или opaque. (FWIW, вы всегда должны выбирать непрозрачный вместо прозрачного, если вам действительно не нужна прозрачность из-за увеличения количества ошибок и процессора прозрачного режима wmode.)

Учебник и примеры здесь: http://learnswfobject.com/advanced-topics/placing-html-elements-over-a-flash-movie/

person pipwerks    schedule 07.09.2011
comment
спасибо, лучше разместить блок html поверх флеш-ролика, но это не решает мою проблему. Полагаю, ничего не остается, кроме как попробовать добавить блок прямо во флэш-ролик, верно? - person alliuca; 17.09.2011
comment
вы не можете сделать так, чтобы элемент HTML был виден под фотографией полароид, если только вы не установили прозрачность фильма. учитывая возможные проблемы с ЦП, вероятно, было бы лучше всего обрабатывать всю страницу во Flash - конечно, с приличным резервным HTML! (То, что вы делаете, возможно с CSS3 и JavaScript в современных браузерах, поэтому я определенно рекомендую изучить этот вариант) - person pipwerks; 19.09.2011
comment
y Я понимаю.. Я думаю, мы попробуем сделать все во Flash. Спасибо за помощь - person alliuca; 25.09.2011