JSFL批量導出Flash圖片(Flash cs4運行沒問題)

        最近處理一個swf優化的需求,由於要加載的swf越來越大,要對swf進行瘦身,面對上百張的圖片,哥用的是flash CS4,沒有直接導出的,雖然有另一種非常蛋疼的導出方式,但作爲一個程序猿,要學會懶惰,真正學會把編程作爲一門工具。

        不多說直接進入主題,先簡單介紹一下JSFL這個東西,其實Flash有其對fla文檔進行操作的語言,沒錯這個語言就是JSFL,相信很多做flash遊戲和廣告的都會用過九宮處理圖片,但手工九宮也是個蛋疼的過程,JSFL首先應用在九宮上。flash把整個fla文檔看做一個樹結構形式,類似DOM模型。最強大的是它還有文件操作的功能,這個文件操作功能是可以直接操作硬盤的文件哇。哥在多番搜索後,在天地會找到了一份JSFL的API文檔,API文檔在公司電腦上,有需要的人可以留言,我分享一下。

       講解一下代碼。第一行就是選擇儲存的文件夾。第二行的lib是flash的庫哇。可以看到循環中有個比較長的判斷,flash庫裏面的文件如果是圖像就是bitmap類型,還有很多其他類型。linkageClassName就是導出鏈接名,我是判斷連接名是否存在並且鏈接名含有day的字符串就對其導出。我保留了pngName這個取出,因爲本來是打算直接以該文件名命名的,但由於程序裏面標識是用鏈接名的,所以我後來換了鏈接名來重命名。exportToFile就是導出的方法,比較簡單,也不多說了,下面就是代碼。


var fileURL = fl.browseForFolderURL();
var lib = fl.getDocumentDOM().library; 
var libLength = lib.items.length; 
var items=lib.items;
for(var i=0;i<libLength;i++)
{ 
	var item = lib.items[i]
	if(item.itemType=="bitmap" && item.linkageClassName && item.linkageClassName.indexOf("day") =  -1 )
	{ 
		itemName=item.name; 
		var pngName=itemName.substring(itemName.lastIndexOf("/")+1); 
		if(pngName.indexOf('.') == -1) 
		{ 
			pngName += ".png"; 
		} 
		fl.trace(pngName); 
		item.exportToFile(fileURL+"/"+item.linkageClassName + ".png"); 
	} 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章