---------------------------------------------------- -- Moves a sprite on a definable Lissajous curve -- Behavior by Ken Loge - http://diginoodles.com -- Algorithm based on Lissajous Lab from Stormsky ---------------------------------------------------- property pWidthRange -- the width "spread" of the curve description property pHeightRange -- the height "spread" of the curve description property pOffsetValue -- if > 0 the curve appears to rotate on its X-axis property pCurveLoops -- the number of "loops" the curve will make property pIncrementAmount -- the "speed" the curve is drawn. A lower number produces a smoother curve, but is slower to draw. property pHalfStageWidth -- use to store half of the stage width property pHalfStageHeight -- use to store half of the stage height property pCurveIncrementer -- use to add the increment amount for curve smoothness and draw speed on getPropertyDescriptionList me list = [:] addProp list, #pWidthRange, [#comment: "Curve Width Area:", #format: #integer, #default: 100, #range: [#min: 0, #max: 500]] addProp list, #pHeightRange, [#comment: "Curve Height Area:", #format: #integer, #default: 100, #range: [#min: 0, #max: 500]] addProp list, #pOffsetValue, [#comment: "Curve X Offset Value:", #format: #float, #default: 0.0, #range: [#min: 0, #max: 10]] addProp list, #pCurveLoops, [#comment: "Number of Curve Loops:", #format: #integer, #default: 1, #range: [#min: 0, #max: 100]] addProp list, #pIncrementAmount, [#comment: "Curve Resolution:", #format: #float, #default: 0.02, #range: [#min: 0, #max: 5]] return list end on beginSprite me pHalfStageWidth = _movie.stage.drawRect.right / 2 pHalfStageHeight = _movie.stage.drawRect.bottom / 2 end on exitFrame me pCurveIncrementer = pCurveIncrementer + pIncrementAmount sprite(me.spriteNum).locH = (pWidthRange * sin((pCurveLoops * pCurveIncrementer) + pOffsetValue)) + pHalfStageWidth sprite(me.spriteNum).locV = (pHeightRange * sin(pCurveIncrementer)) + pHalfStageHeight end