6: Handle
The "6: Handle" Behavior
What it does
You can see this behavior in scene 12
of the demo.
"6: Handle" makes a window or menu draggable. When you attach
this to a Window Element or Menu Element,
when the user mouses down on the element, they can drag the window or
menu around as long as you also have a copy of the "6b:
Handle" script in a cast. If you don't have a copy of this
in a cast, WFS will remind you to do it because the "6: Handle"
behavior needs the "6b: Handle" parent script.
If the behavior is attached to an element of a window and there are
children of the window, then they will move also as long as the children
are configured to move with their parent. Child windows have to be configured
to move with their parent via their Manager's Parameter
Dialog Box. Child menus automatically move with their parent.
When you make an element a handle, you may wish to drop the "Cursor
Control" behavior on the element and configure the "Cursor
Control" behavior so that it is set to "Drag and Drop"
so the cursor indicates to the user that the handle sprite is draggable.
You don't have to do this, but it is sound interface design.
What to attach it to
Attach "6: Handle" to Window Elements or Menu Elements (not
to Managers). Window Elements and Menu Elements have the "4:
Window/Menu Element" behavior attached to them.
You can attach multiple handles to a given window or menu, if you like
(but only one per sprite).
"6b: Handle" parent script
If you use the "6: Handle" behavior, drop a copy of the "6b:
Handle" parent script into a cast. You don't need to configure
"6b: Handle" at all.
Parameter Dialog Box

If
you leave the top box blank, you will be able to drag the window around
without constraints. If you type in the name of a multi-sprite, then
the multi-sprite to which the "6: Handle" behavior is attached
will be constrained in its movement by the rectangle you define in the
other four boxes. The values in the last four boxes are relative to
the background of the multi-sprite you specify in the first box. Positive
values are like page margins. Negative values broaden the borders.
You can specify two special values in the first box: "stage"
or "parent" (without the quotation marks). If you specify
"stage" then the multi-sprite will be constrained by the rectangle
you define relative to the stage. Putting in four 0 values, for instance,
would constrain the multi-sprite to the stage. If you specify "parent"
in the first box, then the multi-sprite will be constrained by its parent,
if it has one.
Public Handler
wfsSetConstraints (constrainingWindow, theLeft, theTop,
theRight, theBottom)
Function
wfsSetConstraints allows you to change the constraints on the fly.
Parameters
constrainingWindow: This is a string that
is the name of a multi-sprite or you can also use "stage"
or "parent". If you specify "stage" then the multi-sprite
will be constrained by the rectangle you define via theLeft, theTop,
the Right, and theBottom relative to the stage. Putting in four 0 values,
for instance, would constrain the multi-sprite to the stage. If you
specify "parent", then the multi-sprite will be constrained
by its parent, if it has one. If you don't want any constraints, set
constrainingWindow to "".
theLeft: This is an integer. It is only relevant
if you have specified constrainingWindow to be the name of some multi-sprite
or "stage" or "parent". Positive values for theLeft
determine how far to the right of the left border of the constraining
window the constraint will be. Negative values for theLeft let the user
move the window further to the left than the constraining window's left
border.
theTop: Same sort of idea as for theLeft
only theTop determines the constraint concerning top vertical movement.
theRight: Same sort of idea as for theLeft
only theTop determines the constraint concerning movement to the right
theBottom: Same sort of idea as for theLeft
only theTop determines the constraint concerning vertical movement down.
Example
In the below examples, suppose that the "6: Handle" behavior
is attached to sprite 7.
sprite(7).wfsSetConstraints("some window", 0,0,0,0)
The above constrains the window that the "6: Handle" behavior
is part of to moving within the area defined by the background sprite
of the multi-sprite named "some window". Recall that by WFS
convention, the background of a multi-sprite is the area defined by
the rect of the element below the manager in the Score.
sprite(7).wfsSetConstraints("stage", 0,0,0,0)
The above constrains the window that the "6: Handle" behavior
is part of to moving within the area defined by the stage.
sprite(7).wfsSetConstraints("parent", 0,0,0,0)
The above constrains the window that the "6: Handle" behavior
is part of to moving within the area defined by the parent of the multi-sprite,
if it has one. If it doesn't have a parent, the multi-sprite will be
unconstrained in its movement.
sprite(7).wfsSetConstraints("",1,2,3,4)
The above makes the multi-sprite unconstrained in its movement. The
last four parameters are without effect since the first one is "".
sprite(7).wfsSetConstraints("stage", 20,-30,40,-50)
The above constrains the multi-sprite to movement within a rectangle
whose left side is 20 pixels to the right of the left of the stage;
30 pixels higher than the top of the stage; 40 pixels to the left of
the stage's right; and 50 pixels below the bottom of the stage.
|