[Laszlo-dev] the type of the "sprite" instance var is different for LzView and LzText

P T Withington ptw at pobox.com
Mon Jan 7 18:34:32 PST 2008


This problem has a technical name, I can never remember if this is co-  
or contra-variance.  There's no pretty solution in a strongly-typed  
language (as you surely know from writing Java).

I think your best bet is to declare a textsprite slot and use that to  
access the textsprite interface when needed (that way you only have  
one cast to make -- at construct time).

On 2008-01-07, at 18:41 EST, Henry Minsky wrote:

> In LzView, the "sprite" instance var is pointing to an instance of
> LzSprite, whereas in LzText, it expects to talk to
> an instance of LzTextSprite (which is a subclass of LzSprite).
>
> LzText calls a number of LzTextSprite methods, such as in it's  
> construct method:
>
>    this.sprite.__initTextProperties(args);
>
> So in as3, you're not allowed to override a superclass's instance var
> with a var of the same name but a different type.
>
> This is a particular issue because I am not declaring LzSprite
> dynamic, I want it to be a sealed class
> in order to get the performance benefits.
>
>
> So how should this be handled?
>
> Should I cast it before each call, or declare another var with type
> LzTextSprite and point the sprite var at it?
>
>
>
>
> -- 
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com



More information about the Laszlo-dev mailing list