Создание flash 3D меню карусели

#flash #menu #carousel

#flash #меню #карусель

Вопрос:

Привет, у меня небольшая проблема, связанная со сценарием flash и action.

Мой клиент хочет, чтобы я создал 3D карусель во flash. Его нужно вращать (достаточно одного способа) по эллиптической траектории, получить некоторый эффект наведения курсора мыши и мыши важная вещь: изображения должны загружаться последовательно… Первое изображение вращается, затем появляется второе изображение (в фоновом режиме), когда первое находится впереди. До сих пор я использовал ultimate-3d-carousel (as2) от oxylus-development (http://www.oxylusflash.com/flashfiles/ultimate-3d-carousel-as2 ) но я совершенно не знаю, как загружать изображения в последовательности, как описано выше…

Может быть, кто-нибудь знает скрипт / учебник / советы, как сделать такую флеш-карусель? Мои навыки AS очень ограничены…

Или, может быть, кто-нибудь знает, как изменить существующий скрипт (у меня есть исходники) Я считаю, что это часть oxylus carousel, которую необходимо изменить:

 //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;
        mc2._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 amp;amp; 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 amp;amp; !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();
  

}

Ответ №1:

обратитесь к этому сайту, очень классный учебник для вас.

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

Комментарии:

1. Спасибо за руководство. Но знаете ли вы, как я могу загружать изображения, как я написал в своем первоначальном сообщении? Загрузите один в фоновом режиме, а после него перейдите к загрузке другого и так далее?

2. извините, практически я не знаю AS2. я начал появляться КАК3.0 ^^; Я рекомендую вам AS3.0. AS2.0 больше не полезен.