Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS, FLASH] Animacja pękającej szyby
Forum PHP.pl > Forum > Przedszkole
Savage.Mephisto
Witam.
Zwracam się do ludzi, którzy mają doświadczenie w tworzeniu animacji w technologii Flash i używaniu frameworka jQuery. Otóż klient zażyczył sobie, aby po przejściu na każdą podstronę serwisu internetowego była obecna animacja pękającej szyby wraz z podkładem dźwiękowym (warto tu dodać, iż tło swf musiałoby być przezroczyste, aby było widać elementy graficzne i tekstowe znajdujące się pod spodem). Doszedłem do wniosku, że wykonam to całe "ustrojstwo" w ten sposób, iż po kliknięciu na link odsyłający do podstrony pojawi się nadrzędna warstwa zakrywająca całą stronę, na której będzie się znajdować animacja swf i po upływie załóżmy 5 sekund automatycznie się schowa. Czy ktoś ma doświadczenie w tego typu działaniach i mógłby mi coś doradzić, nakierować na właściwe tory? Byłbym wdzięczny za pomoc.
webdice
Nie wiem czy to najlepszy sposób. Przeźroczysta warstwa zasłaniająca całą stronę prawdopodobnie uniemożliwi kliknięcie w link. Osobiście zrobiłbym to w inny sposób. Mianowicie stworzył bym warstwę zasłaniającą całą stronę i w niej umieściłbym animacje. W jQuery większego problemu nie powinno być:

Kod
$( 'a' ).click( function()
{
    $( '#pane' ).show();

    // tu dodatkowo interwał czasowy bądź jakiś callback z Flash

    document.location = this.href;
});


Pozostaje jeszcze sprawa odtworzenia animacji po kliknięciu, ale to nie jest duży problem.
Savage.Mephisto
Do tej pory "wymodziłem" coś takiego:
(efekt można obejrzeć tutaj: http://mxx.pl/szkloradom/)

  1. div#object {
  2. position: absolute;
  3. width: 910px;
  4. height: 910px;
  5. }


  1. <script type="text/javascript">
  2. // <![CDATA[
  3. $(document).ready(function() {
  4. var obj = $("#object");
  5. var height = $(window).height();
  6. var width = $(document).width();
  7. obj.css({
  8. \'left\': width/2 - (obj.width() / 2),
  9. \'top\': height/2 - (obj.height() / 2),
  10. });
  11. $("#object").hide(70000);
  12. });
  13. // ]]>


  1. $swf = 'glass';
  2. $path = 'swf/'.$swf.'.swf';
  3.  
  4. <div id="object">
  5. <object type="application/x-shockwave-flash" width="910" height="910" data="'.$path.'">
  6. <param name="quality" value="high" />
  7. <param name="movie" value="'.$path.'" />
  8. <param name="menu" value="false" />
  9. <param name="wmode" value="transparent" />
  10. </object>
  11. </div>


Kilka uwag:
1) Nie wiem jak zrobić, aby dopiero po wczytaniu całej strony i po odtworzeniu animacji poprawnie się chowała warstwa z nią związana (#object) - w skrajnych przypadkach, kiedy strona nie zdąży się szybko załadować, animacja flash nie jest widoczna.
2) Zależałoby mi na tym, aby animacja zajmowała cały ekran roboczy w przeglądarce. Za pomocą $(window).width() oraz $(window).height() można uzyskać rozdzielczość ekranu, tylko teraz jak te wartości wprowadzić do kodu odpowiedzialnego za wyświetlanie animacji flash? W tej chwili wymiary swf są "na sztywno" wpisane i wynoszą 910x910px.

Ktoś pomoże?
webdice
Kod
$( document ).ready( function()
{
    $( '#object' ).delay( 2000 )
        .hide( 10 );
});


Tylko użyj nowszego jQuery. W wersji której używasz nie ma delay.

PS. Nie wiem w ogóle co ten temat robi w Hydepark. Przenoszę.
Savage.Mephisto
Serdeczne dzięki za zainteresowanie tematem i wszelkie sugestie.
Poprawiłem nieco kod i wersja beta wygląda mniej więcej tak (nie jest to rozwiązanie doskonałe, ale zostawiam je dla potomnych):

  1. div#object {
  2. position: absolute;
  3. width: 100%;
  4. height: 100%;
  5. }


  1. <script type="text/javascript">
  2. // <![CDATA[
  3. $(document).ready(function() {
  4. var obj = $("#object");
  5. var height = $(window).height();
  6. var width = $(document).width();
  7. obj.css({
  8. \'left\': width/2 - (obj.width() / 2),
  9. \'top\': height/2 - (obj.height() / 2)
  10. });
  11. $("#object").delay(8000).hide(10);
  12. });
  13. // ]]>


  1. $swf = 'glass';
  2. $path = 'swf/'.$swf.'.swf';
  3.  
  4. <div id="object">
  5. <object type="application/x-shockwave-flash" width="100%" height="100%" data="'.$path.'">
  6. <param name="quality" value="high" />
  7. <param name="movie" value="'.$path.'" />
  8. <param name="menu" value="false" />
  9. <param name="wmode" value="transparent" />
  10. </object>
  11. </div>

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.