[Laszlo-checkins] r13200 - in openlaszlo/trunk/WEB-INF/lps: lfc lfc/kernel/swf9 server/src/org/openlaszlo/compiler
max@openlaszlo.org
max at openlaszlo.org
Fri Mar 6 07:17:37 PST 2009
Author: max
Date: 2009-03-06 07:17:33 -0800 (Fri, 06 Mar 2009)
New Revision: 13200
Modified:
openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzPreloader.as
openlaszlo/trunk/WEB-INF/lps/lfc/lzpreloader.as
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
Log:
Change 20090305-maxcarlson-l by maxcarlson at Bank.local on 2009-03-05 20:10:53 PST
in /Users/maxcarlson/openlaszlo/trunk-clean
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Fix load progress updates for swf 8 and 9 to not cause 'clicking' in IE
Bugs Fixed: LPP-7737 - IE "Click Sounds" problem when loading
Technical Reviewer: promanik
QA Reviewer: mohammad at zeineddin.name
Details: LzPreloader, lzpreloader - Update to use ExternalInterface calls instead of loading URLs.
SWF9Writer - Update to include code from LzPreloader.
Tests: Modified WEB-INF/lps/templates/html-response.xslt#onloadstatus() method to show load progress information, to verify updates are being sent for swf8/9. Used fiddler proxy under windows with 'simulate modem speed' script to verify there is no more clicking in IE even for slow downloads.
Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzPreloader.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzPreloader.as 2009-03-06 12:05:05 UTC (rev 13199)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf9/LzPreloader.as 2009-03-06 15:17:33 UTC (rev 13200)
@@ -1,7 +1,7 @@
/**
* LzSprite.as
*
- * @copyright Copyright 2007, 2008 Laszlo Systems, Inc. All Rights Reserved.
+ * @copyright Copyright 2007-2009 Laszlo Systems, Inc. All Rights Reserved.
* Use is subject to license terms.
*
* based on http://www.ghost23.de/blogarchive/2008/04/as3-application-1.html
@@ -18,7 +18,9 @@
import flash.events.ProgressEvent;
import flash.net.navigateToURL;
import flash.net.URLRequest;
+ import flash.external.ExternalInterface;
+ // WARNING: this file is not included automatically - be sure to keep server/src/org/openlaszlo/sc/SWF9External.java in sync!!!!
public class LzPreloader extends MovieClip {
public function LzPreloader() {
stop();
@@ -46,8 +48,7 @@
var percload:Number = Math.floor(root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal * 100);
var id = stage.loaderInfo.parameters.id;
if (id) {
- var js = 'if (window.lz && lz.embed && lz.embed.applications && lz.embed.applications.' + id + ') lz.embed.applications.' + id + '._sendPercLoad(' + percload + ')';
- navigateToURL(new URLRequest('javascript:' + js + ';void(0);'), '_self');
+ ExternalInterface.call('lz.embed.applications.' + id + '._sendPercLoad', percload);
}
}
}
Modified: openlaszlo/trunk/WEB-INF/lps/lfc/lzpreloader.as
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/lzpreloader.as 2009-03-06 12:05:05 UTC (rev 13199)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/lzpreloader.as 2009-03-06 15:17:33 UTC (rev 13200)
@@ -1,6 +1,6 @@
/**
*
- * @copyright Copyright 2001-2008 Laszlo Systems, Inc. All Rights Reserved.
+ * @copyright Copyright 2001-2009 Laszlo Systems, Inc. All Rights Reserved.
* Use is subject to license terms.
*
* @affects lzpreloader
@@ -141,11 +141,11 @@
mc.gotoAndStop(0);
} else {
// SWF-specific
- var percload = _root.getBytesLoaded() / _root.getBytesTotal();
var id = _root.id;
if (id) {
- var js = 'if (window.lz && lz.embed && lz.embed.applications && lz.embed.applications.' + id + ') lz.embed.applications.' + id + '._sendPercLoad(' + Math.floor(percload * 100) + ')';
- _root.getURL('javascript:' + js + ';void(0);');
+ var percload = Math.floor((_root.getBytesLoaded() / _root.getBytesTotal()) * 100);
+ if (percload != this._lastpercload) flash.external.ExternalInterface.call("lz.embed.applications." + id + "._sendPercLoad", percload);
+ this._lastpercload = percload;
}
for (var i = 0; i < this.synctoloads.length; i++) {
Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java 2009-03-06 12:05:05 UTC (rev 13199)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java 2009-03-06 15:17:33 UTC (rev 13200)
@@ -465,6 +465,7 @@
"import flash.system.*;\n" +
"import flash.net.*;\n" +
"import flash.ui.*;\n" +
+ "import flash.external.*;\n" +
"}#\n";
/** Create application boilerplate preamble as3 code
@@ -483,8 +484,10 @@
"app = new " + MAIN_APP_CLASSNAME + "(this);\n" +
"}\n" +
"}\n";
- // preloader code from kernel/swf9/LzPreloader.as -- eeek should come from extern file, maybe with JSP interpolation.
- source += "// based on http://www.ghost23.de/blogarchive/2008/04/as3-application-1.html\n public class LzPreloader extends MovieClip {" + imports + "public function LzPreloader() { stop(); root.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress); addEventListener(Event.ENTER_FRAME, enterFrame); } public function enterFrame(event:Event):void { if (framesLoaded == totalFrames) { root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,loadProgress); nextFrame(); var mainClass:Class = Class(loaderInfo.applicationDomain.getDefinition('LzSpriteApplication')); if(mainClass) { var main:DisplayObject = DisplayObject(new mainClass()); if (main) { removeEventListener(Event.ENTER_FRAME, enterFrame); stage.addChild(main); stage.removeChild(this); } } } } private function loadProgress(event:Event):void { var percload:Number = Math.floor(root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal * 100); var id = stage.loaderInfo.parameters.id; if (id) { var js = 'if (window.lz && lz.embed && lz.embed.applications && lz.embed.applications.' + id + ') lz.embed.applications.' + id + '._sendPercLoad(' + percload + ')'; navigateToURL(new URLRequest('javascript:' + js + ';void(0);'), '_self'); } } } // end of preloader\n";
+ // TODO: should come from extern file, maybe with JSP interpolation
+ // preloader code from kernel/swf9/LzPreloader.as
+ // BE SURE TO KEEP THIS IN SYNC
+ source += "// based on http://www.ghost23.de/blogarchive/2008/04/as3-application-1.html\n public class LzPreloader extends MovieClip {" + imports + "public function LzPreloader() { stop(); root.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress); addEventListener(Event.ENTER_FRAME, enterFrame); } public function enterFrame(event:Event):void { if (framesLoaded == totalFrames) { root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,loadProgress); nextFrame(); var mainClass:Class = Class(loaderInfo.applicationDomain.getDefinition('LzSpriteApplication')); if(mainClass) { var main:DisplayObject = DisplayObject(new mainClass()); if (main) { removeEventListener(Event.ENTER_FRAME, enterFrame); stage.addChild(main); stage.removeChild(this); } } } } private function loadProgress(event:Event):void { var percload:Number = Math.floor(root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal * 100); var id = stage.loaderInfo.parameters.id; if (id) { ExternalInterface.call('lz.embed.applications.' + id + '._sendPercLoad', percload); } } } // end of preloader\n";
return source;
}
More information about the Laszlo-checkins
mailing list