#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 больше не полезен.