Okay no ... It was the way I calculated my ratio that wasn't good. Works perfectly !
Instead of calculating the ratio on each loop using the actual _x, I use an initx variable... // init var initx:Number = some_random_x; mc._x = initx; //onEnterFrame ratio = (mc.initx - firstpoint.x)/(lastpoint.x - firstpoint.x) Instead of: >>ratio = (mc._x - firstpoint.x)/(lastpoint.x - firstpoint.x) Many thanks !! On 4/26/07 8:43 AM, "leolea" <[EMAIL PROTECTED]> wrote: > Thank you very much for this. > > The function you provided works super fine, but only once! > > If I call it in an onEnterFrame, here's what happens: > http://pages.videotron.com/poubou/flash/cannes01.html > > Strange... or is it ? > > > > On 4/25/07 6:13 PM, "Joshua Sera" <[EMAIL PROTECTED]> wrote: > >> Actually, you're right. if your endpoints will never >> move, you can still use a quadratic bezier. >> >> The percentage would be >> >> (mc._x - firstpoint.x)/(lastpoint.x - firstpoint.x) >> >> Since you're using curveTo, you already have all the >> points you need for the formula Here's a function for >> you: >> >> import flash.geom.Point; >> >> function getPoint(first:Point, last:Point, >> control:Point, ratio:Number):Point { >> var pReturn:Point = new Point(); >> var b:Number = 1-ratio; >> pReturn.x = (b*b*first.x) + (2*ratio*b*control.x) + >> (ratio*ratio*last.x); >> pReturn.y = (b*b*first.y) + (2*ratio*b*control.y) + >> (ratio*ratio*last.y); >> return pReturn; >> } >> >> first if the first point in your curve, last is the >> last, control is the point specified by the first two >> arguments in the curveTo method. >> >> This will give you the closest point on the line to >> your MC's position. If you only want to snap if the MC >> is within a certain distance, just check the >> difference of the ys of your mc's position, and the >> returned point. >> >> >> --- leolea <[EMAIL PROTECTED]> wrote: >> >>> On 4/25/07 5:31 PM, "Joshua Sera" >>> <[EMAIL PROTECTED]> wrote: >>> >>>> If you know that the two endpoints of the curve >>> are >>>> always going to have an equal x or y value, the >>> you >>>> can just use the quadratic formula, and get the >>> right >>>> Y value. >>> >>> The two endpoints will never move. The middlepoint >>> will be the only one >>> moving. >>> >>> So now I just need the quadratic formula ... I >>> googled "quadratic formula" >>> and I couldn't figure it out nor translate it to my >>> Flash needs. >>> >>> Like I said, I'm (almost) totally math impaired ! >>> >>>> If the endpoints are arbitrary, it's a bit more >>>> complicated. Bezier curves take a number from 0 to >>> 1 >>>> and give you a point along the curve. Plugging 0 >>> into >>>> the formula gives you the first endpoint, 1 gets >>> you >>>> the last, and anything else gives you something in >>>> between. >>>> >>>> This means you're going to have to figure out >>> where >>>> along the curve your MC is closest to, which >>> involves >>>> some vector math. >>>> >>> >>> Since I know the _x position of MC, in order to >>> figure out where the MC is >>> along the curve... Can't I use its _x "percentage": >>> >>> MC._x / (lastpoint.x - firstpoint.x) >>> >>> Just curious, but I don't think I need this since my >>> two endpoints will not >>> move. >>> >>>> If you want, I can draw out the way I'd approach >>> it. >>> >>> Of course I'd be more than happy to see that. >>> >>> >>> >>> >>> _______________________________________________ >>> Flashcoders@chattyfig.figleaf.com >>> To change your subscription options or search the >>> archive: >>> >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> >>> Brought to you by Fig Leaf Software >>> Premier Authorized Adobe Consulting and Training >>> http://www.figleaf.com >>> http://training.figleaf.com >>> >> >> >> __________________________________________________ >> Do You Yahoo!? >> Tired of spam? Yahoo! Mail has the best spam protection around >> http://mail.yahoo.com >> _______________________________________________ >> Flashcoders@chattyfig.figleaf.com >> To change your subscription options or search the archive: >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >> >> Brought to you by Fig Leaf Software >> Premier Authorized Adobe Consulting and Training >> http://www.figleaf.com >> http://training.figleaf.com > > > _______________________________________________ > Flashcoders@chattyfig.figleaf.com > To change your subscription options or search the archive: > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > Brought to you by Fig Leaf Software > Premier Authorized Adobe Consulting and Training > http://www.figleaf.com > http://training.figleaf.com _______________________________________________ Flashcoders@chattyfig.figleaf.com To change your subscription options or search the archive: http://chattyfig.figleaf.com/mailman/listinfo/flashcoders Brought to you by Fig Leaf Software Premier Authorized Adobe Consulting and Training http://www.figleaf.com http://training.figleaf.com