how to clean up after my objects
oop trash communication

At 11:07 26.03.98 -0500, Brent Bonet wrote:

>Is there an equivalent to "on endSprite" with standard parent scripts?  The
>script loads an Xtra and I need to unload it when the object dies to avoid
>the nasties.

No, you'll have to roll your own. How you do this depends very much on your 
style, so this is just an example:
All my objects share a common ancestor that supplies some basic methods, one 
of them, on sleep me, checks whether a reference to that Object lives in the 
actorlist and if so, removes it. Another, on demolish me, checks if that object 
has puppeted sprites and if so, places them outside the stage and kills the 
Now, if a particular object doesn't need those actions or rather needs 
something else tbd when passing away, I include a modified handler with the 
same name. The point is: I don't have to remeber what was special with just 
that object, from outside I just have to call sleep(dObj) to make it passive 
and demolish(dObj) to destroy its "posessions".
In order to save my hair when things get complex I have come to birth all my 
objects into one property list. every object has its id hardcoded and a method 
to return that id. A typical birth looks like that:

on birthObj
  global gLpObj
  set dObj = new (script "SomeObj")
  set dId  = getMyId(dObj)
  addprop gLpObj,dId,dObj 

Thus I can get rid of them all with a very simple routine. Another plus is 
that I can find a certain object quite easy:

on getObject dId
  global gLpObj
  set dObj = getaprop(gLpObj,dId)
  if ilk ( dObj) = #instance then return dObj

Now, if some graphics member script feels the need to talk to the #MenueObj
since it just received a mouseUp event, the handler above comes handy. 
Hardcoded globals could do the same but I always had problems when porting that 
to another project.

Best regards

Daniel Plaenitz

Home shock + cgi Bits 'n pieces Director Lingo Shocklets Contact