2009-03-12 3 views
2

Я использую расширитель аккордеона toolkit ajax, и я замечаю, что он выполняет немного «фанки», когда я пытаюсь встроить флеш в разделы контента.Embeded Flash in asp.net accordian выполняет плохо

Вы можете видеть, что я сейчас делаю: http://kristinsconfections.com/gallery.aspx. Как вы можете видеть, когда вы переключаете аккордеон, это немного порывисто. Я вытаскиваю флэш-слайд-шоу из flickr, поэтому я не могу контролировать это вообще. Сайт предназначен только для друга, который пытается стать пекарем, так что это не высокий приоритет, просто очень расстраивающий !! Все, что я могу сделать, используя javascript, .net или даже jquery ??

Вот точный код, я использую на этой странице:

<cc1:Accordion ID="MyAccordion" runat="server" SelectedIndex="0" 
     HeaderCssClass="accordionHeader" ContentCssClass="accordionContent" 
     FadeTransitions="true" FramesPerSecond="40" TransitionDuration="250" AutoSize="None"> 
     <Panes> 
      <cc1:AccordionPane ID="pnlCakes" runat="server"> 
       <Header><div ><span style="float:left;">Cakes</span></div></Header> 
       <Content> 
        <object width="572" height="429" type="application/x-shockwave-flash" 
        data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
        <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640424865%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640424865%2F&set_id=72157612640424865&jump_to=" /> 
        <param name="allowFullScreen" value="true" /> 
        <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" /> 
        </object> 
       </Content> 
      </cc1:AccordionPane> 
      <cc1:AccordionPane ID="pnlCookies" runat="server"> 
       <Header><div ><span style="float:left;">Cookies</span></div></Header> 
       <Content> 
       <object width="572" height="429" type="application/x-shockwave-flash" 
       data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
       <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640405779%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640405779%2F&set_id=72157612640405779&jump_to=" /> 
       <param name="allowFullScreen" value="true" /> 
       <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" /> 
       </object> 
       </Content> 
      </cc1:AccordionPane> 
      <cc1:AccordionPane ID="pnlCupcakes" runat="server"> 
       <Header><div ><span style="float:left;">Cupcakes</span></div></Header> 
       <Content> 
       <object width="572" height="429" type="application/x-shockwave-flash" 
       data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
       <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612589253131%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612589253131%2F&set_id=72157612589253131&jump_to=" /> 
       <param name="allowFullScreen" value="true" /> 
       <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" /> 
       </object> 
       </Content> 
      </cc1:AccordionPane> 
     </Panes> 
</cc1:Accordion> 

ответ

2

Я нахожу материал инструментария Ajax слишком неуклюжим в целом. JQuery настолько прост в использовании, имеет хорошую поддержку кросс-браузера и расширяемость, которые мы используем в предпочтении, и я бы рекомендовал вам сделать то же самое. В наборе пользовательского интерфейса JQuery есть accordian widget, который должен соответствовать счету.

Если вы загружаете все фильмы с флэш-фильмами в скрытые div, вы получаете плохую производительность, есть событие, которое вы можете подключить к изменению, где вы можете загружать Flash. Это задокументировано на согласной странице (и может быть легко выполнено с помощью JQuery).

0

я тестировал его под FireFox3, IE8 и Chrome, и это на самом деле, кажется, хорошо работает в IE (версия 8), а не так приятно в FF3 и Chrome.

Я нашел this post того, кто столкнулся с той же проблемой, и кажется, что параметры FadeTransitions для «False» исправляют его, хотя я уверен, что это не то решение, на которое вы надеялись.

0

Вы пробовали помещать изображение предварительного просмотра в гармонизме на данный момент? Затем, когда пользователь нажимает на изображение с помощью javascript, чтобы заменить его на флешку? Думаю, это выглядело бы намного лучше.

Когда кто-то выбирает другую панель в гармонике (не уверен в событии для наблюдения - смотрите в AccordionBehavior.js), вы можете удалить флешку, заменить ее изображением и продолжить.

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

0

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

Кроме того, посмотрите, как вы встраиваете SWF-файлы, особенно атрибут wmode. Есть хорошая пояснительная статья, написанная here, вы можете начать с этого. Вы можете игнорировать режимы GPU и direct, потому что я думаю, что вы не используете SWF, скомпилированный для Flash Player 10.

И, конечно же, вы должны выгрузить флеш-ролики, которые не видны.

1

Похоже, что давно уже существует bug в firefox, не относящемся к конкретному виджету.Мои лучшие попытки:

<script type="text/javascript"> 
    function pageLoad() { 
     var acc = $find('<%= MyAccordion.ClientID %>_AccordionExtender'); 
     acc.add_selectedIndexChanged(MyAccordion_SelectedIndexChanged); 
    } 
    function MyAccordion_SelectedIndexChanged(sender) { 
     $("object").css("visibility", "hidden"); 
     setTimeout(
      function() { 
       $("object").eq(sender.get_SelectedIndex()).css("visibility", "visible"); 
      }, 1000); 
    } 
</script> 
  1. Скрыть видимость объекта так гармошка анимация играть через
  2. Подождите 1 секунду - надеюсь, достаточно долго для анимации, чтобы закончить, но не слишком долго, так что Theres заметного отставания
  3. Показать скрытый объект

Это устраняет мерцание, но объект вспышка исчезнет во время анимации играть через