on mouseDown me
-- capture the currently clicked flash member
set the memRef of me = member(the memberNum of sprite (the spriteNum of me))
-- capture the loc of the currently clicked flash member
set the startPt of me = the loc of sprite (the spriteNum of me)
-- capture the mouseH origin
set the startHPoint of me = the mouseH
-- capture the mouseV of origin
set the startVpoint of me = the mouseV
-- capture the origin scale
set the startScale of me = the scale of member (the memRef of me)
-- capture the origin rotation
set the startRot of me = the rotation of member (the memRef of me)
case (keyPress) of
"S","s": set the action of me = 1 -- scale
"R","r": set the action of me = 2 -- rotate
"P","p": set the action of me = 3 -- position
otherwise
set the action of me = 0 -- no key
alert "Press the S, R, or P key to Scale, Rotate, or Position the item, respectively. Then click & drag."
end case
repeat while the stillDown
case (the action of me) of
1: --- scale handling
set delta = the mouseH - the startHPoint of me
-- sizeCheck
if (the scale of member (the memRef of me) > 5) AND (the scale of member (the memRef of me) < 2400) then
set the scale of member (the memRef of me) = the startScale of me + (0.01*delta)
else
set the scale of member (the memRef of me) = 5
end if -- sizeCheck
-- deal with shrinking and enlarging the bounding box (a.k.a. defaultRect)
set LF = the left of the defaultRect of member (the memref of me)
set TP = the top of the defaultRect of member (the memref of me)
set RT = the right of the defaultRect of member (the memref of me)
set BM = the bottom of the defaultRect of member (the memRef of me)
set LF = LF-(.2*delta)
set TP = TP-(.2*delta)
set RT = RT+(.2*delta)
set BM = BM+(.2*delta)
-- bbox check
if (the width of the defaultRect of member(the memRef of me) >= 10) AND (the width of the defaultRect of member(the memRef of me) <= 4800) then
set the defaultRect of member(the memRef of me) = rect(LF,TP,RT,BM)
else
set the defaultRect of member (the memRef of me) = rect(0,0,10,10)
end if -- bbox check
2: --- rotate handling
set delta = the mouseH - the startHPoint of me
set the rotation of member (the memRef of me) = integer(the startRot of me + (0.5*delta))
3: --- position handling
set deltaH = (the mouseH - the startHPoint of me)
set deltaV = (the mouseV - the startVPoint of me)
set the loc of sprite (the spriteNum of me) = the startPt of me + point(deltaH, deltaV)
end case
updateStage
end repeat
set the button_active of me = TRUE
end
on mouseUp me
set the startPt of me = the loc of sprite (the spriteNum of me)
set the startRot of me = the regPoint of member (the memRef of me)
set the startScale of me = the scale of member (the memRef of me)
set the button_active of me = false
end
---
on beginSprite me
set the button_active of me = false
-- puppetSprite the spriteNum of me, TRUE
end
on endSprite me
-- puppetSprite the spriteNum of me, FALSE
end
on getPropertyDescriptionList
if the currentspritenum = 0 then
set memdefault = 0
else
set memref = the member of sprite the currentspritenum
set castlibnum = the castlibnum of memref
end if
set p_list = [ #memref: [ #comment: "Use member:", #format: #flash, #default: memRef] ]
return p_list
end
on getBehaviorDescription
return "Makes a flash sprite interactivly editable. Hold 'S' to scale, 'R' to rotate, and 'P' to position the flash content. Then click and drag."
end