Is the view static or animated... if it is static, might I suggest using addToPic to place it. Then you can always check for clicks on that priority color in combination of a bounding area.
(if(== $0100 OnControl(ocPRIORITY (send pEvent:x) (send pEvent:y)))
(if((> (send pEvent:x) 273) and
(< (send pEvent:x) 293) and
(> (send pEvent:y) 90) and
(< (send pEvent:y) 95))
(send pEvent:type(evMOUSEBUTTON) claimed(TRUE))
// .... do some stuff
)
(else
(send pEvent:type(evMOUSEBUTTON) claimed(FALSE))
)
)
I am assuming though that since there is more than one cel, we aren't going to get that lucky. I can't come up with any good way of checking against clicking on a portion of a view. I hate to ask, but are you sure you need one large view? No way of breaking it down into more manageable sections?
Maybe though, if you know where the clickable area's are during any given cel, it might be possible to check against a bounding area in addition to checking on the views cel.
(if((> (send pEvent:x) 273) and
(< (send pEvent:x) 293) and
(> (send pEvent:y) 90) and
(< (send pEvent:y) 95))
(if(== (someView:cel) 5)
(send pEvent:type(evMOUSEBUTTON) claimed(TRUE))
// .... do some stuff
)
(else
(send pEvent:type(evMOUSEBUTTON) claimed(FALSE))
)
)
Probably easier to do this next part but I'm just making it up as I go, so I may have some syntax a tad off and definately a bracket or two, but it should be enough to give you the idea. So instead of figuring out the bounding box based off of the room, maybe try to base it off the bounds of the view...
(if((> (send pEvent:x) (someView:nsLeft) and
(< (send pEvent:x) (someView:nsRight)) and
(> (send pEvent:y) (someView:nsTop)) and
(< (send pEvent:y) (someView:nsBottom)))
(switch(cel)
(case 0
(if((> (send pEvent:x) (+ (someView:nsLeft) someValueFromLeft)) and
(< (send pEvent:x) (- (someView:nsRight) someValueFromLeft)) and
(> (send pEvent:y) (+ (someView:nsTop) someValueFromTop)) and
(< (send pEvent:y) (- (someView:nsBottom) someValueFromBottom))
... do something
)
(if((> (send pEvent:x) (+ (someView:nsLeft) someOtherValueFromLeft)) and
(< (send pEvent:x) (- (someView:nsRight) someOtherValueFromLeft)) and
(> (send pEvent:y) (+ (someView:nsTop) someOtherValueFromTop)) and
(< (send pEvent:y) (- (someView:nsBottom) someOtherValueFromBottom))
... do something
)
) // end case
) // end switch
)
In the end this approach might make for a whole bunch of code, but in theory it should work. Just scroll through your cels, figure out the hotspots and code them into the switch...