dd- Le 05/06/2011 à 18:24 Bonjour
J'ai une image qui se répète en background de mon Body
body { width: 100%; height: 100%; background-image:url('fond.png');}
et j'essaie de la faire défiler en boucle comme dans les menus de jeux vidéos.
J'ai créé ce javascript :
[source=js]
<script language="javascript" type="text/javascript">
DecalX = 0 ;
DecalY = 0 ;
SpeedX = 1.2 ;
SpeedY = 0.8 ;
TailleX = 465 ;
TailleY = 465 ;
function Bouge()
{
DecalX = DecalX + SpeedX ;
DecalY = DecalY + SpeedY ;
if ( DecalX > TailleX ) { DecalX = DecalX - TailleX ; }
if ( DecalY > TailleY ) { DecalY = DecalY - TailleY ; }
window.document.body.style.backgroundPosition = SpeedX + "px " + SpeedY + "px" ;
}
setInterval("Bouge()", 100 );
</script>
[/source]
Mais ça n'a aucun effet... Dites-moi où est mon erreur svp.
(Ca fait quoi le JS, ça crée du HTML ?)
Nil Le 05/06/2011 à 20:21 (Ca peut faire plein de choses... Là, en l'occurrence, ça modifie la propriété du CSS à la volée pour décaler l'image définie comme fond de page).
Zeph Le 06/06/2011 à 10:34 Pour le problème de vitesse, tu peux peut-être essayer d'arrondir DecalX et DecalY en coordonnées entières avant de les utiliser ; je ne sais pas si ça joue ici, mais dans certains cas utiliser des coordonnées avec des chiffres après la virgule peut être assez lent.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
dd- Le 06/06/2011 à 22:48 En effet ça lag moins, merci du conseil.
Spipu Le 14/06/2011 à 14:19 en règle générale (et quelque soit le langage de programmation), quand on cherche à optimiser, il faut toujours préférer l'utilisation d'entiers plutôt que de flottants. ca accélère toujours les choses rien que pour les 4 opérations de base...
Zeph Le 14/06/2011 à 14:46 En l'occurrence c'est pas tellement le gain sur les opérations mathématiques qui est intéressant, mais le fait qu'avoir des coordonnées non-entières oblige le moteur de rendu à calculer la couleur de chaque pixel de l'image finale à partir de tous les pixels source qui sont à cheval dessus (et de leurs couvertures respectives), ce qui est bien plus coûteux que de faire simplement l'opération "1 pixel source -> 1 pixel rendu".

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Spipu Le 14/06/2011 à 15:34 vi en effet, j'avais loupé ce point