Salut à tous.
Je suis en train de faire un carroussel en as2 dont les icônes sont gérées par un xml. Chaque icône du carroussel est cliquable et renvoie vers une autre page, le problème c'est que je n'arrive pas à attribuer un lien pour chaque icône ; j'ai essayé différentes méthodes et toutes me donnent le même résultat : j'arrive à donner un lien dans mon script vers une autre page en spécifiant que ce lien est attribué à une image précise du carroussel, mais le souci c'est qu'après ce lien fonctionne aussi pour les autres images du carroussel.
Voici tout d'abord mon xml :
Code XML :
<icons>
<icon image="carroussel/disque.png" tooltip="Jukebox" />
<icon image="carroussel/animation.png" tooltip="Animation" />
<icon image="carroussel/graphisme.png" tooltip="Graphisme" />
<icon image="carroussel/mail.png" tooltip="Contact" />
<icon image="carroussel/cadenas.png" tooltip="Votre projet"/>
<icon image="carroussel/tarif.png" tooltip="Tarifs"/>
</icons>
Jusque là rien de sorcier, voici ensuite un essai de script as2 :
Code XML :
import mx.utils.Delegate;
var numOfItems:Number;
var radiusX:Number = 180;
var radiusY:Number = 75;
var centerX:Number = 900;
var centerY:Number = 150;
var speed:Number = 0.05;
var perspective:Number = 1;
var home:MovieClip = this;
var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function()
{
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
for(var i=0;i<numOfItems;i++)
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = over;
t.icon.onRollOut = out;
t.icon.onRelease = released;
}
}
function over()
{
home.tooltip.tipText.text = this._parent.toolText;
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
home.tooltip._alpha = 100;
}
function out()
{
delete home.tooltip.onEnterFrame;
home.tooltip._alpha = 0;
}
function released()
{
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
trace(this._parent.toolText);
rubrique = tipText.text;
if ((nodes[i].attributes.image) = "Jukebox"){
getURL("jukebox.html", "_blank");
}else if ((nodes[i].attributes.image) = "Animation"){
getURL("Animation.html", "_blank");
}
}
function moveTip()
{
home.tooltip._x = this._parent._x;
home.tooltip._y = this._parent._y - this._parent._height/2;
}
xml.load("icons.xml");
function mover()
{
this._x = Math.cos(this.angle) * radiusX + centerX;
this._y = Math.sin(this.angle) * radiusY + centerY;
var s = (this._y - perspective) /(centerY+radiusY-perspective);
this._xscale = this._yscale = s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}
this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/10000;
}
Ce code-ci donc renvoie toutes mes images du carroussel vers la page "jukebox.html".
Voici un autre essai (juste la partie "released"):
Code ActionScript :
function released()
{
var sou:Sound = new Sound();
sou.attachSound("click");
sou.start();
trace(this._parent.toolText);
rubrique = tipText.text;
if (rubrique = "Jukebox"){
getURL("jukebox.html", "_blank");
}else if (rubrique = "Animation"){
getURL("animation.html", "_blank");
}
}
Ce script donne le même résultat que le précédent.
J'ai essayé beaucoup d'autres variantes, mais soit j'obtiens le même résultat que ces deux-là, soit le lien ne marche plus du tout.
A mon avis il me manque peu de choses pour y arriver mais là je sèche.
Si quelqu'un a une idée je suis preneur.
Merci à tous.
BBFUNK01