Panneau d'affichage v.2

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 396 fois - Téléchargée 28 fois

Contenu du snippet

Plus complet que le premier, il n'y a pas de limite
dans le nombre de phrases ou leur longueur, mais
ca peut ramer sur certain postes.

Source / Exemple :


<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT>
// 31-10-2003 - francktfr@systeme-d.net
// écrit pour http://www.systeme-d.net

var Blocs = new Array()
var Sentence = new Array()

Sentence.push("Un panneau d'affichage")
Sentence.push("comme ceux qu'on trouve")
Sentence.push("dans les garres ... :o)")
Blocs.push(Sentence)
Sentence = new Array()
Sentence.push("Vous y marquez ce que")
Sentence.push("vous voulez, il n'y a")
Sentence.push("pas de limites ...")
Blocs.push(Sentence)
Sentence = new Array()
Sentence.push("Ça pourrait faire un")
Sentence.push("bon lecteur de news")
Blocs.push(Sentence)

var iDones = new Array()	//	Tableau des caracteres placés
var TotalDone = 0			//	Total des caracteres placés
var RowSpeed = 700		//	Interval entre rangée (ms)
var ColSpeed = 10		//	Interval entre colonne (ms)
var BlockSpeed = 1000	//	Temps d'affichage de bloc de texte (ms)
var LenX = 0	//	Nombre de colonnes
var LenY = 0	//	Nombre de rangées
var CodeLetter = new Array()	//	Tableau des symboles HTML
for (i=32; i<255; i++){ if (i<127 || i>160) CodeLetter.push(String.fromCharCode(i))}	//	Remplissage du tableau
//	Cree un chaine avec que des " "
function Str(Len){
	var Result = ""
	for (s=1; s<=Len; s++){Result += " "}
	return(Result)
}
//	verification des phrases + mise a la bonne dimension et dimensions du tableau
function CheckLetters(){	
	var msg = ""
	for (i=0; i<Blocs.length; i++){
		if (LenY < Blocs[i].length){LenY = Blocs[i].length}
		for (j=0; j<Blocs[i].length; j++){
			for (a=0; a<Blocs[i][j].length; a++){
				var isin = 0
				for (c=0; c<CodeLetter.length; c++){
					if(CodeLetter[c] == Blocs[i][j].charAt(a)){isin = 1; break}
				}
				if(!isin){msg += Blocs[i][j][a] + " inconnu \n"}
			}
			if (LenX < Blocs[i][j].length){LenX = Blocs[i][j].length}
		}
	}
	if(msg != ""){alert(msg); return(0)}
	for (i=0; i<(LenX*LenY); i++){iDones.push(0)}
	//	Remplissage des lignes et caracteres manquants
	var diff = 0
	for (i=0; i<Blocs.length; i++){
		for (j=0; j<Blocs[i].length; j++){
			diff = LenX-Blocs[i][j].length
			if (diff){Blocs[i][j] += Str(diff)}	//	Complete le reste de la chaine
		}
		diff = LenY-Blocs[i].length
		if (diff){ for (j=0; j<diff; j++) {Blocs[i].push(Str(LenX))} }	//	creation d'une nouvelle chaine
	}
	return(1)
}
function InitPanel(Container){
	if (!CheckLetters()){return(0)}
	//	Création du tableau HTML
	var table = "<TABLE CELLPADDING=0 CELLSPACING=1 CLASS=Panel>\n"
	for (j=0; j<LenX; j++){table += "<COL WIDTH=13>"}
	for (i=0; i<LenY; i++){
		table += "<TR>"
		for (j=0; j<LenX; j++){table += "<TD HEIGHT=18 ID=AF_"+i+"_"+j+" CLASS=PanelCell> </TD>"}	
		table += "</TR>"
	}
	table += "</TABLE>"
	Container.innerHTML = table
	WriteBlock(0)
}
//	Retourne L'index du caractere
function CodeIndex(car){
	var res = CodeLetter.length
	for (i=0; i<CodeLetter.length; i++){if (car == CodeLetter[i]){return(i)}}
	return(0)
}
//	Passage au prochain bloc de phrases ou au premier
function NextBlock(BlockIndex){
	BlockIndex < (Blocs.length-1) ? BlockIndex++ : BlockIndex=0
	WriteBlock(BlockIndex)
}
//	Lance l'ecriture des phrases
function WriteBlock(i){
	for (a=0; a<(LenX*LenY); a++){iDones[a]=0}
	TotalDone = 0
	for (r=0; r<Blocs[i].length; r++){setTimeout("WriteRow("+i+", "+r+")",r*RowSpeed)}
}
//	Lance l'ecriture des lettres
function WriteRow(BlockIndex, RowIndex){
	for (l=0; l<Blocs[BlockIndex][RowIndex].length; l++){
		eval("var start = CodeIndex(AF_"+RowIndex+"_"+l+".innerText)")
		setTimeout("WriteLetter("+BlockIndex+", "+RowIndex+","+l+","+start+")",l*ColSpeed)
	}
}
function WriteLetter(BlockIndex, RowIndex, LetterIndex, CodeIndex){
	if (!iDones[(LenX*RowIndex)+(LetterIndex)])
		{
			eval("var Cel = AF_"+RowIndex+"_"+LetterIndex)
			if (Blocs[BlockIndex][RowIndex].charAt(LetterIndex) == CodeLetter[CodeIndex]){
				iDones[(LenX*RowIndex)+(LetterIndex)]++
				TotalDone++
				if (TotalDone >= (LenX*LenY)){setTimeout("NextBlock("+BlockIndex+")",BlockSpeed)}
			}
			Cel.innerText = CodeLetter[CodeIndex]
			CodeIndex < CodeLetter.length-1 ? CodeIndex++ : CodeIndex = 0
			setTimeout("WriteLetter("+BlockIndex+", "+RowIndex+", "+LetterIndex+","+CodeIndex+")",10)
		}
}
</SCRIPT>
<STYLE>
.Panel {FONT: 14 Courier; COLOR: #FFFFCC; TABLE-LAYOUT: fixed; TEXT-ALIGN: center; BACKGROUND: #000000}
.PanelCell {BORDER: 1 solid none; VERTICAL-ALIGN: middle; BACKGROUND: #006666}
</STYLE>
</HEAD>
<BODY ONLOAD="InitPanel(dtable)">

<DIV id=dtable></DIV>

</BODY>
</HTML>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1732
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
9 mars 2015
2
Génial, vraiment génial

10/10
Messages postés
22
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
14 août 2008

Super panneau d'affichage
par contre certains de mes visiteurs utilisant FireFox ne voient pas les lettres

Est ce quelqu'un pourrait me dire comment palier au problème ?
http://www.lapprentiweb.com/lsg/
Messages postés
127
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
6 mars 2009

TRES VISUEL - TRES PARAMETRABLE - CHAPEAU C EST BEAU ET BON-
KENAVO
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Dément ! Serieux c'est excellent ! Et en plus c'est entièrement configurable, alors chapeau !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.