Obtenir le meme effet que ce site ?

Signaler
Messages postés
12
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008
-
Messages postés
12
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008
-
Bonjour je cherche à reproduire cet effet : http://www.highlife.fr/#salon-1 à savoir l'effet sur lequel la TV, les canapés etc bougent en fonction du mouvement de la souris.


J'ai un début de réponse avec une source de diaporama qui défile selon
le sens du mouvement de la souris, mais le problème est que justement
le défilement se fait à l'infini.


Merci d'avance

6 réponses

Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

pour chacun de tes clips tu définis une valeur de déplacement latérale maximale
et une position x initiale

monClip1.deplacementMax=100 // = 100 pixels a gauche et à droite
monClip2.deplacementMax=75
monClip3.deplacementMax=50
monClip1.positionInitiale=500
monClip2.positionInitiale=525
monClip3.positionInitiale=475

//tu définis une variable qui contient la moitié de la taille de ton animation
var demiEcran:Number=1000/2 // si ton anim fait 1000 pixels de largeur

//ensuite à chaque mouvement de souris tu lances une fonction
var mouseListener:Object = newObject();
mouseListener.onMouseMove = function(){{
// selon la position de la souris
// définition du pourcentage de mouvement
var pourcent:Number=0
var posSouris:Number=_xmouse
if (posSouris<demiEcran){
    pourcent=-((demiEcran-posSouris)/demiEcran)
}else{
    pourcent=((posSouris-demiEcran)/demiEcran)
}

// ensuite on applique ce pourcentage de déplacement a tous les clips
monClip1._x=
monClip1.positionInitiale+Math.round(monClip1.deplacementMax*pourcent)
monClip2._x=
monClip2.positionInitiale+Math.round(monClip2.deplacementMax*pourcent)
monClip3._x=
monClip3.positionInitiale+Math.round(monClip2.deplacementMax*pourcent)
}

Mouse.addListener(mouseListener);

@+
Messages postés
12
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008

Bonjour, merci pour ta réponse.

J'ai donc mis le code que tu m'a donné sur la 1ere frame, j'ai crée 3 autres calques contenant chacun un clip avec comme nom d'occurence monClip1 , 2 et 3.

Lorsque je lance l'animation j'ai d'abord une erreur à la ligne 13 :

var mouseListener:Object = newObject();
mouseListener.onMouseMove = function(){{

il semble qu'il y ait un { en trop i la fin de commande, j'en ai dont retiré un.L'animation se lance plus d'erreur mais rien ne se passe aucun clip de bouge, tu vois d'ou ca peut venir ?
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Oups,

remplace
var mouseListener:Object = newObject();
mouseListener.onMouseMove = function(){{

par
var mouseListener:Object = {};
mouseListener.onMouseMove = function(){

@+
Messages postés
12
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008

Ok ca fonctionne !!!! Merci  !!! Dernier petit truc a te demander, j'aimerais que le mouvement des clips suivent une sorte d'acceleration/décéleration , je pense qu'il doit y avoir une histoire de division quelque part pour avoir cet effet...
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Hum,

non, vu le script que je t'ai proposé, les clip sont positionné 'instantanément' sans ralenti ou accéleration.
Pour cela tu doit plutot passer par des Tweens qui possedes ce type de fonction (accéleration/ranelenti) mais il faudra sérieusement revoir le script alors.

Sinon, simplement pour avoir un petit effet on peut jouer avec la fonction x² mais le suis pas sur que c'est cela que tu envisages
remplace la fonction par celle-ci

mouseListener.onMouseMove = function(){
var pourcent:Number=0
var posSouris:Number=_xmouse
if (posSouris<demiEcran){
    pourcent=-((demiEcran-posSouris)/demiEcran)/10
}else{
    pourcent=((posSouris-demiEcran)/demiEcran)/10
}

monClip1._x= monClip1.positionInitiale+Math.round(monClip1.deplacementMax*(pourcent*pourcent))
monClip2._x= monClip2.positionInitiale+Math.round(monClip2.deplacementMax*(pourcent*pourcent))
monClip3._x= monClip3.positionInitiale+Math.round(monClip3.deplacementMax*(pourcent*pourcent))
}

@+
Messages postés
12
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008

ahahahah ok ! bon je laisse tomber mes connaissances en actionscript sont trop light ! en tout cas merci pour ton aide.