3D Lingo Dictionary > O-S > registerScript() |  |

registerScript()

Syntax

    member(whichCastmember).model(whichModel).registerScript(eventName, handlerName, scriptObject {, begin, period, repetitions})
    member(whichCastmember).camera(whichCamera).registerScript(eventName, handlerName, scriptObject {, begin, period, repetitions})
    member(whichCastmember).light(whichLight).registerScript(eventName, handlerName, scriptObject {, begin, period, repetitions})
    member(whichCastmember).group(whichGroup).registerScript(eventName, handlerName, scriptObject {, begin, period, repetitions})

Description

3D command; registers the specified handler to be called when the specified event occurs for the referenced node.

The following parameter descriptions apply to both the `registerForEvent()` and `registerScript()` commands.

The `handlerName` parameter is the name of the handler that will be called; this handler is to be found in the script object indicated by `scriptObject`.

If 0 is specified for `scriptObject`, then the first event handler with the given name found in a movie script is called.

The `eventName` parameter can be any of the following predefined Lingo events, or any custom event that you define:

| `#collideAny` is a collision event generated when any two bodies in the system collide with each other, and both bodies have the `#collision` modifier attached.
| `#collideWith` is a collision event involving this specific model. The `setCollisionCallback()` command is a shortcut for using the `registerScript()` command for the `#collideWith` event.
| `#animationStarted` and `#animationEnded` are notification events that occur when a bones or keyframe animation starts or stops playing. The handler will receive three arguments: `eventName`, `motion`, and `time`. The `eventName` argument is either `#animationStarted` or `#animationEnded`. The `motion` argument is the name of the motion that has started or stopped playing, and `time` argument is the current time of the motion.
| For looping animations, the `#animationStarted` event is issued only for the first loop, not for subsequent loops. During a blend of two animations, this event will be sent as the blend begins.
| When a series of animations is queued for the model and the animation's `autoBlend` property is set to `TRUE`, the `#animationEnded` event may occur before the apparent end of a given motion. This is because the `autoBlend` property may make the motion appear to continue even though the animation has completed as defined.
| `#timeMS` is a time event. The first `#timeMS` event occurs when the number of milliseconds specified in the `begin` parameter have elapsed after `registerForEvent` is called. The `period` parameter determines the number of milliseconds between`#timeMS` events when the value of `repetitions` is greater then 0. If `repetitions` is 0, the `#timeMS` event occurs indefinitely.
| The handler you specify is sent the following arguments:
| `type` is always 0.
| `delta` is the elapsed time in milliseconds since the last `#timeMS` event.
| `time` is the number of milliseconds since the first #timeMS event. For example, if there are three iterations with a period of 500 ms, the first iteration's time will be 0, the second iteration will be 500, and the third will be 1000.
| `duration` is the total number of milliseconds that will elapse between the `registerForEvent` call and the last `#timeMS` event. For example, if there are five iterations with a period of 500 ms, the duration is 2500 ms. For tasks with unlimited iterations, the duration is 0.
| `systemTime` is the absolute time in milliseconds since the Director movie started.

Examples

This statement registers the `messageReceived` event handler found in a movie script to be called when the model named Player receives the custom user defined event named `#message`:

    member("Scene").model("Player").registerScript(#message, #messageReceived, 0)

This statement registers the `collisionResponder` event handler found in the same script as the `registerScript` command to be called each time a collision occurs between the model named Player and any other model using the `#collision` modifier:

    member("Scene").model("Player").registerScript(#collideWith, #collisionResponder, me)

See also

`registerForEvent()`, `sendEvent`, `setCollisionCallback()`, `collisionData`