No cóż tworzę grę i chciałbym zobaczyc co myślicie na temat moich skryptów.
Link:
http://ehand.muminski.be/ajax/Skrypt pełną moca
http://ehand.mumin.tdt.org.pl Login: root hasło: qwerty
Chodzi o loader który wczytuje odpowiedni plik. W zależności od zastosowania wykonuje go jako eval lub dołacza jako text do podanego diva(domyslnie do M_text).
użyję Znacznika \[php\] aby pokolorowalo ładnie kod

<?php
//Autor skryptu Michał "Meetal" Środek - eHand Team
// Skrypt może być wykożystywany z zachowaniem kilku pierwszych linijek informując
ych o autorze
// Strona eHand Teamu: http://ehand.ahh.pl
// B_ = bool
var onload
=Array(); // czy dany plik zostal zaladowany var onsubmitpost
=Array(); // funkcje modulów wykonywana w momecie zainicjowania wysylania zapytan metoda POS
T var onsubmitpost_ok
=Array(); // funkcje modułów wykonywane w momencie zakonczenia zaptania POST
var http_request = false; // obiekt ajax
var B_wait = 0; // czy skrypt ma czekać z wysylaniem zapytan
var E_url=null; // aktualna nazwa wczytywanego pliku (E od error mialo to byc do generowania bledow)
var TEMP_counter=0; // licznik zliczający ilosc stron do zaladowania
var MY_counter=0; // licznik zliczający ilosć stron zaladowanych
var types
=Array(); // tablica zawierająca rodzaje plikow(czy to jest plik *.php/html itp czy *.js(zawuierający kod js) var div
= Array(); // tablica przechowująca nazwy DIVow ktorych innerHTML zostanie zastapiony prze tr
esc ladowanego pliku var B_post=false; // czy do aktualnego pliku ma byc uzyta metoda POST
var CODE_counter=0; // licznik zaladowanych plikow (uzywany jako &code= w adresie aby wymusic pobranie strony a nie odczatanie jej z pamieci c
ache)
function makeRequest(method,url,post) // podajemy modote, adres pliku oraz ewentualnie kod post np zonk=zonk&knoz=knoz&qwerty=uiop
{
if(method=='POST') {E_url=url; B_post=true;}
else
{
//----------------------------------
B_wait++;
E_url=url;
//----------------------------------
}
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Nie moża stworzyć instancji obiektu XMLHTTP.');
return false;
}
http_request.onreadystatechange = alertContents;
// var code=Math.round(Math.random()*4)*Math.round(Math.random()*8)*Math.round(Math.random()*15);
// if(url.match("[?]")=="?") code='&code='+code; else code='?code='+code;
CODE_counter++;
//najpierw byla metoda losująca kod teraz po prostu za każdym razem jest to o 1 wi
ększa wartość
// jesli w nazwie pliku jest uzyty znak '?' dodajemy kod po przez &
if(url.match("[?]")=="?") var code='&code='+CODE_counter; else var code='?code='+CODE_counter;
http_request.open(method, url+code, true); // wykonujemy zapytanie
if(B_post) // jeśli jest to zapytanie POST wysylamy naglowki
{
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//http_request.setRequestHeader("Content-length", post.length);
//http_request.setRequestHeader("Connection", "close");
}
http_request.send(post);
}
var B_loadUrl=false; // czy teraz jest ladowany plik URL
var B_loadJS=false; // czy teraz jest ladowany plik JS
function alertContents()
{
if (http_request.readyState == 4)
{
if (http_request.status == 200)
{
if(B_post) // jesli jest wykonane zapytanie POST
{
B_post=false;
//alert("return: "+http_request.responseText);
if(onsubmitpost_ok[E_url]) onsubmitpost_ok[E_url](); // jesli modul posiada funkcje onsubmitpost_ok to wywolujemy ja
}
else
{
if(types[MY_counter]=='JS') // jesli plik jest kodem JavaScript
{
//alert("return: "+http_request.responseText);
eval(http_request
.responseText
); // wykonujemy kod if(onload[E_url]) onload[E_url](); // jesli modul posiada konstruktor to wywolujemy go
B_loadJS=false;
}
else if(types[MY_counter]=='URL')
{
document.getElementById(div[MY_counter]).innerHTML = http_request.responseText; // dodajemy kod do odpowiedniego diva
if(onload[E_url]) onload[E_url](); // jesli modul posiada konstruktor to wywolujemy go
B_loadUrl=false;
}
MY_counter++;
}
} else alert(E_url+': Connection Error.');
if(TEMP_counter==MY_counter) // jesli wszystkie pliki zostaly zaladowane
{
TEMP_counter=0;
MY_counter=0;
document.getElementById('M_loading').style.visibility='hidden'; // tabelka LOADING
}
}
else document.getElementById('M_loading').style.visibility='visible'; // tabelka LOADING
}
var myURL='';
function loadUrl(url)
{
if(files[MY_counter]!=url || B_post) Timeout[url] = window.setTimeout('loadUrl("'+url+'")', 500); // jesli nie jest kolej tego pliku nastepuje rekurencja
else
{
if (Timeout[url])
{
window.clearTimeout(Timeout[url]);
}
if(url==myURL)
{
x=confirm("Wybrana strona jest wlasnie zaladowana. Czy chcesz ją odświerzyc?");
if(x)
{
myURL=null;
loadUrl(url);
}
else TEMP_counter--;
}
else
{
myURL=url;
B_loadUrl=true;
makeRequest('GET', url,null);
}
}
}
function loadJS(url,load) // ladujemy plik
{
if(files[MY_counter]!=url || B_post) Timeout[url] = window.setTimeout('loadJS("'+url+'",'+load+')', 500); // jesli nie jest kolej tego pliku nastepuje rekurencja
else
{
if (Timeout[url])
{
window.clearTimeout(Timeout[url]); // resetujemy timer
}
if(myJS[url]==true && !load) // jesli nie zostal zaladowany
{
TEMP_counter--; // zmniejszamy liczbe plikow do zaladowania
if(TEMP_counter==MY_counter) // jesli wszystkie pliki sa zaladowane zerujemy licznik
{
TEMP_counter=0;
MY_counter=0;
document.getElementById('M_loading').style.visibility='hidden'; // ukrywamy tabelke z napisem LOADING
}
}
else
{
myJS[url]=true;
B_loadJS=true;
B_loadUrl=false;
makeRequest('GET', url,null);
}
}
}
function setJS(url,load) // ustalamy jakis skrypt do zaladowania
{
if(myJS[url]!=true || load)
{
files[TEMP_counter]=url;
types[TEMP_counter]='JS';
TEMP_counter++;
loadJS(url,load);
}
}
function setUrl(url,divname) // ustalamy jakas strone do zaladowania
{
files[TEMP_counter]=url;
types[TEMP_counter]='URL';
if(divname) div[TEMP_counter]=divname; else div[TEMP_counter]='M_text'; // jesli zostal podany DIV do ktorego mamy dodać text to zmienna div[id pliku] prz
yjmuje jego wartosc. Domyslny div to M_text
TEMP_counter++;
loadUrl(url);
}
?>
Aby całość dzialała niezbędny jest DIV o id = M_text oraz okienko preloadera
Kod
<!--LOADING FORM-->
<div id="M_loading">
<table id="preloaderTable">
<tr><td align="center">
<table width="200" height="50" bgcolor="#de5522" style="vertical-align: middle; border:1px solid white; font-weight:bold; font-size :15px;"><tr><td align="center">Loading...<br/>
<br/><a href="javascript:hideLoading();" style="color:black; font-weight:normal;">Close Preloader</a>
</td></tr></table>
<br/><br/><br/>
</td></tr>
</table>
</div>
<!--LOADING FORM-->
<script language="javascript" type="text/javascript">
<!--
/*
SKRYPT pobiera szerokość i wysokosc okna
ustawia je jako szerokosc i wysokosc niewidzialnej tabelki ktora blokuje całego layouta(z malymi wyjatkami z-index) abypodczas ladowania nie dało sie w nic kliknać...
*/
if (parseInt(navigator.appVersion)>3) {
if (navigator.appName=="Netscape") {
winW = window.innerWidth;
winH = window.innerHeight;
}
if (navigator.appName.indexOf("Microsoft")!=-1) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
}
document.getElementById('preloaderTable').style.height=winH-10; // odejmujemy 10 aby na IE nie pokazywaly sie scrolle;]
document.getElementById('preloaderTable').style.width=winW-10;
window.hideLoading = function()
{
document.getElementById('M_loading').style.visibility='hidden';
}
//-->
</script>
No i krótki plik css zawierający style preloadera aby byl jako wycentrowany fixed

na wszystkich przegladarkach...
Kod
div#M_loading
{
position: absolute;
padding:0;
margin:0;
top: 0;
left: 0;
}
@media screen
{
div#M_loading
{
position: fixed;
}
* html
{
overflow-y: hidden;
}
* html body
{
overflow-y: auto;
height: 100%;
padding: 0;
font-size: 100%;
}
* html div#M_loading
{
position: absolute;
}
}
System zamykający preloader (nalezy dodać pod koniec strony)
Kod
<script language="javascript" type="text/javascript">
<!--
hideLoading();
//-->
</script>
Ten post edytował SHiP 8.01.2006, 17:02:53