Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2008, 10h19   #1
Invité de passage
 
Inscription : avril 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 15
Points : 3
Points : 3
Par défaut caroussel > déclenchement au survol

Bonjour a tous,

Je suis en train d'adapter le code d'un caroussel d'image pour la home page d'un gros site mais je bute sur une fonction que je n'arrive pas a développer. Le tuto (génial) de ce caroussel est disponible ici :lien

Je reproduis l'essentiel du code AS :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<blockquote>var hScene:Number = Stage.height;
var wScene:Number = Stage.width;
var numOfItems:Number;
var radiusX:Number=300;
var radiusY:Number=110;
var centerX:Number=wScene/2;
var centerY:Number=hScene/2;
var nSpeed:Number=0.05;
var perspective:Number=100; 
 <blockquote>//chargement du xml
function load_xml(path:String,type:String){
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad=function(){
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
//appel fonction de création du caroussel quand tout est chargé.
genereCarousel(nodes);
}
xml.load("xml/"+path);
} 
 <blockquote>function genereCarousel(nodes){
level = this.getNextHighestDepth();
this.createEmptyMovieClip("carrousel"+iCarousel,iCarousel);
//creation d'un MovieClip vide pour accueillir le caroussel
clipHote = this["carrousel"+iCarousel];
for (var i=0;i&lt;numOfItems ;i++){
//creation des Movieclip du caroussel (t)
var t=clipHote.attachMovie("item","item"+i,i+1);
t.angle = i* ((Math.PI*2)/numOfItems);
t._y=Math.sin(t.angle)*radiusY +centerY;
var s:Number = (t._y - perspective)/(centerY + radiusY - perspective)
t._xscale=t._yscale=s*50;
t._x=Math.cos(t.angle)*150+centerX;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.icon.smoothing=true;
//reflet
t.ref.inner.loadMovie(nodes[i].attributes.image);
t.swapDepths(Math.round(t._xscale) + 100 +i);
//mouvement
t.onEnterFrame = mover;
}
} 
 <blockquote>function mover(){
this.swapDepths(Math.round(this._xscale) + 100);
this._x=Math.cos(this.angle)* radiusX + centerX;
this._y=Math.sin(this.angle)* radiusY + centerY;
var s:Number = (this._y - perspective)/(centerY + radiusY- perspective);
this._xscale=this._yscale=s*100;
this.angle += nSpeed;
} 
 <blockquote>this.onMouseMove = function(){
//mise a jour de la variable de vitesse utilisée dans la fonction mover
nSpeed=(this._xmouse-centerX)/15000;
} 
</blockquote></blockquote></blockquote></blockquote></blockquote>
Mon objectif est le déclenchement de la rotation uniquement au survol de l'animation. Je voudrais que lorsque le curseur est out le caroussel se fige. Et pour l'instant les solutions que je trouve ne fonctionnent pas, alors si quelqu'un a une idée ;o)
leejunfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2008, 16h54   #2
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 233
Points : 2 233
Salut,

il te faudrait déclarer une variable qui indique su la souris est sur l'animation ou non pour tester sa valeur dans la fonction mover. (si je me trompe pas)

Code :
1
2
3
4
5
6
7
8
9
10
11
// variable
 
_root.bMouseIsOn = false;
_root.onRollOver = function()
{
  this.bMouseIsOn = true;
};
_root.onRollOver = function()
{
  this.bMouseIsOn = false;
};
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
// test variable dans fonction
 
function mover(){
 if(_root.bMouseIsOn == true)
 {
  this.swapDepths(Math.round(this._xscale) + 100);
  this._x=Math.cos(this.angle)* radiusX + centerX;
  this._y=Math.sin(this.angle)* radiusY + centerY;
  var s:Number = (this._y - perspective)/(centerY + radiusY- perspective);
  this._xscale=this._yscale=s*100;
  this.angle += nSpeed;
 }
}
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h59.


 
 
 
 
Partenaires

Hébergement Web