开发者

Creating flash 3D Carousel menu

Hi I have small problem related to flash and action script.

My client want me to create 3D carousel in flash. It need to rotate (one way is enough) on ellipse path, get some on mouse over effect and mouse important thing: Images need to be loaded in sequence... First image rotating, then second image is appearing (in background) when first is in front. Till now I was using ultimate-3d-carousel (as2) from oxylus-development (http://www.oxylusflash.com/flashfiles/ultimate-3d-carousel-as2) but I completely don't know how to load images in sequence like above...

Maybe anyone know script/tutorial/tips how to do that kind of flash carousel? My AS skills are very limited...

Or maybe anyone know how to modify existing script (I got sources) I believe this is part of oxylus carousel witch have to be modified:

//loading picture to slideshow and configure it's parametters
function addPicture(nume,des,nm,par)
{
    nrp++;
    var mc=poze.attachMovie("holder","img"+nrp,poze.getNextHighestDepth());
    mc.canDraw=false;
    mc.des=des;
    mc.nm=nm;
    mc.par=par;
    mc._dx=0;
    mc._dy=0;
    mc.effSat=1;
    mc.effDark=1;
    mc.effAlpha=100;
    mc.effBlur=0;
    var mclListener:Object = new Object();
    var image_mcl:MovieClipLoader = new MovieClipLoader();
    image_mcl.addListener(mclListener);
    mc.holder_son.forceSmoothing=true;
    mc.cacheAsBitmap=true;
    image_mcl.loadClip(picturePath+nume,mc.holder_son);
    mc.anim._x=0;
    mc.anim._y=0;
    mclListener.onLoadInit = function(target_mc:MovieClip) 
    {
        mc.holder_son._alpha=0;
        var mc=target_mc;
        mc.forceSmoothing=true;
        mc.cacheAsBitmap=true;
        mc._rotation=-0;
        mc._width=fixWi;
        mc._height=fixHe;
        mc._x=-mc._width/2;
        mc._y=-mc._height/2;
        mc.ct=1;

        var mc2=mc._parent.attachMovie("holder","refl",mc._parent.getNextHighestDepth());
        mc2.anim.swapDepths(mc2.getNextHighestDepth());
        removeMovieClip(mc2.anim);
        var image_mcl:MovieClipLoader = new MovieClipLoader();
        image_mcl.loadClip(picturePath+nume,mc2.holder_son);
        image_mcl.addListener(mclListener);
        image_mcl.loadClip(picturePath+nume,mc.holder_son);
        mclListener.onLoadInit = function(target_mc:MovieClip) 
    {
        var mc=target_mc;
        mc.forceSmoothing=true;
        mc.cacheAsBitmap=true;
        var mcp=target_mc._parent;

        mc._width=fixWi;
        mc._height=fixHe;
        mc._rotation=-0;
        mc._x=-mc._width/2;
        mcp._alpha=100;
        var mc5=mcp.createEmptyMovieClip("desen",mcp.getNextHighestDepth());
        var mc3=mc._parent._parent.attachMovie("hMaska","hMaska",mc._parent._parent.getNextHighestDepth());


        mc3._width=fixWi+strokeSize;
        mc3._height=fixHe;
        mc3._rotation=-0;
        mc3._x=-mc._width/2-strokeSize/2;
        mc._parent._y=-fixHe/2;
        mc._yscale=-100;
        mc._y=fixHe*2;
        var mcX=mc._parent;
        mcX.cacheAsBitmap=true;
        mc3.cacheAsBitmap=true;
        mc._parent.swapDepths(mc2._parent.holder_son)
        mc.swapDepths(target_mc._parent.desen);
        mcX.setMask(mc3);
        mc3._y=fixHe/2;
        mc开发者_StackOverflow2._y=-fixHe+fixHe/4;
        mcX._alpha=0;
        mc._parent._parent.canDraw=true;
        if (nrp>1)poze._visible=true;
        var an=mc._parent._parent.anim;
        an._width=fixHe;
        an._height=fixHe;
        an.onEnterFrame=function()
        {
            this._alpha-=5;
            if (enRefl) 
            {
                mcX._alpha+=5;
                if (mcX._alpha>reflAlpha*2) mcX._alpha=reflAlpha*2;
            }
            else
            {
                mcX._alpha=100;
                mcX._visible=false;
            }
            mcX._parent.holder_son._alpha+=5;
            if (this._alpha<=0)
            {
                delete this.onEnterFrame
                removeMovieClip(this);
            }
        }

    }
    };
    mc.sc2=0;
    mc.gl=0;
    mc.attachMovie("mcToolTip","tt",mc.getNextHighestDepth());

    mc.onPress=function()
    {
        if(selCol!="")
        {
            if (this.par=="action")
            {
                pictureClick(this.nm);
            }
            else
            {
                getURL(this.nm,this.par);
            }
        }
    }

}


function refresh()
{
    slider._y=depY;
    mcArrows._y=depY;
    clicker._y=depY;

if (!enWheel) extraScale=0;

poze.mcLogo2.mcLogo._rotation=0;

this.poze._rotation=rotAngle;
offGuideY=fixHe;

poze.mcLogo2._alpha=logoAlpha;
poze.mcLogo2.mcLogo._width=logoWidth;
poze.mcLogo2.mcLogo._height=logoHeight;

poze.mcLogo2.mcLogo._x=-logoWidth/2;
poze.mcLogo2.mcLogo._y=-logoHeight/2;

poze.mcLogo2._rotation=-rotAngle;


poze.mcLogo2._visible=showLogo;


guide._x=poze._x-poze._width/2-offGuide/2;
guide._height=poze._height+offGuideY;
guide._width=poze._width+offGuide;
guide._y=-elev/2+spir*nrp/2;
var col=guide.hitTest(_xmouse+this._x,_ymouse+this._y,false)

var semnRot=1;
if (rotLeft==2) semnRot=-1;

if (!enSemnRot) semnRot=1;
else
{
    col=true;
}
if(!canRoll) col=false;

if (rotType==1)
{
    enSemnRot=false;
    mcArrows._visible=false;
    clicker._visible=false;
    slider._visible=false;
}

if (rotType==2) 
{
    enSemnRot=false;
    col=false;
    if (!goToStart)
    mcArrows._visible=true;
    clicker._visible=false;
    slider._visible=false;
    if (_root.selAr!=0)
    {
        spEase+=easeAm/100;
        if (spEase>=factSpeed/5) spEase=factSpeed/5;

        if (easeAm>=50)
        {
            spEase=factSpeed/5;
        }
    }
    else
    {
        spEase-=easeAm/100;
        if (spEase<=0) spEase=0;
        if (easeAm>=50)
        {
            spEase=0;
        }
    }
    cam.rot.y+=spEase*_root.selSemn;
}

if (rotType==3) 
{
    enSemnRot=false;
    col=false;
    mcArrows._visible=false;
    clicker._visible=false;
    slider._visible=true;
}

if (rotType==4) 
{
    enSemnRot=false;
    col=false;
    mcArrows._visible=false;
    clicker._visible=true;
    slider._visible=false;
    clicker.btnPrev._visible=showClickerArr;
    clicker.btnNext._visible=showClickerArr;
    if (clickerAutoPlay)
    {
        if (clickerCanAuto)
        {
            clickerAutoCrrTimer++;
            if (clickerAutoCrrTimer==clickerAutoMaxTimer)
            {
                disableClicker();
                clickerCanAuto=false;
                if (rotClickerLeft==1) clickerClick(++crrClick);
                if (rotClickerLeft==2) clickerClick(--crrClick);
                disableClicker();
            }
        }
        else
        {

        }
    }
}

if (rotType==5) 
{
    enSemnRot=true;
    mcArrows._visible=false;
    clicker._visible=false;
    slider._visible=false;
}

if (col)
{

    if (!doStop)
    {

        var catRot=poze._xmouse*factSpeed*semnRot*0.001;
        if (enSemnRot)  catRot=factSpeed*semnRot*100*0.001;
        speed=catRot;
        cam.rot.y+=speed;
    }
}
if (goToStart)
{
    cam.rot.y=goToVal;
    var val=goToVal;
    if (val<0)
    {
        val=360-Math.abs(goToVal);
    }
    slider.gotoPosition(val,true);
}

genCol=false;

selCol="";
for (var i=1;i<=nrp;i++)
{
    var mc=poze["img"+i];
    mc.holder_son._width=fixWi;
    mc.holder_son._height=fixHe;
    mc.holder_son._x=-mc.holder_son._width/2;
    mc.holder_son._y=-mc.holder_son._height/2;
    mc.refl.holder_son._width=fixWi;
    mc.refl.holder_son._height=fixHe;
    mc.refl.holder_son._y=-fixHe+fixHe/2-fixHe;
    mc.refl._yscale=-100;
    mc.refl.holder_son._x=-fixWi/2;
    mc.refl._y=reflDist;
    var col=mc.holder_son.hitTest(_xmouse+this._x,_ymouse+this._y,false)

    mc.isRoll=false;
    if(!canRoll) col=false;
    if (!genCol)
    {
    mc.useHandCursor=false;
    if (col && mc.enabled)
    {

        genCol=true
        mc.isRoll=true;
        selCol=mc;
        mc.useHandCursor=true;
        mcTooltip.mcttText.scris.autoSize=true;
        mcTooltip.mcttText._x=depTooltip/2;
        mcTooltip.mcttText.scris.text=mc.des;
        mcTooltip.bgr.bgr_son._width=mcTooltip.mcttText._width+depTooltip;
        mcTooltip.bgr.sageata._x=mcTooltip.bgr._width/2-mcTooltip.bgr.sageata._width/2;
    }
    }
    mc._parent.refl._visible=false;
    mc.tt._visible=false;
    mc.tt.mcttText.scris.autoSize=true;
    mc.tt.bgr._width=mc.tt.mcttText._width+depTooltip;
    mc.tt._x=-mc.tt._width/2;
    mc.tt.mcttText._x=depTooltip/2;
    if (enTt)
    {
        mc.tt._visible=ttlAways;
        mc.tt.gotoAndStop(mcTooltip._currentframe);
        mc.tt.bgr.sageata._visible=false;
        if (ttFolMouse) selCol.tt._visible=false;
        semnTT=-1;
        if (ttFollow==2) semnTT=1;
        mc.tt._y=semnTT*fixHe/2+semnTT*mc.tt._height-strokeSize/2;
        if (semnTT==1)  mc.tt._y=fixHe/2+strokeSize;
        if (!ttlAways && !ttFolMouse) selCol.tt._visible=true;
        mc.tt.mcttText.scris.text=mc.des;
    }
}
if (genCol || enTTFromClicker!=0)
{
    mcTooltip._x=_xmouse-mcTooltip.bgr._width/2;
    mcTooltip.bgr.sageata._visible=true;
    if (enTTFromClicker)
    {
        mcTooltip.mcttText.scris.autoSize=true;
        mcTooltip.mcttText._x=depTooltip/2;
        var ttText=poze["img"+enTTFromClicker].des
        mcTooltip.mcttText.scris.text=ttText;
        mcTooltip.bgr.bgr_son._width=mcTooltip.mcttText._width+depTooltip;
        mcTooltip.bgr.sageata._x=mcTooltip.bgr._width/2-mcTooltip.bgr.sageata._width/2;

    }

    var posY=selCol._y+selCol._height;
    if (ttFollow==1)
    {
        mcTooltip.bgr.sageata._yscale=100;
        mcTooltip._y=_ymouse-mcTooltip._height/2-depToolTipY;
        if (!ttFolMouse)
        {
            mcToolTip._visible=false;
        }

    }

    if (ttFollow==2)
    {
        mcTooltip.bgr.sageata._y=0.9;
        mcTooltip.bgr.sageata._yscale=-100;
        mcTooltip._y=_ymouse+mcTooltip._height/2+depToolTipY;
        if (!ttFolMouse)
        {
            mcTooltip._x=0;
            mcTooltip._y=39;
            mcTooltip.bgr.sageata._visible=false;
        }
    }
    mcTooltip._visible=true;
    mcTooltip._visible=enTt;
    if (!ttFolMouse)
    {
        mcTooltip._visible=false;
    }
    if (enTTFromClicker) mcTooltip._visible=true;

    mcTooltip._alpha+=10;
    if (mcTooltip._alpha>=100) mcTooltip._alpha=100;
    if (enStoponRoll) doStop=true;
}
else
{
    if (enStoponRoll) doStop=false;
    mcTooltip._alpha-=10;
    if (mcTooltip._alpha<=0) 
    {
        mcTooltip._alpha=0;
        mcTooltip._visible=false;
    }
}
render();
if (_root.xmlWindow._visible) loadWindow();

}


refer a this site, very awesome tutorial for you.

http://tutorials.flashmymind.com/2009/03/vertical-3d-carousel-with-actionscript-3/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜