FlashVolume slaiderin“- tekeminen on varmasti monelle tuttua puuhaa. MovieClipin pakottaminen seuraamaan suoraa viivaa pysty- tai vaakasuunnassa on aika yksinkertainen toimenpide, mutta entä monimutkaisemmat muodot ja polut.

Tässä yksi tapa. Alla koodi yksinkertaisimmillaan.

function ballPos(mc:MovieClip, xp:Number):Void
{
mc._x = xp;
var yp = 0;
do
{
yp++;
}
while(!mLine.hitTest(xp, yp, true));
mc._y = yp;
updateAfterEvent();
}

Katso esimerkki: Follow the Path | FLA

Ja vielä koodi kokonaisuudessaan:

mBall.onMouseMove = function():Void
{
// tarkistetaan, että ollaan rajatulla alueella
if(isInside())
{
ballPos(mBall, _root._xmouse);
}
}
 
function ballPos(mc:MovieClip, xp:Number):Void
{
// pallon x on sama kuin hiiren x
mc._x = xp;
// aloitetaan oikean paikan haku pystysuunnassa
var yp = 0;
do
{
yp++;
}
// suoritetaan lisäys kunnes saavutetaan muoto
while(!mLine.hitTest(xp, yp, true));
// asetetaan pallon koordinaatti
mc._y = yp;
updateAfterEvent();
}
 
// alustetaan pallon paikka
ballPos(mBall, mBall._x);
 
// alueen tarkistus
function isInside():Boolean
{
var xp = _root._xmouse;
if(xp < 0 || xp > Stage.width) return false;
return true;
}

Pallon x on siis koko ajan sama kuin hiiren x. Y:n arvo saadaan selville hitTestillä. Aloitetaan y-koordinaatista 0 ja lisäätään y:n arvoa while-loopissa joka “kierroksella” yhdellä. Kun while lauseen hitTest palauttaa arvon tosi, ollaan saavutettu muodon pinta ja päivitetään pallon y-koordinaatti. Olennaista on myös huomata, että kolmannen parametrin tulee olla true, koska haluamme testata osuman itse varsinaisen muodon kanssa (BoundingBoxin sijaan).

Share

Comments

One comment to “Seuraa johtajaa”

  1. eojjjsmiayNo Gravatar on August 28th, 2008 10:45 AM

    Hello my friend, your site is very good!

Leave a comment