begin process at 2010 03 21 15:36:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > DU DOM EN SVG : UNE HORLOGE ANALOGIQUE

DU DOM EN SVG : UNE HORLOGE ANALOGIQUE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :clock, horlogo, analogique, vectorielle, svg Niveau :Initié Date de création :19/06/2007 Vu / téléchargé :7 872 / 367

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
le SVG est un format xml qui decrit une image vectorielle, ca permet de faire generer a du php ou autre, du svg, et ca permet a du javascript de manipuler du svg... c'est cet apsect des choses que nous testerons :)
demo en ligne
http://coucou747.hopto.org/site/clock.svg
MS IE ne le fait toujours pas tourner, il ne sait lire le svg que si on lui donne un joli plugin, c'est domage, firefox supporte ca depuis plus d'un an, et c'est desormais un standard du W3C (donc ca devrait vennir sous IE normalement)

On utilise le DOM pour modifier les attributs et pour ajouter au chargement les petits cercles qui indiquent heures, quart d'heures et minutes

Source

  • <?xml version="1.0" standalone="no"?>
  • <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  • <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" >
  • <g stroke="black">
  • <line x1="50" x2="50" y1="50" y2="5" stroke-width=".5" id="secondes" />
  • <line x1="50" x2="50" y1="50" y2="15" stroke-width="1" id="minutes" />
  • <line x1="50" x2="50" y1="50" y2="25" stroke-width="1.5" id="heures" />
  • </g>
  • <g stroke="black" id="marques">
  • <circle cx="50" cy="50" r="3" stroke-width="1" fill="white" id="small"/>
  • </g>
  • <script type="text/javascript">
  • <![CDATA[
  • var SVG_NS ="http://www.w3.org/2000/svg";
  • const pi=3.141592754
  • function ANIM(){
  • a=new Date();
  • h=a.getHours()%12;
  • m=a.getMinutes();
  • s=a.getSeconds();
  • m+=s/60;
  • h+=m/60;
  • document.getElementById("heures").setAttribute("x2", Math.cos((h-3)/6*pi)*25+50);
  • document.getElementById("heures").setAttribute("y2", Math.sin((h-3)/6*pi)*25+50);
  • document.getElementById("minutes").setAttribute("x2", Math.cos((m-15)/30*pi)*35+50);
  • document.getElementById("minutes").setAttribute("y2", Math.sin((m-15)/30*pi)*35+50);
  • document.getElementById("secondes").setAttribute("x2", Math.cos((s-15)/30*pi)*45+50);
  • document.getElementById("secondes").setAttribute("y2", Math.sin((s-15)/30*pi)*45+50);
  • setTimeout("ANIM()", 1000);
  • }
  • ANIM(); // appel de l\'animation
  • var p=document.getElementById("marques");
  • var b=document.getElementById("small");
  • for (i=0;i<60;i++){
  • a=document.createElementNS(SVG_NS, "circle");
  • a.setAttribute("cx", Math.cos((i-15)/30*pi)*47+50);
  • a.setAttribute("cy", Math.sin((i-15)/30*pi)*47+50);
  • a.setAttribute("r", "2");
  • if (i%15==0){
  • a.setAttribute("fill", "black");
  • }else if (i%5==0){
  • a.setAttribute("fill", "gray");
  • }else{
  • a.setAttribute("fill", "white");
  • }
  • a.setAttribute("stroke-width", "0.3");
  • p.appendChild(a);
  • }
  • ]]>
  • </script>
  • </svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" >
	<g stroke="black">
		<line x1="50" x2="50" y1="50" y2="5" stroke-width=".5" id="secondes" />
		<line x1="50" x2="50" y1="50" y2="15" stroke-width="1" id="minutes" />
		<line x1="50" x2="50" y1="50" y2="25" stroke-width="1.5" id="heures" />
	</g>
	<g stroke="black" id="marques">
		<circle cx="50" cy="50" r="3" stroke-width="1" fill="white" id="small"/>
	</g>
	<script type="text/javascript">
	<![CDATA[
		var SVG_NS ="http://www.w3.org/2000/svg";
		const pi=3.141592754
		function ANIM(){
			a=new Date();
			h=a.getHours()%12;
			m=a.getMinutes();
			s=a.getSeconds();
			m+=s/60;
			h+=m/60;
			document.getElementById("heures").setAttribute("x2", Math.cos((h-3)/6*pi)*25+50);
			document.getElementById("heures").setAttribute("y2", Math.sin((h-3)/6*pi)*25+50);
			document.getElementById("minutes").setAttribute("x2", Math.cos((m-15)/30*pi)*35+50);
			document.getElementById("minutes").setAttribute("y2", Math.sin((m-15)/30*pi)*35+50);
			document.getElementById("secondes").setAttribute("x2", Math.cos((s-15)/30*pi)*45+50);
			document.getElementById("secondes").setAttribute("y2", Math.sin((s-15)/30*pi)*45+50);
			setTimeout("ANIM()", 1000);
		}
		ANIM();	// appel de l\'animation
		var p=document.getElementById("marques");
		var b=document.getElementById("small");
		for (i=0;i<60;i++){
			a=document.createElementNS(SVG_NS, "circle");
			a.setAttribute("cx", Math.cos((i-15)/30*pi)*47+50);
			a.setAttribute("cy", Math.sin((i-15)/30*pi)*47+50);
			a.setAttribute("r", "2");
			if (i%15==0){
				a.setAttribute("fill", "black");
			}else if (i%5==0){
				a.setAttribute("fill", "gray");
			}else{
				a.setAttribute("fill", "white");
			}
			a.setAttribute("stroke-width", "0.3");
			p.appendChild(a);
		}
	]]>
	</script>
</svg>

 Conclusion

j'ai eu du mal a trouver que createElement ne fonctionnait pas et qu'il fallait utiliser createElementNS (appendChild ne fonctionnait pas avec createElement)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • clock.svgTélécharger ce fichier [Réservé aux membres club]1 998 octets

Télécharger le zip


 Sources du même auteur

NOTATION CLASSIQUE VERS NOTATION NPI
LIST.ML D'OCAML EN JAVASCRIPT
Source avec Zip Source avec une capture UN CHRONOMETRE EN SVG+JAVASCRIPT
Source avec Zip Source avec une capture WYSIWYG TOTALEMENT OO
Source avec Zip TRI DE TABLEAUX HTML

 Sources de la même categorie

HTML_ENTITIES_DECODE par zen69
ACCÈS À LA MÉTHODE SETATTRIBUTE('STYLE','') SOUS IE6 par masternico
OUTIL DE SÉLECTION par jdmcreator
Source avec Zip SIMPLIFIER LA CREATION DYNAMIQUE D'ELEMENT HTML par kazma
DÉTECTER SI CSS EST ACTIVÉ par jdmcreator

 Sources en rapport avec celle ci

Source avec Zip SVG3DCAMEMBERT par opossum_farceur
Source avec Zip Source avec une capture UN CHRONOMETRE EN SVG+JAVASCRIPT par coucou747
Source avec Zip HORLOGE DYNAMIQUE À AFFICHAGE DIGITAL par vbbreizh
Source avec Zip Source avec une capture HORLOGE BINAIRE LED par Angelus4

Commentaires et avis

Commentaire de yousfane le 19/06/2007 11:03:31

Salut
Voici où on peut télécharger le plugin de svg pour le faire marcher sous IE
http://www.adobe.com/svg/viewer/install/mainframed.html

Commentaire de bultez le 19/06/2007 15:03:35



rien à faire... si coucou ne critique
pas IE, il n'est pas content.

<humour>
et pour une fois que je peux râler dans  ce sens
( car en général c'est : ça marche avec IE, pas avec FF ! )
je ne vais pas m'en priver :
qu'est-ce que c'est que ce machin qui ne fonctionne
même pas avec IE ?
et la comptatibilité alors  ?
;-D
</humour>

trêve de plaisanterie...
très intéressant et très instructif.
j'avais fait un truc ( Alarme Multiple Horloge à Aiguilles
: AMHA ) qui affichait une horloge graphique, mais moins
"bien dessinée" et surtout, hélas, exclusif IE, avec peu
de chances que FF et consors permettent ça un jour.

avec IE, malgré le plugins [ qui sont très rares
à installer par rapport à FF quand même ! ;-)) ] :
Erreur de syntaxe Line :4, Column 2.
mais : reste à rendre compatible et ça ouvre bien
des perspectives.

Commentaire de Arto_8000 le 19/06/2007 15:26:59

J'aimais bien aussi ton autre truc que tu avais fait avec SVG, peut importe comment tu appeles ça :

http://82.127.116.43:82/site/a.svg.php?y=20

Commentaire de rambc le 20/06/2007 11:24:41

Question peut-être stupide, mais peut-on intégrer une image SVG dans un DIV par exemple ?

Commentaire de coucou747 le 20/06/2007 19:42:48

Lieber bultez....
ca fait longtemps que l'informatique ne me contente plus...
j'ai absolument rien contre toi, et chaque fois que tu fais un code IE only, je ne vais pas poster sur ta source un truc genre :
"des qu'il peut montrer que ff ne fait pas tourner un truc, il ne se prive pas"
le svg, j'ai decouvert ca il y a plus d'un an, j'ai attendu croyant que ca passerait avec une eventuelle extention d'IE pour ne pas recevoir ce genre de commentaires, malheureusement, IE n'a pas evolue dans ce sens, ca viendra peut-etre, mais c'est pas encore le cas... j'allais pas me priver...

Je ne vois pas ou j'ai critique IE, j'ai juste fait en sorte de ne pas avoir de 1/10 motif : ca ne marche pas, j'ai prefere prevenir les gens pour qu'ils le lancent sous FF et non msie

rambc un svg se met dans une iframe par exemple

Commentaire de yousfane le 20/06/2007 20:22:38

Salut
J'ai lu sur un site que tout les navigateurs supporteront le svg en 2008 (c'est très proche) et que adobe supprimera son viewer en 2009

Commentaire de coucou747 le 20/06/2007 20:26:28

quand tu veux faire un graph en php, t'as pas forcement envie de charger gd et de faire de la lourde manipulation d'images alors que la generation d'un xml c'est easy... ca peut etre super utile comme truc...

Commentaire de FraGag le 23/06/2007 02:59:35

rambc >

Oui, c'est possible, mais pour continuer à respecter les standards, il faut utiliser une autre DTD : le profil XHTML + MathML + SVG.

<!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
    "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

Il va falloir utiliser le préfixe "svg" (à moins de le changer manuellement) pour chaque élément SVG inclus dans un document utilisant cette DTD.

Pour ceux qui ne le sauraient pas, MathML permet d'afficher des formules/équations mathématiques.

Plus d'informations ici : http://www.w3.org/TR/XHTMLplusMathMLplusSVG/

Commentaire de coucou747 le 25/06/2007 18:08:37

mathml, c'est encore moins utilise/supporte... t'as des sites qui font un traitement serveur pour ca, certains font du latex, d'autres du rpn (moi :) cf http://www.phpcs.com/codes/EVALUER-EXPRESSION-MATHEMATIQUE-UTILISATION-ARBRE-BINAIRE_42732.aspx et http://www.phpcs.com/codes/IMAGES-EQUATIONS_34260.aspx )

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

javascipt [ par bichonade ] bonjour,je continue a "programmer" en javascript et&nbsp; HTML mais je suis un peu embete parceque j'aimerais ins&#233;rer une image vectorielle a lin horloge analogique [ par yanne1985 ] salut tout le monde j'ai telecharg&#233; un codes source d'une montre analogique dont le type du fichier est js svp comment je peux l'afficher sur une Horloge analogique [ par monetoile ] BonjourJe suis débutante et je voudrais savoir comment installer une horloge analogique J'ai le script java html qu'une amie ma fait, mais je ne sais surveiller une fonction [ par karakvb ] Bonjour,il y a t'il un moyen pour savoir lorsqu'une fonction javascript est appelée?par exemple, j'ai un fichier js qui contient une fonction qui se c mettr a jour svg avec xml httprequest [ par oussamatique ] oussama bsr tout le mondej'ai créé une carte dynamyque sous svg maintenant je veux utilisé la technologé ajax en plus précis le xml h impression + dessin SVG [ par gillespockpock ] Bonjour, je suis sur un projet Javascript + html et j'utilise le SVG pour tracer des courbes. Le problème est que lorsque je veux imprimer la page HTM Svg avec scrollbar [ par DJIGO84 ] Bonjour tout le monde j'ai un document SVG et j'y ajoute dynamiquement des elements (avec javascript) à savoir des rectangles,cercles...Cepandant j' svg + audio [ par RIMADANCE1 ] Bonjour, j'ai à faire un jeu de carte en svg mais j'ai  un problème avec l'audio.  voilà le code:&lt;?xml version="1.0" encoding="UTF-8" standalone="n


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales