Défilement horizontal

Eléphant du PHP | 424 Messages

24 janv. 2007, 15:40

Bonjour,

J'ai récupéré ceci :
function NewsTicker(x,y,width,height) {
	this.name = 'NewsTicker'+(NewsTicker.count++)
	this.x = x
	this.y = y
	this.w = width
	this.h = height
	this.obj = this.name + "Object"
	eval(this.obj + "=this")
	this.items = new Array()
	this.scrollCount = 0

	this.pauseLength = 0	
	this.inc = 2
	this.speed = 80
	this.fromX = 0
	this.fromY = this.x
	this.bgColor = null

	this.addItem = NewsTickerAddItem
	this.activate = NewsTickerActivate
	this.build = NewsTickerBuild
	this.start = NewsTickerStart
	this.stop = NewsTickerStop
	this.slide = NewsTickerSlide
}
function NewsTickerAddItem(text) {
	var i = this.items.length
	this.items[i] = new Object()
	this.items[i].text = text
}
function NewsTickerBuild() {
	this.css = css(this.name,this.x,this.y,this.w,this.h)
	this.div = '<div id="'+this.name+'">'
	for (var i=0;i<this.items.length;i++) {
		this.css += css(this.name+'Item'+i,0,0,this.w,this.h,this.bgColor,'hidden')
		this.div += '<div id="'+this.name+'Item'+i+'">'+this.items[i].text+'</div>'
	}
	this.div += '</div>'
}
function NewsTickerActivate(autostart) {
	for (var i=0;i<this.items.length;i++) {
		this.items[i].lyr = new DynLayer(this.name+'Item'+i)
		this.items[i].lyr.moveTo(this.fromX,this.fromY)
		this.items[i].lyr.show()
	}
	this.items[0].lyr.moveTo(0,0)
	this.lyr = new DynLayer(this.name)
	var num = Math.sqrt(Math.pow(this.fromX,2) + Math.pow(this.fromY,2))/this.inc
	this.dx = this.fromX/num || 0
	this.dy = this.fromY/num || 0
	if (autostart!=false) setTimeout(this.obj+'.start()',this.pauseLength)
}
function NewsTickerStart() {
	if (!this.started) {
	this.started = true
	var t = this.scrollCount
	var b = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1
	var obj1 = this.items[t].lyr.obj
	var obj2 = this.items[b].lyr.obj
	this.timer = setInterval(this.obj+'.slide('+obj1+','+obj2+')',this.speed)
	}
}
function NewsTickerStop() {
	clearInterval(this.timer)
	this.started = false
}
function NewsTickerSlide(obj1,obj2) {
	obj1.moveBy(-this.dx,-this.dy)
	obj2.moveBy(-this.dx,-this.dy)
	if ((this.dx!=0 && Math.floor(obj2.x)==0) || (this.dy!=0 && Math.floor(obj2.y)==0)) {
		clearInterval(this.timer)
		obj1.moveTo(this.fromX,this.fromY)
		obj2.moveTo(0,0)
		this.scrollCount = (this.scrollCount==this.items.length-1)? 0 : this.scrollCount+1
		this.timer = setTimeout(this.obj+'.started=false;'+this.obj+'.start()',this.pauseLength)
	}
}
NewsTicker.count = 0
et je n'arrive pas à faire défiler mes photos en horizontal... actuellement les photos défilent en vertical !

Pourriez vous m'aider ??? merci
Youpi Youpi Yo !

ViPHP
AB
ViPHP | 5818 Messages

24 janv. 2007, 18:18

Je ne suis pas assez calé en JS pour te dépanner sur ce script.

Par contre, perso, j'utilise un script beaucoup plus simple pour la même fonctionalité : http://www.phpfrance.com/forums/voir_sujet-11093.php
La seule resrtriction pour l'instant est qu'on ne peut insérer qu'un module défilant par page.

Eléphant du PHP | 424 Messages

25 janv. 2007, 13:39

Et pour mon code personne ne peux me répondre ?

Car je gélere ! merci :-)
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

25 janv. 2007, 14:01

sans lire ton code, la solution pour inverser le déplacement vertical en horizontal est d'inverser les abssices et les ordonnées XY.

dans un déplacement vertical, un objet est déplacé (moveTo) sur un axe X fixe en variant les Y (Y++ ou Y--)

Inversement, le déplacement horizontal fixe l'axe Y et varie les X (X++ ou X--)

Les axes XY de la fenêtre d'affichage étant :
  • 0-----x0-----x1----------+ Axe X
    |
    |
    y0
    |
    |
    y1
    |
    |
    +

    Axe Y
Légende: Les X sont les colonnes et les Y sont les lignes
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 424 Messages

25 janv. 2007, 15:40

Ok alors avec tes explications j'ai trouvé comment faire en revanche mes images ont un espacement entre elles trop importante et je n'arrive pas à régler cette espace.

Auriez vous une idée ?
MErci
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

25 janv. 2007, 15:47

- calcule bien la position X du (LEFT) suivant par rapport au X (LEFT) + la largeur (WIDTH) du pécédent
- utilise des style CSS propres pour tes objets porteurs (DIV) qui se déplacent et pour leur contenu (tes images)
Il faut fixer surtout les marges (PADDING) des DIV ainsi que les images contenues.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 424 Messages

25 janv. 2007, 17:52

J'ai beau chercher mais je ne trouve pas quelle valeur changer pour palier à mon probleme !

Peux tu me donner un indice ? :D

Merci d'avance
Youpi Youpi Yo !

Eléphant du PHP | 424 Messages

25 janv. 2007, 23:22

Toujours personne pour m'aider ???

:cry:

Je n'en peux plus de chercher....
Youpi Youpi Yo !