“FlashPlatform SourceIntegration”的版本间的差异
(→RSL運行時共享庫) |
|||
第134行: | 第134行: | ||
URLLoaderDataFormat.VARIABLES >> Object<br/> | URLLoaderDataFormat.VARIABLES >> Object<br/> | ||
==RSL運行時共享庫== | ==RSL運行時共享庫== | ||
− | Runtime shared libraries是種緩存方案。當項目代碼量比較大的時候可以使用。 | + | Runtime shared libraries是種緩存方案。當項目代碼量比較大的時候可以使用。<br/> |
− | 它就好像你看過的網頁打開會比較快那樣。 | + | 它就好像你看過的網頁打開會比較快那樣。<br/> |
− | 一個典型的例子是Flex framework的項目。因為Flex組件會很輕易的上400k。 | + | 一個典型的例子是Flex framework的項目。因為Flex組件會很輕易的上400k。<br/> |
− | 因此RSL機制將這組件部份的不變代碼分離出去。 | + | 因此RSL機制將這組件部份的不變代碼分離出去。<br/> |
− | 然後編譯時將這個swc引入進來。這樣如果用戶本地有這個swc文件。那麼這部份的文件下載時間就節省下來了。 | + | 然後編譯時將這個swc引入進來。這樣如果用戶本地有這個swc文件。那麼這部份的文件下載時間就節省下來了。<br/> |
<syntaxhighlight lang="actionscript"> | <syntaxhighlight lang="actionscript"> | ||
-runtime-shared-libraries xxx.swc | -runtime-shared-libraries xxx.swc | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 注意Library swc經常發生的。不建議使用。因為用戶必須要更新此文件。起不到緩存的初衷。 | + | '''注意Library swc經常發生的。不建議使用。因為用戶必須要更新此文件。起不到緩存的初衷。''' |
==CSL編譯時共享庫== | ==CSL編譯時共享庫== |
2011-04-14T00:26:43的版本
資源集成。
嵌入素材
以嵌入圖片為例。最簡單快速的方式。
此方法會增加swf文件的大小。慎。
(此示例您需要在項目根目錄下放置bunny.jpg文件。如果找不到指定文件會返回一個編譯錯誤。)
package { import flash.display.Bitmap; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; [SWF(width="128", height="128")] /** * The <code>Text</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; const B:Bitmap = new $clazz() as Bitmap; addChild(B); } [Embed(source="bunny.jpg")] private var $clazz:Class; } // <- end class -> }
運行後效果如下。

外部載入素材
此示例效果和上面一樣,只是改為讀入而非綁定。
package { import flash.display.Loader; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.net.URLRequest; [SWF(width="128", height="128")] /** * The <code>Text</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; $loader = new Loader(); $loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler); $loader.load(new URLRequest("bunny.jpg")); } private var $loader:Loader; //========================================================================== // Event listeners //========================================================================== private function loader_completeHandler(event:Event):void { addChild($loader); } } // <- end class -> }
注意Flash對下載有並發連接數限制。 所以請不要使用
for(var i:int = 0; i < n; i++) { var loader:Loader = new Loader(); loader.load(new URLRequest("img" + i + ".jpg")); }
載入其他類型文件
使用URLLoader或URLStream
(此示例您需要在項目根目錄下放置book.txt文件。如果找不到指定文件會返回一個編譯錯誤。)
package { import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.utils.ByteArray; [SWF(width="128", height="128")] /** * The <code>Text</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; $loader = new URLLoader(); $loader.dataFormat = URLLoaderDataFormat.BINARY; $loader.addEventListener(Event.COMPLETE, loader_completeHandler); $loader.load(new URLRequest("book.txt")); } private var $loader:URLLoader; //========================================================================== // Event listeners //========================================================================== private function loader_completeHandler(event:Event):void { const DATA:ByteArray = $loader.data; } } // <- end class -> }
注意$loader.data在URLLoaderDataFormat常量不同時需要以不同的類型訪問
URLLoaderDataFormat.BINARY >> ByteArray
URLLoaderDataFormat.TEXT >> String
URLLoaderDataFormat.VARIABLES >> Object
RSL運行時共享庫
Runtime shared libraries是種緩存方案。當項目代碼量比較大的時候可以使用。
它就好像你看過的網頁打開會比較快那樣。
一個典型的例子是Flex framework的項目。因為Flex組件會很輕易的上400k。
因此RSL機制將這組件部份的不變代碼分離出去。
然後編譯時將這個swc引入進來。這樣如果用戶本地有這個swc文件。那麼這部份的文件下載時間就節省下來了。
-runtime-shared-libraries xxx.swc
注意Library swc經常發生的。不建議使用。因為用戶必須要更新此文件。起不到緩存的初衷。
CSL編譯時共享庫
Compile-time shared libraries方案以一種封閉源代碼的方式在編譯時引用外部定義的組件或者類。 通常遇到使用有這種庫的項目有以下特性: 1.開發人員的壓箱底私人收藏。 2.類似Alternativa3D這樣的閉源商業組件庫。以此種方式發佈並將swc混效後發佈出去。開發人員可以正常使用但無法得知組件實現細節。 3.團隊開發中封裝好的不需要頻繁改動的組件。 4.程序員潔癖綜合症候群。