I'm sure your right, but don't you agree that it is breaking the general/kernel abstraction to have the general event handler directly calling Sprite functions (since the kernel is potentially not even written in Javascript, there really needs to be a wrapper around every one of these, and in the case of sprites, the view is the natural wrapper).

On 2008-05-07, at 15:18 EDT, André Bargull wrote:

If you're speaking about the swf7/swf8-kernel, things get pretty hard to manage, for example "LzSprite.prototype.setCursor(..)" registers the sprite to its owner's "onmouseout"-event, or another great example: the "LzMakeLoadSprite.createLoader()". (The functions from LzMakeLoadSprite will be attached at runtime to a LzSprite, when the sprite loads http-images. So, any reference to "this" in LzMakeLoadSprite refers to a LzSprite. Yeah!).


Can I file a bug for you to do that? The most popular one I see is the sprite scheduling checkPlayStatus2 on LzIdle. Instead it should just use some runtime native timer, right?

On 2008-05-07, at 12:54 EDT, Max Carlson wrote:

>/ I agree - sprites shouldn't be allowed to send events directly into />/ the system. Kernels should always use callbacks for this... We've />/ been a bit sloppy with the swf8 kernel, but dhtml and swf9 _should_ />/ use callbacks exclusively.
/>/
/>/ P T Withington wrote:
/>>/ Actually, thinking about it, the Sprite, being in the kernel, has />>/ no business trying to use a generic service like events. Each />>/ sprite implementation needs to use its own kernel services directly />>/ to do any eventing. I think that in most cases the sprite is just />>/ registering a timeout event, which should be simple to do.
/>>/ On 2008-05-07, at 11:49 EDT, P T Withington wrote:
/>>>/ It really turns out that LzDelegate and LzEvent want their / >>>/ context's to be LzMiniNode's (because they want to look at / >>>/ __LZdeleted, __LZdeferDelegates, and _events). If all context's />>>/ were LzMiniNodes (or LzEventable, as proposed yesterday), we could />>>/ also implement automatic tracking of events and delegates so they />>>/ won't leak when nodes are destroyed (eliminating the burden on />>>/ every LZX class doing this for themselves).
/>>>/
/>>>/ I tried to enforce this, but run into trouble because Sprite's />>>/ want to register themselves as delegates, but they are not mini />>>/ nodes.
/>>>/
/>>>/ One thought: I create a superclass LzSimpleDelegate and / >>>/ LzSimpleEvent that work with any object and don't participate in />>>/ the node protocol.
/>>>/
/>>>/ Any better ideas?
/>/
/>/ -- />/ Regards,
/>/ Max Carlson
/>/ OpenLaszlo.org/



Reply via email to