[Laszlo-dev] [Platform-team] System calls

P T Withington ptw at pobox.com
Sun Sep 14 14:44:51 PDT 2008


It's petty clear to me that we need to bring passthrough technology up  
to the LZX level. Max already filed a request... I think it's up to  
you or I to just do it.

On Sep 14, 2008, at 1:32 AM, "Henry Minsky"  
<hminsky at laszlosystems.com> wrote:

> To expand on this, I'm working on the debugger GUI component now,  
> and it almost compiles in swf9, except that I need some lines of  
> runtime-specific code to instantiate a loader class for doing eval()  
> requests to the server.
>
> In swf8, the code is
>
> this.evalloader =  new LzLoader(this.sprite, { attachname:  
> 'debugloader' });
>
> in swf9, it needs to be
>
>         this.evalloader = new Loader();
>          
> this.evalloader.contentLoaderInfo.addEventListener(Event.INIT,  
> debugEvalListener);
>
> LzLoader is an internal swf8 kernel class, while Loader and  
> Event.INIT are as3
> library classes.
>
> So I'm not sure what the most expedient way to deal with this is.
>
> I was thinking maybe something like using the <switch> tag to  
> conditionalize creating different code at the level of methods, but  
> I still need some way to insert the "import flash.xx.*;" statements  
> into the class declaration that gets generated. If I had the  
> proposed <passthrough> tag, it might looks like
>
> <class name="LzDebugWindow" >
>   <switch>
>     <when runtime="swf9">
>         <passthrough context="class">
>              import flash.util.*;
>              import flash.events.*;
>         </passthrough>
>       <method name="makeEvalLoader">
>         debugloader = new Loader();
>         debugloader.contentLoaderInfo.addEventListener(Event.INIT,  
> debugEvalListener);
>       </method>
>       <method name="debugEvalListener" args="event:Event">
>          ...
>       </method>
>     </when>
>     <otherwise>
>       <method name="makeEvalLoader">
>         return new LzLoader(this.sprite, { attachname:  
> 'debugloader' });
>       </method>
>     </otherwise>
> </switch>
>
>
>
> In this case, it might or might not be better to structure the
> LzDebugWindow as an abstract base class with everything except the
> runtime-specific methods, and then have the debugger/Library.lzs
> include a runtime-specific final class which would define those
> methods, so I'd have a common file with
>
>     <class name="LzBaseDebugWindow">
>     ...
>     </class>
>
> and then make mutually exclusive swf8 and swf9 files which defined the
> runtime-specific methods. But I'd still need this <passthrough> tag to
> get the import statements forced into the intermediate script code.
>
> <library>
>   <switch>
>     <when runtime="swf8">
>       <include href="swf8debugger.lzx">
>     </when>
>     <when runtime="dhtml">
>      <!-- no debugger component in dhtml -->
>     </when>
>     <when runtime="swf9">
>       <include href="swf9debugger.lzx"/>
>     </otherwise>
>   </switch>
> </library>
>
>
>


More information about the Laszlo-dev mailing list