In addition to a room having a script associated with it, props and actors can also have scripts. If you have a lot of actors and props in a room, all doing different things, it is much easier to associated the scripting logic for a particular actor with that actor instead of in the room's script.
For this exercise, we'll make a Prop that acts as the shadow of the ego. The Prop's script's doit method will check the ego's position, and adjust its own position accordingly.
ExampleCode:(instance aShadow of Prop
(properties
x 0
y 0
view 800
)
(method (init)
(super:init())
(self:ignoreActors() z(-90))
(self:setScript(shadowScript))
)
)
(instance shadowScript of Script
(properties)
(method (doit)
(aShadow:
posn((+ 20 (send gEgo:x)) (- (send gEgo:y) 90))
)
(super:doit())
)
)
And then, in the init method of the room, you do
For example:Code:(aShadow:init())
It's that easy. Of course, the prop or actor's script can contain any of the standard script methods: changeState, handleEvent or doit.
< Previous: Chapter 2 - Regions and Locales Next: Chapter 4 - Loopers >