跳到主要內容

[Flash] .swf ClassLoader

Flash 中很常用到loader 來讀取外部的swf檔案載入到畫面中,
但是載入進來的swf如果含還有一些函數,卻是沒辦法呼叫。
這常常會造成一些設計好的swf元件不能重複利用的問題

不過在Adobe的官方網站上有提供一個ClassLoader source Code
可以用來載入swf成class去呼叫swf的函數與方法

之後在網路查了一下有比較簡單的寫法大概如下

import flash.display.Sprite;
import flash.display.Loader;
import flash.system.ApplicationDomain;
import flash.net.URLRequest;
import flash.events.*;
import flash.util.trace;

public class Main extends Sprite
{
private var child1:Loader;
public function Main()
{
var url1:URLRequest = new URLRequest('SWFName.swf');
url1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
child1 = new Loader();
child1.addEventListener(EventType.COMPLETE, onChild1Complete);

//設定載入完成的
handler
child1.load(url1);
//開始載入swf檔案
}

private function onChild1Complete(e:Event):Void {
var c:Class = child1.loadeeInfo.applicationDomain.getClass('ClassName');

//將swf中的class抓出來成為一個class

var co:Object = new c();
/將swf中的class實作
co.method();
}
}


基本上就是將檔案讀取進來
然後在讀取完成後將swf中的class抓出來再讓一個物件實作這個類別

不過這樣的寫法並沒有處理對於讀取錯誤作處理
adobe的官方寫法是有進行例外處理
也將怎個讀取功能寫成了一個class 是比較完整的範例

另外邦邦也將adobe的範例修改一次
把會重複讀取同樣一個swf的問題解決掉了

參考資料
w3blog
Adobe 官方
邦邦

留言

這個網誌中的熱門文章

[WEB]連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉

某支透過 WebClient 物件去呼叫第三方API的程式,突然有天無法使用 經過測試出現下列的錯誤 基礎連接已關閉: 傳送時發生未預期的錯誤。 InnerException : 驗證失敗,因為遠端群體已經關閉傳輸資料流。 原來是第三方的服務已經不支援 TLS 1.0 我方的程式是用.net Framework 4.0開發了 得強制讓webclient改用 TLS 1.1 或 TLS 1.2 感謝黑大提供解決方法 在程式中加入 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12  的設定就解決了這個問題 WebClient wc = new WebClient(); ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 參考資料:暗黑執行緒

[SQL] SQL依照你的排序條件 找出目前資料的前一筆與下一筆。 Find Pre and Next DataRows of current Datarow by your order condition

有時候需要用SQL找出前一筆跟後一筆資料 用SQL的TOP是沒有辦法做到 這個時候就可以這個語法 select * from ( SELECT TOP 1 * FROM [Article] where Poid {CurrentPoid} order by CreateDate ASC) t2 找出目前PK id前一個與後一個的資料(依照想要排序順序) 那如果指示想要一個資料行呈現的話 可以改用下面的SQL語法 讓這兩筆資料join在同一筆 select Pre.*,Nex.* from (SELECT TOP 1 * ,1 tID FROM [dbo].[Article] where Poid {CurrentPoid} order by CreateDate ASC) Nex on Pre.tID=Nex.tID

Win10電腦 強制開啟IE瀏覽器 by VB script

 用Notapad寫下以下的內容 With CreateObject("InternetExplorer.Application") .visible = True .Navigate [Url]           .Left = 0           .Top = 0           .Height = 1024           .Width = 1280 End With 然後存檔成 .vbs 檔案 之後點選檔案就會自動啟動IE 目前測試過在WIN10 版本能正常執行