Hi Tucker,
I started with LzCursor as a model for a singleton class that doesn't
use a trampoline to call the kernel-level implementation. LzCursor
does not compile on swf9 so I worked on a solution that runs on each
platform. Unfortunately, you lose compile-time error checking. I
decided not to use this method for LzBrowser until we figure out if
we need the added performance.
// Emulates a kernel-specific class
class LzTestKernel {
static function staticmethod1 ()
{
if ($swf9) {
trace("staticmethod1 called");
} else {
Debug.write("staticmethod1 called");
}
}
static function staticmethod2 (arg1)
{
if ($swf9) {
trace("staticmethod2 called: " + arg1);
} else {
Debug.write("staticmethod2 called:", arg1);
}
}
}
// Interface
class LzTestInterface {
var func1:Function = function() {}
var func2:Function = function() {}
}
// Implementation
class LzTestService extends LzTestInterface {
static var LzTest:LzTestService;
LzTestService.LzTest = new LzTestService();
function LzTestService() {
this.func1 = LzTestKernel.staticmethod1;
this.func2 = LzTestKernel.staticmethod2;
}
}
var LzTest = LzTestService.LzTest;
// Simple test
class Tester {
function Tester () {
LzTest.func1();
LzTest.func2("arg1");
}
}
var Testing = new Tester();