SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - wiświetlanie animacji flash po załadowaniu całej strony

felis - Sob 21 Sty, 2006 22:49
Temat postu: wiświetlanie animacji flash po załadowaniu całej strony
Witam
Zrobiłem swoją pierwszą w życiu animację flash i zamieściłem na stronie html.
Wszystko działa jak powinno tylko, że animacja będąca gdzieś na początku kodu html wyświetla się zanim załadują się pozostałe elementy.
Czy można zrobić coś takiego, aby animacja rozpoczynała wyświetlanie dopiero gdy cała strona zostanie załadowana do przeglądarki.
Dzięki za pomoc
Pozdrawiam

romekrtk - Nie 22 Sty, 2006 09:33

uzyj funkcji preloader

http://swish.wodip.opole....wtopic.php?t=32

felis - Nie 22 Sty, 2006 14:10

Dzięki
przeanalizuje funkcje preloadera, ale zdaje mi się że nie o to chodziło.
Z tego co wyczytałem sprawdza ona stopień załadowania filmu, a nie strony html.
U mnie animacja jest niewielkim elementem strony i ładuje się bardzo szybko.
Wygląda to brzydko, bo animacja już się wyświetla a w tym czasie dopiero ładują się np.: przyciski (html/java).
Patrząc nie zwraca się uwagi na animację bo wjeżdżający napis zlewa się z innymi ładującymi się elementami strony.
Szukam więc takiego czegoś co sprawdzi stopień załadowania kodu html i dopiero gdy on osiągnie 100% zacznie wyświetlać animację.
Pozdrawiam

romekrtk - Nie 22 Sty, 2006 15:42

a rozumiem to zrob zeby strona zajmowala mniej kb odchodz ją. gdzies widzialem taką strone wlasnie z takim ladownaiem nawet bylo procentowe ale juz niedziala:/ zapytaj na jakims innym forum bardziej poswieconym html niz swishowi
felis - Nie 22 Sty, 2006 16:35

Witam
OK poszukam na innym forum. Myślałem jednak, że da się to gdzieś zadeklarować w animacji by nie zaczęła się wyświetlać, zanim nie będzie całej strony.
A kodu nie mam jak odchudzić, bo nie jest zbyt duży i nie ma co obcinać. Na dodatek dokonuje preloadu wszystkich użytych obrazków jeszcze przed wyświetleniem animacji. Tylko, że ta animacja to jest tak mała, że tak czy owak startuje momentalnie. Nawet jak dodałem 2 sekundy pauzy na początku to i tak rusza przed załadowaniem strony. A cała strona ładuje się gdzieś ze 3 sekundy (na neostradzie 256).
Pozdrawiam i dziękuję za pomoc.

MBabelek - Nie 22 Sty, 2006 21:34

moze preloader java na strone html ?
graficzne przedstawienie ładowania się strony.
Sekcja BODY:

Kod:
<style>
<!--
.hide { position:absolute; visibility:hidden; }
.show { position:absolute; visibility:visible; }
-->
</style>

<SCRIPT LANGUAGE="JavaScript">

//Progress Bar script- by Todd King (tking@igpp.ucla.edu)
//Modified by JavaScript Kit for NS6, ability to specify duration
//Visit JavaScript Kit (http://javascriptkit.com) for script

var duration=3 // Specify duration of progress bar in seconds
var _progressWidth = 50;    // Display width of progress bar

var _progressBar = new String(".......... Laduje ..........");
var _progressEnd = 10;
var _progressAt = 0;


// Create and display the progress dialog.
// end: The number of steps to completion
function ProgressCreate(end) {
    // Initialize state variables
    _progressEnd = end;
    _progressAt = 0;

    // Move layer to center of window to show
    if (document.all) {    // Internet Explorer
        progress.className = 'show';
        progress.style.left = (document.body.clientWidth/2) - (progress.offsetWidth/2);
        progress.style.top = document.body.scrollTop+(document.body.clientHeight/2) - (progress.offsetHeight/2);
    } else if (document.layers) {    // Netscape
        document.progress.visibility = true;
        document.progress.left = (window.innerWidth/2) - 100;
        document.progress.top = pageYOffset+(window.innerHeight/2) - 40;
    } else if (document.getElementById) {    // Netscape 6+
        document.getElementById("progress").className = 'show';
        document.getElementById("progress").style.left = (window.innerWidth/2)- 100;
        document.getElementById("progress").style.top = pageYOffset+(window.innerHeight/2) - 40;
    }

    ProgressUpdate();    // Initialize bar
}

// Hide the progress layer
function ProgressDestroy() {
    // Move off screen to hide
    if (document.all) {    // Internet Explorer
        progress.className = 'hide';
    } else if (document.layers) {    // Netscape
        document.progress.visibility = false;
    } else if (document.getElementById) {    // Netscape 6+
        document.getElementById("progress").className = 'hide';
    }
}

// Increment the progress dialog one step
function ProgressStepIt() {
    _progressAt++;
    if(_progressAt > _progressEnd) _progressAt = _progressAt % _progressEnd;
    ProgressUpdate();
}

// Update the progress dialog with the current state
function ProgressUpdate() {
    var n = (_progressWidth / _progressEnd) * _progressAt;
    if (document.all) {    // Internet Explorer
        var bar = dialog.bar;
     } else if (document.layers) {    // Netscape
        var bar = document.layers["progress"].document.forms["dialog"].bar;
        n = n * 0.55;    // characters are larger
    } else if (document.getElementById){
                var bar=document.dialog.bar
        }
    var temp = _progressBar.substring(0, n);
    bar.value = temp;
}

// Demonstrate a use of the progress dialog.
function Demo() {
    ProgressCreate(10);
    window.setTimeout("Click()", 100);
}

function Click() {
    if(_progressAt >= _progressEnd) {
        ProgressDestroy();
        return;
    }
    ProgressStepIt();
    window.setTimeout("Click()", (duration-1)*1000/10);
}

function CallJS(jsStr) { //v2.0
  return eval(jsStr)
}

</script>

<SCRIPT LANGUAGE="JavaScript">

// Create layer for progress dialog
document.write("<span id=\"progress\" class=\"hide\">");
    document.write("<FORM name=dialog>");
    document.write("<TABLE border=2  bgcolor=\"#FFFFCC\">");
    document.write("<TR><TD ALIGN=\"center\">");
    document.write("Progress<br />");
    document.write("<input type=text name=\"bar\" size=\"" + _progressWidth/2 + "\"");
    if(document.all||document.getElementById)     // Microsoft, NS6
        document.write(" bar.style=\"color:navy;\">");
    else    // Netscape
        document.write(">");
    document.write("</TD></TR>");
    document.write("</TABLE>");
    document.write("</FORM>");
document.write("</span>");
ProgressDestroy();    // Hides

</script>


<form name="form1" method="post">

<input type="button" name="Demo" value="Display progress" onClick="CallJS('Demo()')">
</center>
</form>

<a href="javascript:CallJS('Demo()')">Text link example</a>

<br /><font face="arial" size="-2">This free script provided by</font><br />
<font face="arial, helvetica" size="-2"><a href="http://www.javascriptkit.com">JavaScript
Kit</a></font></p>

felis - Nie 22 Sty, 2006 22:00

Witam

Cytat:
moze preloader java na strone html ?


Tak przyszło mi do głowy to samo i dałem preloader. Wprawdzie o wiele prostszy, bo wyświetla tylko komunikat o ładowaniu, a potem już całą gotową stronę.

Wygląda to lepiej, ale nie jestem do końca przekonany bo:
1. Jak sam korzystam z netu to wolę widok ładującej się strony niż komunikat proszę czekać, gdyż zawsze można kliknąć już załadowany element i olać animację, która nie każdego interesuje.
2. I tak musiałem dać 3 puste sekundy na początku animacji, ponieważ zanim wygasła strona preloadera to ona była już w połowie. Ot widać jest tak malutka i szybka, że nawet wygaśniecie komunikatu proszę czekać jest zbyt długie.

Ale z tym preloaderem to zawsze jest jakieś rozwiązanie, więc w razie czego go zostawię.
Wpadłem też na inny pomysł i zastosowałem funkcję, która przerzuca animacje (obrazek) załadowaną na końcu kodu strony w jej inne dowolne miejsce czyli dokładnie to co chciałem. Niestety funkcja nie chce działać w tabelkach. A moja strona wykorzystuje tabelki.
Tak czy owak dziękuję za pomoc.
Pozdrawiam

JoyMachine - Sob 18 Lut, 2006 08:14
Temat postu: najlepiej
to nie odpalac automatycznie animacji tylko odpalac ja poprzez JS po zaladowaniu sie strony html. Kiedys to probowalem ale jakos nie chcialo dzialac... uruchomil ktos kiedys taka opcje?

Powered by phpBB modified by Przemo © 2003 phpBB Group