-- This behavior cyclically rocks a sprite when the sprite is rolled over. -- Works with any sprite that has a rotation property. ------------------------- -- Ken Loge 05-27-2008 -- http://diginoodles.com ------------------------- property pActivateRockingEffect -- whether the sprite is rocking, or not property pRockState -- the current state of sprite rocking property pRockLimit -- a positive or negative integer defining the rocking limit property pRockSpeed -- the speed of the "rocking" effect on beginSprite me pRockState = #rockOver pActivateRockingEffect = FALSE -- make sure registration point is centered on sprite xCenter = sprite(me.spriteNum).width / 2 yCenter = sprite(me.spriteNum).height / 2 sprite(me.spriteNum).member.regPoint = point(xCenter,yCenter) end on getPropertyDescriptionList me list = [:] addProp list, #pRockLimit, [#comment: "Rocking limit:", #format: #integer, #default: 2, #range: [#min: 1, #max: 10]] addProp list, #pRockSpeed, [#comment: "Rocking speed:", #format: #integer, #default: 0.5, #range: [#min: 0, #max: 10]] return list end on exitFrame me rockSprite(me) end on mouseEnter me if pActivateRockingEffect = FALSE then pActivateRockingEffect = TRUE else pActivateRockingEffect = FALSE end if end on mouseLeave me if pActivateRockingEffect = FALSE then pActivateRockingEffect = TRUE else pActivateRockingEffect = FALSE -- reset sprite rotation sprite(me.spriteNum).rotation = 0 end if end -- Cyclically rock a sprite using a simple state switcher on rockSprite me -- limit rocking speed to the rocking range if pRockSpeed > pRockLimit then pRockSpeed = pRockLimit end if if pActivateRockingEffect = TRUE then if pRockState = #rockOver then sprite(me.spriteNum).rotation = sprite(me.spriteNum).rotation + pRockSpeed if sprite(me.spriteNum).rotation > pRockLimit then pRockState = #rockBack end if if pRockState = #rockBack then sprite(me.spriteNum).rotation = sprite(me.spriteNum).rotation - pRockSpeed if sprite(me.spriteNum).rotation < -pRockLimit then pRockState = #rockOver end if end if end