[comp.sys.mac.hypercard] Major SuperCard Incompatibility!!

jr@amanue.UUCP (Jim Rosenberg) (07/30/89)

I don't get a regular feed of this newsgroup, so please excuse if this subject
has already been discussed.

When I converted one of my stacks from HyperCard to SuperCard it just plain
didn't work.  I'm not talking poor performance, I'm talking buttons not
working *AT ALL* as in dead as a doornail, kaput, no response.  When this
first happened I cursed and fumed at Silicon Beach, wondered how they could
release such a piece of garbage, had visions of a 1-mouse MacUser review.  I'm
a big fan of SuperPaint, and something told me it *COULDN'T* be that bad, that
there had to be a sensible reason why I was having the problem.  It took me
the better part of a weekend to figure out what was going on.  I am being
bitten not by bugs, but by, you guessed it, a *FEATURE*.

My stacks contain a number of backgrounds, each shared by several cards.  To
simplify I'll just talk about a single background, so we'll assume there is
one background and several cards.  Each card has no buttons, no fields, no
card script; the only thing on a card is a graphic.  The background is *tiled*
with invisible rectangular buttons, each of which has only a single on
mouseEnter handler, and all this handler does is a go card for one of the
cards.  So what we have is very simple:  a set of cards with the screen
divided into rectangular "hot regions"; as the mouse moves around the screen
depending on what region it's in a different card is shown.  This works fine
under HyperCard; the reason I'm not happy with it under HyperCard is the
amount of disk space the stack is taking with all the cards.

Now under HyperCard there is really no such thing as "a graphic".  In
SuperCard a graphic is an object, i.e. an entity with a script and a receiver
of messages.  Moreover the SuperCard message hierarchy works in such a fashion
that a foreground graphic stands *in front of all background buttons*.  My
stacks don't work because the rectangle of the card graphic in SuperCard is
receiving (and eating!) the mouseEnter messages; the background buttons never
see them unless I happen to be outside the rectangle of the foreground
graphic.  The obvious dodge of having a handler for the foreground graphic
that attempts to do a pass on the mouseEnter message doesn't seem to work.

I called Silicon Beach about this and got them to understand the problem, and
also made a suggestion for what I think is the right way to fix this.  The
fellow I talked to on the hotline agreed it was a good suggestion.  When you
get the object info dialogue box, you have a check-box for visible/invisible.
There needs to be an additional choice, participant/non-participant.  The
visibility box would cover *only graphic* visibility; the participant box
would cover "message visibility".  I.e. with visible on and participant off,
the object would be graphically visible but would be "not there" as far as the
message hierarchy was concerned.  The default should be visible on and
participant off when converting HyperCard stacks.  Currently the visible box
applies to both graphic and message visibility, and there's no way to separate
the two.

I don't know whether other people have run into my problem, but buyer beware:
if you use on mouseEnter for much of anything you could be in big trouble with
this release of SuperCard.  (What was that someone said about not buying
release x.0 of *anything*? ...)

Incidentally the slow performance of SuperCard is every bit as bad as everyone
is saying.  With their STEP feature they claim to be able to flash entire
cards as fast as 30 per second, but a series of hide graphic statements in a
handler -- where the graphics are only a very small part of the screen --
seems to execute no faster than one or two per second!!!
-- 
 Jim Rosenberg
     CIS: 71515,124                         decvax!idis! \
     WELL: jer                                   allegra! ---- pitt!amanue!jr
     BIX: jrosenberg                  uunet!cmcl2!cadre! /