Carrousel de imágenes linkeables

Estoy haciendo un carrousel 3d con Flash CS3 para mi blog en el que al pulsar sobre cada foto, se debe abrir en nueva pestaña la foto panorámica correspondiente. Pero como todavía no conozco ActionScript, he descargado este carrousel, he cambiado los iconos por mis miniaturas, le he quitado tres, y en el XML he cambiado los nombres de los bocadillos, y funciona. Pero por mas que busco y busco no tengo ni idea de cómo linkearlos a sus panoramas correspondientes. Si algún experto me puede ayudar se lo agradecería.
Un saludo
EL FLA:
import mx.utils.Delegate;
var numOfItems:Number;
var radiusX:Number = 200;
var radiusY:Number = 25;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.01;
var perspective:Number = 10;
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.attributes.tooltip;
t.icon.inner.loadMovie(nodes.attributes.image);
t.r.inner.loadMovie(nodes.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()
{
getURL("icons.xml") +i,i+1;
}
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)/2500;
}
EL XML:
<icons>
<icon image="icon1.png" tooltip="Texto uno" />
<icon image="icon2.png" tooltip="Texto dos" />
<icon image="icon3.png" tooltip="Texto tres" />
<icon image="icon4.png" tooltip="Texto cuatro" />
<icon image="icon5.png" tooltip="Texto cinco" />
<icon image="icon6.png" tooltip="Texto seis" />
<icon image="icon7.png" tooltip="Texto siete" />
</icons>
2

2 Respuestas

60.125 pts.
Tiene que cambiar la funcion released() y poner el getURL con la url que quieras que se cargue y _blank como segundo parametro. Vi ese tutorial hace algunos años, o almenos eso parece, y sin no mal recuerdo esta muy bien explicado. De cualquier modo, solo tienes que cambiar esa funcion ya que es la que asigna el comportamiento que se realizara al presionar o mejor dicho al soltar el boton.
Pido perdón:
El carrusel totalmente acabado tal y como queda después de la tercera y ultima parte del tutorial no es como puse arriba, es como pongo aqui debajo.Una vez acabado he probado a poner poner el getURL con una url  y _blank como segundo parametro. Lo he probado de mil maneras y ninguna me funciona bien. Además se trata no de una, sino de 10 url distintas, tantas como iconos en el carrusel, con lo cual supongo que tendrían que ir en el xml, y cambiar algúnas cosas en el fla.
FLA:
import mx.utils.Delegate;
import mx.transitions.Tween;
import mx.transitions.easing.*;
var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 75;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 130;
var home:MovieClip = this;
theText._alpha = 0;
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
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes.attributes.tooltip;
t.content = nodes.attributes.content;
t.icon.inner.loadMovie(nodes.attributes.image);
t.r.inner.loadMovie(nodes.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()
{
home.tooltip._alpha = 0;
for(var i=0;i
{
var t:MovieClip = home["item"+i];
t.xpos = t._x;
t.ypos = t._y;
t.theScale = t._xscale;
delete t.icon.onRollOver;
delete t.icon.onRollOut;
delete t.icon.onRelease;
delete t.onEnterFrame;
if(t != this._parent)
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
}
else
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,200,1,true);
var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,320,1,true);
var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
theText.text = t.content;
var s:Object = this;
tw.onMotionStopped = function()
{
s.onRelease = unReleased;
}
}
}
}
function unReleased()
{
delete this.onRelease;
var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
for(var i=0;i
{
var t:MovieClip = home["item"+i];
if(t != this._parent)
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,theScale,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,theScale,1,true);
var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
}
else
{
var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
tw.onMotionStopped = function()
{
for(var i=0;i
{
var t:MovieClip = home["item"+i];
t.icon.onRollOver = Delegate.create(t.icon,over);
t.icon.onRollOut = Delegate.create(t.icon,out);
t.icon.onRelease = Delegate.create(t.icon,released);
t.onEnterFrame = mover;
}
}
}
}
}
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)/2500;
}

XML:
<icons>
<icon image="icon1.png" tooltip="Limewire" content="http://www.google.es" />
<icon image="icon2.png" tooltip="Rubik's Cube" content="http://www.yahoo.es" />
<icon image="icon3.png" tooltip="Widgets" content="http://www.altavista.es" />
<icon image="icon4.png" tooltip="Trash Can" content="http://www.correos.es" />
<icon image="icon5.png" tooltip="Compass" content="http://www.todoexpertos.com" />
<icon image="icon6.png" tooltip="Toaster" content="http://www.myspace.com" />
<icon image="icon7.png" tooltip="Can of SPAM" content="http://es.wikipedia.org" />
<icon image="icon8.png" tooltip="Apple iMac" content="http://www.goolzoom.com" />
<icon image="icon9.png" tooltip="Apple iPod" content="http://www.marsans.es" />
<icon image="icon10.png" tooltip="Terminal Window" content="http://www.aemet.es" />
</icons>
La verdad es que te lo dije desde un principio, un getURL es lo unico que necesitas, como el codigo que pegaste esta incompleto decidi bajar el carrousel. Aca te dejo el codigo como lo eh modificado, en relidad solo eh comentado una parte del codigo y agregado el getURL, cosa de un minuto...
Por cierto, ya no necesitas la funciorn unreleased, no le eh eliminado pero ya no la necesitas.
import mx.utils.Delegate;
import mx.transitions.Tween;
import mx.transitions.easing.*;
var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 75;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 130;
var home:MovieClip = this;
theText._alpha = 0;
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.attributes.tooltip;
        t.content = nodes.attributes.content;
        t.icon.inner.loadMovie(nodes.attributes.image);
        t.r.inner.loadMovie(nodes.attributes.image);
        t.icon.onRollOver = over;
        t.icon.onRollOut = out;
        t.icon.onRelease = released;
    }
}
function over()
{
    //BONUS Section
    var sou:Sound = new Sound();
    sou.attachSound("sover");
    sou.start();
    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()
{
    //BONUS Section
    var sou:Sound = new Sound();
    sou.attachSound("sdown");
    sou.start();
    home.tooltip._alpha = 0;
    for(var i=0;i<numOfItems;i++)
    {
        var t:MovieClip = home["item"+i];
        t.xPos = t._x;
        t.yPos = t._y;
        t.theScale = t._xscale;
        delete t.icon.onRollOver;
        delete t.icon.onRollOut;
        delete t.icon.onRelease;
        delete t.onEnterFrame;
        /*if(t != this._parent)
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
            var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
        }
        else
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
            var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,200,1,true);
            var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,320,1,true);
            var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
            theText.text = t.content;
            var s:Object = this;
            tw.onMotionStopped = function()
            {
                s.onRelease = unReleased;
            }
        }*/
        getURL(t.content)
    }
}
function unReleased()
{
    //BONUS Section
    var sou:Sound = new Sound();
    sou.attachSound("sdown");
    sou.start();
    delete this.onRelease;
    var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
    for(var i=0;i<numOfItems;i++)
    {
        var t:MovieClip = home["item"+i];
        if(t != this._parent)
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
            var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
        }
        else
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
            var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
            var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
            tw.onMotionStopped = function()
            {
                for(var i=0;i<numOfItems;i++)
                {
                    var t:MovieClip = home["item"+i];
                    t.icon.onRollOver = Delegate.create(t.icon,over);
                    t.icon.onRollOut = Delegate.create(t.icon,out);
                    t.icon.onRelease = Delegate.create(t.icon,released);
                    t.onEnterFrame = mover;
                }
            }
        }
    }
}
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)/2500;
}
TuXMl tal como esta esta bien, es decir, asi como has cambiado los content.
Saludos, como estoy seguro que eso soluciona tu problema, por favor no olvides cerrar y calificar la pregunta.
FUNCIONA!!
Te estoy muy agradecido.
Ahora comienzo a entender un poco como funciona el actionscript. He comenzado un curso. La verdad es fascinante.
Gracias.
17.050 pts.
Lamentablemente no menejo action Script 3 todavia. Yo te recomiendo que busques algun script similar pero hecho en actionScript 2 ya que para vos que te estas iniciando te va a resultar mas sencillo de interpretar.
Diego

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas