ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿpª|YªrσRASH`û#�5Á)€Contentsÿÿÿÿÿÿÿÿÿÿÿÿ*�Page 1ÿÿÿÿÿÿÿÿ¥(Symbol 24ÿÿÿÿÿÿÿÿFßýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿ þÿÿÿþÿÿÿ$ !"#þÿÿÿ%(ÿÿÿÿÿÿÿÿ+,-./0129ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿpª|YªrσRASH€6¤`�5Á)€ContentsÿÿÿÿÿÿÿÿH�Page 1ÿÿÿÿÿÿÿÿÿÿÿÿ&¥(Symbol 24ÿÿÿÿÿÿÿÿFßÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%('3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ45678;ÿÿÿÿÿÿÿÿ<=>?@ABCDEFGþÿÿÿIJKLMNOPQRþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSymbol 3ÿÿÿÿ5Symbol 18ÿÿÿÿÿÿÿÿÿÿÿÿ’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSymbol 3ÿÿÿÿ5Symbol 18ÿÿÿÿÿÿÿÿÿÿÿÿ’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCPicPageÿÿ CPicLayerÿÿ CPicFrameÿÿ CPicSpritevvdÿtitle€€ÿÿÿ?ÿÿ€€ backgroundÿÿÿÿÿÿ€€€—öÿÿzþÿÿ—öÿÿzþÿÿdÿorigin€€ÿÿÿ?ÿÿ€€originÿÿÿÿ€€€ÿ€€ÿÿ CPicButton€€1(ñdÿ2on (release, keyPress "") { init(); } ÿÿCPicText€€×;ä8 radiusInputArialÌÌÌÿ(150€€€Œ;o8 centerYinputArialÌÌÌÿ(200€€€ÿ™ÿÿB¾üZZZB<è¦þB<¦þZ¾üZ<þ¾ü¦þ<¦þ¦þ¦þ¾ü<þZ¾ü>|*4W„ÿ(4Ã>Øþ|4©Öþ„ÿ4ÃÆÿØþ4©zÖþ4>Ã*†ÿ4W(z€€ÿÿÿ?ÿÿ€€Layer 1ÿÿÿÿ™ÿ€€€l… —8@Arialÿÿÿÿ(y origin€€€?…˜—8@Arialÿÿÿÿ(radius€€€w;ø8 centerXinputArialÌÌÌÿ(230€€€ó… —8@Arialÿÿÿÿ(x origin€€€«!<ä8rpmInputArialÌÌÌÿ(10€€€†±—8@Arialÿÿÿÿ(rpmÿÿ CPicShape€€Ÿ ¤ÿÿÿÿs€€f3Ѐ€€'¤ÿÿÿÿs€€f3Ѐ€€s¤ÿÿÿÿs€€f3Ѐ€€ ÿÿÿÿó6J~>&öhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ`1àÿ€T#`#`#€#Uàÿ`1€Ü€TàÜ`#€«€#†õùÿ€ë€þ€€€À&›o8  numBallsInputArialÌÌÌÿ(5€€€ #å—8@Arialÿÿÿÿ(numBalls€€€Œ;o8ellipseWidthInput_sansÌÌÌÿ(1€€€l 1}—˜@ _sansÿÿÿÿ(ellipse width€€€Ÿ¤ÿÿÿÿs€€f3Ѐ€€´ ;o8ellipseHeightInput_sansÌÌÌÿ(.1€€€”1}—˜@_sansÿÿÿÿ(ellipse height€€€Ǥÿÿÿÿs€€f3Ѐ€€ ;o8 rotationInput_sansÌÌÌÿ(20€€€€1ð—˜@_sansÿÿÿÿ(rotation angle€€€+üÿÿ¤ÿÿÿÿs€€f3Ѐ€€d;o8rotationRPMInput_sansÌÌÌÿ(5€€€”ýÿÿ1ð—˜@ _sansÿÿÿÿ(rotation rpm€€€ïöÿÿ¤ÿÿÿÿs€€f3Ѐ€€d#„8 maxScaleInput_sansÌÌÌÿ(100€€€”ýÿÿ—˜@ _sansÿÿÿÿ(max scale€€€ÿÿ®g ÿÿÿÿs€€f3Ѐ€€ëùÿÿ&C @ 8@_sansÿÿÿÿ(%€€€d„„8 minScaleInput_sansÌÌÌÿ(20€€€”ýÿÿz—˜@ _sansÿÿÿÿ(max scale€€€ÿÿ®Èÿÿÿÿs€€f3Ѐ€€ëùÿÿ‡C @ 8@_sansÿÿÿÿ(%€€ÿÿÿÿ×We=`1àÿ€T#`#`#€#Uàÿ`1€Ü€TàÜ`#€«€#†õùÿ€ë€þhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ3ìþ ªÿÿ¥ù $Þ€?àÜ`#€«€#†õùÿ€ë€þhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ`1àÿ€T#`#`#€#UùÿÊ €þÿÿÿ?ÿÿ€€controlsÿÿÿÿ™ÿ€€€€ÿÿÿ?ÿÿÿ©// disable yellow box around buttons accessed via the keyboard _focusrect = 0; // Initialize movement speed and start time. function init () { // First, clear the stage of any previous balls. removeBalls(); // Now make a new set of balls. makeBalls(parseInt(numBallsInput)); // Done initializing, now start the event loop toSymbol 22ÿÿÿÿÿÿÿÿÿÿÿÿ7¡Symbol 20ÿÿÿÿÿÿÿÿ'ÚSymbol 19ÿÿÿÿ!MSymbol 7ÿÿÿÿ ÿÿÿÿ ;þÿÿÿ þÿÿÿ  þÿÿÿ"#$%&þÿÿÿ()*+,-./0123456þÿÿÿ89:;<=>?@ABCDEJGHIþÿÿÿKLMNOPQþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€Layer 3ÿÿÿÿOÿOÿ€€€€?…˜—8@Arialÿÿÿÿ(radius€€€w;ø8 centerXinputArialÌÌÌÿ(230€€€ó… —8@Arialÿÿÿÿ(x origin€€€«!<ä8rpmInputArialÌÌÌÿ€ÿÿÿ?ÿÿ€ÿÿCPicText€€ÖüÿÿËU@ð_sansÿÿÿÿ(point of origin€€ÿÿÿ?ÿÿ€€Layer 2ÿÿÿÿfÿÿÿ€€ÿÿCPicPageÿÿ CPicLayerÿÿ CPicFrameÿÿ CPicSha move the object this.attachMovie("processDoMove", "processDoMove", 10000) // Do interface set up (set point of origin, fade title out) origin._x = parseFloat(centerXInput); origin._y = parseFloat(centerYInput); title._alpha = 30; } // Function to move a clip with each passing frame. function moveClipAroundCircle (theClip) { // Determine how much time has passed theClip.then = theClip.now; theClip.now = getTimer(); var elapsed = theClip.now - theClip.then; var numSeconds = elapsed / 1000; // Find out how many degrees to increment this frame. var degreeIncrement = theClip.degreesPerSecond * numSeconds; // Update the angle theClip.theta += degreeIncrement; // Keep the angle between -360 and 360 degrees theClip.theta %= 360; // Find radian version of theta. // Required by cos and sin functions. var radians = degreesToRadians(theClip.theta); // Figure out where the clip resides on the ellipse around which it's travelling. var xOnEllipse = theClip.ellipseWidth * (Math.cos(radians) * theClip.radius); var yOnEllipse = theClip.ellipseHeight * (Math.sin(radians) * theClip.radius); // ===Deal with ellipse rotation=== // First, determine amount to increment ellipse's rotation, // based on elapsed time and rotation speed. var rotationDegreeIncrement = theClip.rotationDegreesPerSecond * numSeconds; // Update the ellipse's rotation. theClip.rotationTheta += rotationDegreeIncrement; // Keep the rotation angle between -360 and 360 degrees theClip.theta %= 360; // Apply the ellipse's rotation to the ball's position. var rotationRadian = degreesToRadians(theClip.rotationTheta); var rotatedX = xOnEllipse * Math.cos(rotationRadian) - yOnEllipse * Math.sin(rotationRadian); var rotatedY = xOnEllipse * Math.sin(rotationRadian) + yOnEllipse * Math.cos(rotationRadian); // All done calculating position. Now place the clip on the circle. theClip._x = theClip.centerX + rotatedX; theClip._y = theClip.centerY - rotatedY; } // Simulates a 3d effect without the work of bothering with a z-axis. // Doesn't handle z-sorting, so we use alpha to fake it. It's a bit of a hack, // but it gets the job done in some circumstances. function addDepthEffect (theClip) { // Transform the object's size and transparency. sin(theta) oscillates // between -1 and 1, so we and 1 to it and use that to scale and fade our balls. var degreeSin = Math.sin(degreesToRadians(theClip.theta)); // Adjust size theClip._xscale = theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale); theClip._yscale = theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale); // Adjust transparency theClip._alpha = (theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale)); } // Makes a series of ball clips function makeBalls (numBalls) { // Create an array to hold the balls. We'll use this array // later when managing the balls as a group. ballList = new Array(); // Create each ball clip for (var i = 0; i < numBalls; i++) { // Put the clip on stage this.attachMovie("ball", "ball" + i, i); // Store a convenient reference to this ball clip. var thisBall = this["ball" + i]; // Define ball properties. We set these programmatically, but // more customized behaviour could be created by hand... // Start with user input values. thisBall.rpm = parseFloat(rpmInput); thisBall.radius = parseFloat(radiusInput); thisBall.centerX = parseFloat(centerXinput); thisBall.centerY = parseFloat(centerYinput); thisBall.ellipseWidth = parseFloat(ellipseWidthInput); thisBall.ellipseHeight = parseFloat(ellipseHeightInput); thisBall.rotationTheta = parseFloat(rotationInput); thisBall.rotationRPM = parseFloat(rotationRPMInput); thisBall.maxScale = parseFloat(maxScaleInput); thisBall.minScale = parseFloat(minScaleInput); // Now assign programmatic properties thisBall.theta = 0 + (i * (360/numBalls)); // angle of object, measured counterclockwise from the positive x-axis thisBall.degreesPerSecond = thisBall.rpm * 360 / 60; // amount to move per second thisBall.rotationDegreesPerSecond = thisBall.rotationRPM * 360 / 60; // amount to rotate the ellipse per second thisBall.now = getTimer(); // Place the ball way off stage so it doesn't show up before // it starts moving around the center point. thisBall._x = -1000; thisBall._y = -1000; // Add this ball to the list ballList[i] = thisBall; } } // Cleans the stage of all ball clips. function removeBalls () { for (var i = 0; i < ballList.length; i++) { ballList[i].removeMovieClip(); } } // Moves all the ball clips in ballList around the circle. function moveBalls () { for (var i = 0; i < ballList.length; i++) { moveClipAroundCircle(ballList[i]); addDepthEffect(ballList[i]); } } // Converts degrees to radians. function degreesToRadians(degrees) { return (degrees/180) * Math.PI; }€€scriptsÿÿÿÿOÿOÿ€€ ­·�9°·�9€ Symbol 22 title textÏól8„F•;€ Symbol 20 button: pointÉyi8§ï1•;€ Symbol 19point of origin\xi8�¨xi8pe€€ÿ€€÷øÿÿÏ7ÿ™Zÿq÷>óLppà<: ÿ4‘pèýà<Æþæý ÿ4‘‘"ÿèý<ÆþÞæý4p‘"ÿ<:Þ€€€ÿŸïÿÿ«7ÿ™Zÿq×wÝ´öÿ˜µ€4€€5vË€€ËdJöÿ€4555€eJËdË5�5—µ€€ËvËeË€Ë�ÿÿCPicText€€Ì0úÿÿ…Ûÿÿâ  @À_sansÿÿ™ÿˆÿmoving objectsÀ_sansÿÿ™ÿˆÿ À_sansÿÿ™ÿˆÿ°ÿ À_sansÿÿ™ÿˆÿalong a X_sansÿÿ™ÿˆÿ3d-rotatable À_sansÿÿ™ÿˆÿ À_sansÿÿ™ÿˆÿ°ÿ À_sansÿÿÌÿˆÿellipticalÀ_sansÿÿ™ÿˆÿmotionÀ_sansÿÿÝÿˆÿpath€€ÿÿÝÿÌ™ÿÌ™ÿÿCPicPageÿÿ CPicLayerÿÿ CPicFrame€€ÿÿÿ?ÿÿÿÿCPicPageÿÿ CPicLayerÿÿ CPicFrameÿÿ CPicSpritevvdÿtitle€€ÿÿÿ?ÿÿ€€ backgroundÿÿÿÿÿÿ€€€—öÿÿzþÿÿ—öÿÿzþÿÿdÿorigin€€ÿÿÿ?ÿÿ€€originÿÿÿÿ€€€ÿ€€ÿÿ CPicButton€€1(ñdÿ2on (release, keyPress "") { init(); } ÿÿCPicText€€×;ä8 radiusInputArialÌÌÌÿ(150€€€Œ;o8 centerYinputArialÌÌÌÿ(200€€€€€Layer 1ÿÿÿÿO€ÿÿ€€ÿÌ™ÿ(×Üòù¾!� Ã\¢4;àÀÿ4qr”4HI�r4qpÿv4¶J�þ”4»úþÂÿÂᢦ4ßľÿÜþûí·ý h db8�¦#W¯ t4EH3R8.!Z�Ó£8p˺´z8ï°…–8íÓÿÿåŸCýµ4'„ »ý=Ѐ€0}ý’0 fþÔ�ó¤ÿçÿ8�õýÿrìÿÿ÷èþ8ÅCþÿñ©ÿÿ©øAþ8×Zûÿóµþÿ“ð ú8¦ïüÿ1Oþÿ|újú8ö('lÿÿeZþ8[™fÛÿÿû¦ÿót"d¡ýÑþЀþ€ðúÿ-ÿÿÿ?ÿÿÿÿCPicPageÿÿ CPicLayerÿÿ CPicFrameÿÿ CPicSprite´Øÿÿÿ´Øÿÿÿÿÿÿÿ8N•;€ Symbol 24 eventLoop­·�9°·�9€ Symbol 22 title textÏól8„F•;€ Symbol 20 button: pointÉyi8§ï1•;€ Symbol 19point of origin\xi8�¨xi8€ Symbol 7 button: go(!8Çgvi8€ Symbol 3ball†0•;œball†0•;€ Symbol 18 processDoMoveSpi8l processDoMoveÌ6•;ø*@h…hhhh™™3ÿÀÀÀÿ´Vector::Debugging Permitted0Vector::External Font Files0Vector::Generator CommandVector::Preview as GIF0Vector::Override Sounds0Vector::TemplateVector::Protect0Vector::Quality50Vector::Omit Trace Actions0Vector::Debugging PasswordVector::TopDown0"PublishFormatProperties::generatorVector::Report0Vector::Version5Vector::Stream Compress7Vector::Event Format0Vector::Event Compress7Vector::Stream Format0ÿÿÿÿåÿÿ CColorDefÿ €333ÿ0 €fffÿ` €™™™ÿ� €ÌÌÌÿÀ €ÿÿÿÿð €ÿÿïx €ÿÿPïx €ÿÿ ïx €ÿÿÿ(ïx €ÿÿÿxïx €ÿÿÿÈïx €ÿ €3ÿPï €fÿPï0 €™ÿPïH €ÌÿPï` €ÿÿPïx €3ÿï €33ÿ(ï €3fÿ<ï0 €3™ÿCïH €3ÌÿFï` €3ÿÿHïx €3ÿ ï €33ÿxï €f3ÿdï0 €™3ÿ]ïH €Ì3ÿZï` €ÿ3ÿXïx €33ÿÈï €333ÿ0 €3f3ÿPPH €3™3ÿPx` €3Ì3ÿP�x €3ÿ3ÿPï� €fÿ ï0 €3fÿŒï0 €ffÿxï0 €™fÿkïH €Ìfÿdï` €ÿfÿ`ïx €3fÿ´ï0 €33fÿ PH €3ffÿxPH €3™fÿdx` €3Ìfÿ]�x €3ÿfÿZï� €™ÿ ïH €3™ÿ“ïH €f™ÿ…ïH €™™ÿxïH €Ì™ÿnï` €ÿ™ÿhïx €3™ÿ­ïH €33™ÿ x` €3f™ÿŒx` €3™™ÿxx` €3Ì™ÿk�x €3ÿ™ÿdï� €Ìÿ ï` €3Ìÿ–ï` €fÌÿŒï` €™Ìÿ‚ï` €ÌÌÿxï` €ÿÌÿpïx €3Ìÿªï` €33Ìÿ �x €3fÌÿ“�x €3™Ìÿ…�x €3ÌÌÿx�x €3ÿÌÿnï� €ÿÿ ïx €3ÿÿ˜ïx €fÿÿ�ïx €™ÿÿˆïx €Ìÿÿ€ïx €ÿÿÿxïx €3ÿÿ¨ïx €33ÿÿ ï� €3fÿÿ–ï� €3™ÿÿŒï� €3Ìÿÿ‚ï� €3ÿÿÿxï� €fÿï0 €f3ÿï0 €ffÿ(ï0 €f™ÿ5ïH €fÌÿ<ï` €fÿÿ@ïx €™ÿïH €™3ÿ ïH €™fÿïH €™™ÿ(ïH €™Ìÿ2ï` €™ÿÿ8ïx €f3ÿÜï0 €f33ÿPH €ff3ÿ(PH €f™3ÿ<x` €fÌ3ÿC�x €fÿ3ÿFï� €™3ÿãïH €™33ÿx` €™f3ÿx` €™™3ÿ(x` €™Ì3ÿ5�x €™ÿ3ÿ<ï� €ffÿÈï0 €f3fÿÈPH €fffÿ` €f™fÿP0x €fÌfÿPx� €fÿfÿPï¨ €™fÿÕïH €™3fÿÜx` €™ffÿ0x €™™fÿ(0x €™Ìfÿ<x� €™ÿfÿCï¨ €f™ÿ»ïH €f3™ÿ´x` €ff™ÿ 0x €f™™ÿx0x €fÌ™ÿdx� €fÿ™ÿ]ï¨ €™™ÿÈïH €™3™ÿÈx` €™f™ÿÈ0x €™™™ÿ� €™Ì™ÿPP¨ €™ÿ™ÿPïÀ €fÌÿ´ï` €f3Ìÿ­�x €ffÌÿ x� €f™ÌÿŒx� €fÌÌÿxx� €fÿÌÿkï¨ €™Ìÿ¾ï` €™3Ìÿ»�x €™fÌÿ´x� €™™Ìÿ P¨ €™ÌÌÿxP¨ €™ÿÌÿdïÀ €fÿÿ°ïx €f3ÿÿªï� €ffÿÿ ï¨ €f™ÿÿ“ï¨ €fÌÿÿ…ï¨ €fÿÿÿxï¨ €™ÿÿ¸ïx €™3ÿÿ´ï� €™fÿÿ­ï¨ €™™ÿÿ ïÀ €™ÌÿÿŒïÀ €™ÿÿÿxïÀ €Ìÿï` €Ì3ÿ ï` €Ìfÿï` €Ì™ÿï` €ÌÌÿ(ï` €Ìÿÿ0ïx €ÿÿïx €ÿ3ÿïx €ÿfÿïx €ÿ™ÿïx €ÿÌÿ ïx €ÿÿÿ(ïx €Ì3ÿæï` €Ì33ÿ�x €Ìf3ÿ �x €Ì™3ÿ�x €ÌÌ3ÿ(�x €Ìÿ3ÿ2ï� €ÿ3ÿèïx €ÿ33ÿï� €ÿf3ÿ ï� €ÿ™3ÿï� €ÿÌ3ÿï� €ÿÿ3ÿ(ï� €ÌfÿÜï` €Ì3fÿã�x €Ìffÿx� €Ì™fÿx� €ÌÌfÿ(x� €Ìÿfÿ5ï¨ €ÿfÿàïx €ÿ3fÿæï� €ÿffÿï¨ €ÿ™fÿ ï¨ €ÿÌfÿï¨ €ÿÿfÿ(ï¨ €Ì™ÿÒï` €Ì3™ÿÕ�x €Ìf™ÿÜx� €Ì™™ÿP¨ €ÌÌ™ÿ(P¨ €Ìÿ™ÿ<ïÀ €ÿ™ÿØïx €ÿ3™ÿÜï� €ÿf™ÿãï¨ €ÿ™™ÿïÀ €ÿÌ™ÿïÀ €ÿÿ™ÿ(ïÀ €ÌÌÿÈï` €Ì3ÌÿÈ�x €ÌfÌÿÈx� €Ì™ÌÿÈP¨ €ÌÌÌÿÀ €ÌÿÌÿPïØ €ÿÌÿÐïx €ÿ3ÌÿÒï� €ÿfÌÿÕï¨ €ÿ™ÌÿÜïÀ €ÿÌÌÿïØ €ÿÿÌÿ(ïØ €ÌÿÿÀl… —8@Arialÿÿÿÿ(y origin€€€?…˜—8@Arialÿÿÿÿ(radius€€€w;ø8 centerXinputArialÌÌÌÿ(230€€€ó… —8@Arialÿÿÿÿ(x origin€€€«!<ä8rpmInputArialÌÌÌÿ(10€€€†±—8@Arialÿÿÿÿ(rpmÿÿ CPicShape€€Ÿ ¤ÿÿÿÿs€€f3Ѐ€€'¤ÿÿÿÿs€€f3Ѐ€€s¤ÿÿÿÿs€€f3Ѐ€€ ÿÿÿÿó6J~>&öhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ`1àÿ€T#`#`#€#Uàÿ`1€Ü€TàÜ`#€«€#†õùÿ€ë€þ€€€À&›o8  numBallsInputArialÌÌÌÿ(5€€€ #å—8@Arialÿÿÿÿ(numBalls€€€Œ;o8ellipseWidthInput_sansÌÌÌÿ(1€€€l 1}—˜@ _sansÿÿÿÿ(ellipse width€€€Ÿ¤ÿÿÿÿs€€f3Ѐ€€´ ;o8ellipseHeightInput_sansÌÌÌÿ(.1€€€”1}—˜@_sansÿÿÿÿ(ellipse height€€€Ǥÿÿÿÿs€€f3Ѐ€€ ;o8 rotationInput_sansÌÌÌÿ(20€€€€1ð—˜@_sansÿÿÿÿ(rotation angle€€€+üÿÿ¤ÿÿÿÿs€€f3Ѐ€€d;o8rotationRPMInput_sansÌÌÌÿ(5€€€”ýÿÿ1ð—˜@ _sansÿÿÿÿ(rotation rpm€€€ïöÿÿ¤ÿÿÿÿs€€f3Ѐ€€d#„8 maxScaleInput_sansÌÌÌÿ(150€€€”ýÿÿ—˜@ _sansÿÿÿÿ(max scale€€€ÿÿ®g ÿÿÿÿs€€f3Ѐ€€ëùÿÿ&C @ 8@_sansÿÿÿÿ(%€€€d„„8 minScaleInput_sansÌÌÌÿ(20€€€”ýÿÿz—˜@ïx €Ì3ÿÿ¾ï� €Ìfÿÿ»ï¨ €Ì™ÿÿ´ïÀ €ÌÌÿÿ ïØ €ÌÿÿÿxïØ €ÿÿÿÈïx €ÿ3ÿÿÈï� €ÿfÿÿÈï¨ €ÿ™ÿÿÈïÀ €ÿÌÿÿÈïØ €ÿÿÿÿð €ÿÿÝÿ(ïà €ÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿ*ÿÿÿ]ÿÿÿÿÿªÿÿÔÿÿÿÿÿÿ €ÿîœÿd±tÿÿÿÏz^ Úÿÿh) origin._x = parseFloat(centerXInput); origin._y = parseFloat(centerYInput); title._alpha = 30; } // Function to move a clip with each passing frame. function moveClipAroundCircle (theClip) { // Determine how much time has passed theClip.then = theClip.now; theClip.now = getTimer(); var elapsed = theClip.now - theClip.then; var numSecond _sansÿÿÿÿ(min scale€€€ÿÿ®Èÿÿÿÿs€€f3Ѐ€€ëùÿÿ‡C @ 8@_sansÿÿÿÿ(%€€ÿÿÿÿ×We=`1àÿ€T#`#`#€#Uàÿ`1€Ü€TàÜ`#€«€#†õùÿ€ë€þhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ3ìþ ªÿÿ¥ù $Þ€?àÜ`#€«€#†õùÿ€ë€þhÛèù€¿ÞàÜàÜÝ€«àÿ`Î#«`#àÜUÝ`1àÿ€T#`#`#€#UùÿÊ €þÿÿÿ?ÿÿ€€controlsÿÿÿÿ™ÿ€€€€ÿÿÿ?ÿÿÿ©// disable yellow box around buttons accessed via the keyboard _focusrect = 0; // Initialize movement speed and start time. function init () { // First, clear the stage of any previous balls. removeBalls(); // Now make a new set of balls. makeBalls(parseInt(numBallsInput)); // Done initializing, now start the event loop to move the object this.attachMovie("processDoMove", "processDoMove", 10000) // Do interface set up (set point of origin, fade title out) origin._x = parseFloat(centerXInput); origin._y = parseFloat(centerYInput); title._alpha = 30; } // Function to move a clip with each passing frame. function moveClipAroundCircle (theClip) { // Determine how much time has passed theClip.then = theClip.now; theClip.now = getTimer(); var elapsed = theClip.now - theClip.then; var numSeconds = elapsed / 1000; // Find out how many degrees to increment this frame. var degreeIncrement = theClip.degreesPerSecond * numSeconds; // Update the angle theClip.theta += degreeIncrement; // Keep the angle between -360 and 360 degrees theClip.theta %= 360; // Find radian version of theta. // Required by cos and sin functions. var radians = degreesToRadians(theClip.theta); // Figure out where the clip resides on the ellipse around which it's travelling. var xOnEllipse = theClip.ellipseWidth * (Math.cos(radians) * theClip.radius); var yOnEllipse = theClip.ellipseHeight * (Math.sin(radians) * theClip.radius); // ===Deal with ellipse rotation=== // First, determine amount to increment ellipse's rotation, // based on elapsed time and rotation speed. var rotationDegreeIncrement = theClip.rotationDegreesPerSecond * numSeconds; // Update the ellipse's rotation. theClip.rotationTheta += rotationDegreeIncrement; // Keep the rotation angle between -360 and 360 degrees theClip.theta %= 360; // Apply the ellipse's rotation to the ball's position. var rotationRadian = degreesToRadians(theClip.rotationTheta); var rotatedX = xOnEllipse * Math.cos(rotationRadian) - yOnEllipse * Math.sin(rotationRadian); var rotatedY = xOnEllipse * Math.sin(rotationRadian) + yOnEllipse * Math.cos(rotationRadian); // All done calculating position. Now place the clip on the circle. theClip._x = theClip.centerX + rotatedX; theClip._y = theClip.centerY - rotatedY; } // Simulates a 3d effect without the work of bothering with a z-axis. // Doesn't handle z-sorting, so we use alpha to fake it. It's a bit of a hack, // but it gets the job done in some circumstances. function addDepthEffect (theClip) { // Transform the object's size and transparency. sin(theta) oscillates // between -1 and 1, so we and 1 to it and use that to scale and fade our balls. var degreeSin = Math.sin(degreesToRadians(theClip.theta)); // Adjust size theClip._xscale = theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale); theClip._yscale = theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale); // Adjust transparency theClip._alpha = (theClip.minScale + ((degreeSin + 1) / 2) * (theClip.maxScale - theClip.minScale)); } // Makes a series of ball clips function makeBalls (numBalls) { // Create an array to hold the balls. We'll use this array // later when managing the balls as a group. ballList = new Array(); // Create each ball clip for (var i = 0; i < numBalls; i++) { // Put the clip on stage this.attachMovie("ball", "ball" + i, i); // Store a convenient reference to this ball clip. var thisBall = this["ball" + i]; // Define ball properties. We set these programmatically, but // more customized behaviour could be created by hand... // Start with user input values. thisBall.rpm = parseFloat(rpmInput); thisBall.radius = parseFloat(radiusInput); thisBall.centerX = parseFloat(centerXinput); thisBall.centerY = parseFloat(centerYinput); thisBall.ellipseWidth = parseFloat(ellipseWidthInput); thisBall.ellipseHeight = parseFloat(ellipseHeightInput); thisBall.rotationTheta = parseFloat(rotationInput); thisBall.rotationRPM = parseFloat(rotationRPMInput); thisBall.maxScale = parseFloat(maxScaleInput); thisBall.minScale = parseFloat(minScaleInput); // Now assign programmatic properties thisBall.theta = 0 + (i * (360/numBalls)); // angle of object, measured counterclockwise from the positive x-axis thisBall.degreesPerSecond = thisBall.rpm * 360 / 60; // amount to move per second thisBall.rotationDegreesPerSecond = thisBall.rotationRPM * 360 / 60; // amount to rotate the ellipse per second thisBall.now = getTimer(); // Place the ball way off stage so it doesn't show up before // it starts moving around the center point. thisBall._x = -1000; thisBall._y = -1000; // Add this ball to the list ballList[i] = thisBall; } } // Cleans the stage of all ball clips. function removeBalls () { for (var i = 0; i < ballList.length; i++) { ballList[i].removeMovieClip(); } } // Moves all the ball clips in ballList around the circle. function moveBalls () { for (var i = 0; i < ballList.length; i++) { moveClipAroundCircle(ballList[i]); addDepthEffect(ballList[i]); } } // Converts degrees to radians. function degreesToRadians(degrees) { return (degrees/180) * Math.PI; }€€scriptsÿÿÿÿOÿOÿ€€ ÿÿ CDocumentPage Page 1Scene 1Þ>8™O•;€ Symbol 24 eventLoop­·�9°·�9€ Symbol 22 title textÏól8„F•;€ Symbol 20 button: pointÉyi8§ï1•;€ Symbol 19point of origin\xi8�¨xi8€ Symbol 7 button: go(!8Çgvi8€ Symbol 3ball†0•;œball†0•;€ Symbol 18 processDoMoveSpi8l processDoMoveÌ6•;ø*@h…hhhh™™3ÿÀÀÀÿ´Vector::External Font Files0Vector::Debugging Permitted0Vector::Generator CommandVector::Preview as GIF0Vector::Override Sounds0Vector::Quality50Vector::Protect0Vector::TemplateVector::Debugging PasswordVector::Omit Trace Actions0Vector::TopDown0Vector::Report0"PublishFormatProperties::generatorVector::Event Format0Vector::Stream Compress7Vector::Version5Vector::Event Compress7Vector::Stream Format0ÿÿÿÿåÿÿ CColorDefÿ €333ÿ0 €fffÿ` €™™™ÿ� €ÌÌÌÿÀ €ÿÿÿÿð €ÿÿïx €ÿÿPïx €ÿÿ ïx €ÿÿÿ(ïx €ÿÿÿxïx €ÿÿÿÈïx €ÿ €3ÿPï €fÿPï0 €™ÿPïH €ÌÿPï` €ÿÿPïx €3ÿï €33ÿ(ï €3fÿ<ï0 €3™ÿCïH €3ÌÿFï` €3ÿÿHïx €3ÿ ï €33ÿxï €f3ÿdï0 €™3ÿ]ïH €Ì3ÿZï` €ÿ3ÿXïx €33ÿÈï €333ÿ0 €3f3ÿPPH €3™3ÿPx` €3Ì3ÿP�x €3ÿ3ÿPï� €fÿ ï0 €3fÿŒï0 €ffÿxï0 €™fÿkïH €Ìfÿdï` €ÿfÿ`ïx €3fÿ´ï0 €33fÿ PH €3ffÿxPH €3™fÿdx` €3Ìfÿ]�x €3ÿfÿZï� €™ÿ ïH €3™ÿ“ïH €f™ÿ…ïH €™™ÿxïH €Ì™ÿnï` €ÿ™ÿhïx €3™ÿ­ïH €33™ÿ x` €3f™ÿŒx` €3™™ÿxx` €3Ì™ÿk�x €3ÿ™ÿdï� €Ìÿ ï` €3Ìÿ–ï` €fÌÿŒï` €™Ìÿ‚ï` €ÌÌÿxï` €ÿÌÿpïx €3Ìÿªï` €33Ìÿ �x €3fÌÿ“�x €3™Ìÿ…�x €3ÌÌÿx�x €3ÿÌÿnï� €ÿÿ ïx €3ÿÿ˜ïx €fÿÿ�ïx €™ÿÿˆïx €Ìÿÿ€ïx €ÿÿÿxïx €3ÿÿ¨ïx €33ÿÿ ï� €3fÿÿ–ï� €3™ÿÿŒï� €3Ìÿÿ‚ï� €3ÿÿÿxï� €fÿï0 €f3ÿï0 €ffÿ(ï0 €f™ÿ5ïH €fÌÿ<ï` €fÿÿ@ïx €™ÿïH €™3ÿ ïH €™fÿïH €™™ÿ(ïH €™Ìÿ2ï` €™ÿÿ8ïx €f3ÿÜï0 €f33ÿPH €ff3ÿ(PH €f™3ÿ<x` €fÌ3ÿC�x €fÿ3ÿFï� €™3ÿãïH €™33ÿx` €™f3ÿx` €™™3ÿ(x` €™Ì3ÿ5�x €™ÿ3ÿ<ï� €ffÿÈï0 €f3fÿÈPH €fffÿ` €f™fÿP0x €fÌfÿPx� €fÿfÿPï¨ €™fÿÕïH €™3fÿÜx` €™ffÿ0x €™™fÿ(0x €™Ìfÿ<x� €™ÿfÿCï¨ €f™ÿ»ïH €f3™ÿ´x` €ff™ÿ 0x €f™™ÿx0x €fÌ™ÿdx� €fÿ™ÿ]ï¨ €™™ÿÈïH €™3™ÿÈx` €™f™ÿÈ0x €™™™ÿ� €™Ì™ÿPP¨ €™ÿ™ÿPïÀ €fÌÿ´ï` €f3Ìÿ­�x €ffÌÿ x� €f™ÌÿŒx� €fÌÌÿxx� €fÿÌÿkï¨ €™Ìÿ¾ï` €™3Ìÿ»�x €™fÌÿ´x� €™™Ìÿ P¨ €™ÌÌÿxP¨ €™ÿÌÿdïÀ €fÿÿ°ïx €f3ÿÿªï� €ffÿÿ ï¨ €f™ÿÿ“ï¨ €fÌÿÿ…ï¨ €fÿÿÿxï¨ €™ÿÿ¸ïx €™3ÿÿ´ï� €™fÿÿ­ï¨ €™™ÿÿ ïÀ €™ÌÿÿŒïÀ €™ÿÿÿxïÀ €Ìÿï` €Ì3ÿ ï` €Ìfÿï` €Ì™ÿï` €ÌÌÿ(ï` €Ìÿÿ0ïx €ÿÿïx €ÿ3ÿïx €ÿfÿïx €ÿ™ÿïx €ÿÌÿ ïx €ÿÿÿ(ïx €Ì3ÿæï` €Ì33ÿ�x €Ìf3ÿ �x €Ì™3ÿ�x €ÌÌ3ÿ(�x €Ìÿ3ÿ2ï� €ÿ3ÿèïx €ÿ33ÿï� €ÿf3ÿ ï� €ÿ™3ÿï� €ÿÌ3ÿï� €ÿÿ3ÿ(ï� €ÌfÿÜï` €Ì3fÿã�x €Ìffÿx� €Ì™fÿx� €ÌÌfÿ(x� €Ìÿfÿ5ï¨ €ÿfÿàïx €ÿ3fÿæï� €ÿffÿï¨ €ÿ™fÿ ï¨ €ÿÌfÿï¨ €ÿÿfÿ(ï¨ €Ì™ÿÒï` €Ì3™ÿÕ�x €Ìf™ÿÜx� €Ì™™ÿP¨ €ÌÌ™ÿ(P¨ €Ìÿ™ÿ<ïÀ €ÿ™ÿØïx €ÿ3™ÿÜï� €ÿf™ÿãï¨ €ÿ™™ÿïÀ €ÿÌ™ÿïÀ €ÿÿ™ÿ(ïÀ €ÌÌÿÈï` €Ì3ÌÿÈ�x €ÌfÌÿÈx� €Ì™ÌÿÈP¨ €ÌÌÌÿÀ €ÌÿÌÿPïØ €ÿÌÿÐïx €ÿ3ÌÿÒï� €ÿfÌÿÕï¨ €ÿ™ÌÿÜïÀ €ÿÌÌÿïØ €ÿÿÌÿ(ïØ €ÌÿÿÀïx €Ì3ÿÿ¾ï� €Ìfÿÿ»ï¨ €Ì™ÿÿ´ïÀ €ÌÌÿÿ ïØ €ÌÿÿÿxïØ €ÿÿÿÈïx €ÿ3ÿÿÈï� €ÿfÿÿÈï¨ €ÿ™ÿÿÈïÀ €ÿÌÿÿÈïØ €ÿÿÿÿð €ÿÿÝÿ(ïà €ÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿÿÿ €ÿÿÿ*ÿÿÿ]ÿÿÿÿÿªÿÿÔÿÿÿÿÿÿ €ÿîœÿd±tÿÿÿÏz^ Úÿÿh