ࡱ> Root EntryRoot Entryp|YrRASH`(q%ContentsPage 1 CSymbol 3 Symbol 2@Symbol 1FSymbol 4J CPicPage CPicLayer CPicFrame333D7PFFP4btP4F4t4t44FPt4bP? f Ebene 1OCPicPage CPicLayer CPicFrame CPicSprite dhn0R R dcn2  dITn1?< Ebene 1OCPicPage CPicLayer CPicFrame  w w    ? Ebene 1OCPicPage CPicLayer CPicFrame CPicShapeBwcrR4G4r4t44GTt4cR4GGT?k Ebene 1OCPicPage CPicLayer CPicFrame CPicSprite dsceneCPicText w3 ;VerdanaB"(- drag the anchors - press right/left to assign ball.vectorD7>>000~>?l sceneOO?=&M // bezier collision // by andre michelle // am@andre-michelle.com // http://www.extrajetzt.com Bezier = function ( mc , p0 , p1 , p2 ) { // draw // mc.moveTo ( p0.x , p0.y ); mc.curveTo ( p1.x , p1.y , p2.x , p2.y ); // getPoints // var t = 0; var steps = 20; var num = 0; var pts = []; while ( t <= 1 ) { var t1 = 1 - t; var t1_2 = t1 * t1; var t2 = t * t; var tt12 = 2 * t * t1; var x = t1_2 * p0.x + tt12 * p1.x + t2 * p2.x; var y = t1_2 * p0.y + tt12 * p1.y + t2 * p2.y; pts.push ( { x: x, y: y } ); t += 1/steps; } this.pts = pts; } BallWorld = function () { var ball = this.ball = scene.attachMovie ( "ball" , "ball" , 1 , { _x: 50, _y: -200, vy: 0 } ); var br = ball._height/2; var bezier = this.bezier = new Bezier ( scene , { x: scene.n0._x, y: scene.n0._y } , { x: scene.n1._x, y: scene.n1._y } , { x: scene.n2._x, y: scene.n2._y } ); var obj = this; ball.render = function () { var bezier = obj.bezier; var pts = bezier.pts; if ( Key.isDown ( Key.RIGHT ) ) ball.vx += .1; if ( Key.isDown ( Key.LEFT ) ) ball.vx -= .1; var bx = this._x; var by = this._y; var bvx = ball.vx; var bvy = ball.vy; bvy += .2; bx += bvx; by += bvy; for ( var p = 0 ; p < pts.length - 1 ; p++ ) { var p0 = pts[p]; var p1 = pts[p+1]; var p0x = p0.x, p0y = p0.y, p1x = p1.x, p1y = p1.y; // get Angle // var dx = p0x - p1x; var dy = p0y - p1y; var angle = Math.atan2( dy , dx ); var sin = Math.sin ( angle ); var cos = Math.cos ( angle ); // rotate p1 ( need only 'x' ) // var p1rx = dy * sin + dx * cos + p0x; // rotate ball // var px = p0x - bx; var py = p0y - by; var brx = py * sin + px * cos + p0x; var bry = py * cos - px * sin + p0y; var cp = ( bx - p0x ) * ( p1y - p0y ) - ( by - p0y ) * ( p1x - p0x ); if ( bry > p0y - br && brx > p0x && brx < p1rx && cp > 0 ) { // calc new Vector // var vx = bvy * sin + bvx * cos; var vy = bvy * cos - bvx * sin; vy *= -.8; vx *= .98; var sin = Math.sin ( -angle ); var cos = Math.cos ( -angle ); bvx = vy * sin + vx * cos; bvy = vy * cos - vx * sin; // calc new Position // bry = p0y - br; dx = p0x - brx; dy = p0y - bry; bx = dy * sin + dx * cos + p0x; by = dy * cos - dx * sin + p0y; } } if ( bx < br - 200 ) bx = br - 200, bvx = -bvx; if ( bx > 200 - br ) bx = 200 - br, bvx = -bvx; ball._x = bx; ball._y = by; ball.vx = bvx; ball.vy = bvy; if ( ball._y > 200 + br ) ball._y = -200, ball._x = 0, ball.vy = ball.vx = 0; } ball.onEnterFrame = function () { this.render () }; } scene.lineStyle ( 0 , 0xffcc00 ); var XJ = new BallWorld (); // dragging the anchor and control points // // -------------------------------------- // scene.n0.onPress = scene.n1.onPress = scene.n2.onPress = function () { delete XJ.ball.onEnterFrame; this.onEnterFrame = function () { this._x = scene._xmouse; this._y = scene._ymouse; scene.clear (); scene.lineStyle ( 0 , 0xffcc00 ); XJ.bezier = new Bezier ( scene , { x: scene.n0._x, y: scene.n0._y } , { x: scene.n1._x, y: scene.n1._y } , { x: scene.n2._x, y: scene.n2._y } ); XJ.ball.render (); } this.onRelease = this.onReleaseOutside = function () { XJ.ball.onEnterFrame = function () { XJ.ball.render () }; delete this.onEnterFrame; } }  codeO) CDocumentPagePage 1Szene 1H= j*?Symbol 3ballo=2ballSymbol 3o=Symbol 2ptJ=ptSymbol 2}K=Symbol 1sceneI=Symbol 1=Symbol 4nodea`=;E:\+++current_studies\+++bezier\SmoothBezier_calcPoints.flanodewh=a`=wh=@@hhhhh2Vector::Debugging Permitted0Vector::External Font Files0Vector::Generator CommandVector::Compress Movie1Vector::Preview as GIF0Vector::Override Sounds0Vector::Protect0Vector::Quality50Vector::Template0Vector::Omit Trace Actions0Vector::Debugging PasswordVector::TopDown0Vector::Report0Vector::Version6Vector::Stream Compress7Vector::Event Format0Vector::Event Compress7Vector::Stream Format0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3 HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3 x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffff ff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3ff`zf*]h