jsfl将人物序列帧导成swf文件

1、问价目录结构:1、2、3、4、5这5个文件夹中是人物的序列帧。SWF中存放生成的SWF和fla文件。

jsfl将人物序列帧导成swf文件

2、每个序列帧文件夹中包含序列帧和一个XML的文件。

<Action Name="6_剑刃风暴_1">

  <OffSet FileName="0000.png" OffSetX="-117" OffSetY="-170"/>

  <OffSet FileName="0001.png" OffSetX="-139" OffSetY="-126"/>

  <OffSet FileName="0002.png" OffSetX="-72" OffSetY="-139"/>

  <OffSet FileName="0003.png" OffSetX="-56" OffSetY="-160"/>

</Action>

 

3、程序代码:

//打开图片目录

var sourcePath = fl.browseForFolderURL("png图片目录"); 



var pos = sourcePath.lastIndexOf("/");

var pngFileName = sourcePath.substr(pos + 1);



var destPath = fl.browseForFolderURL("swf和fla文件目录"); 





fl.trace("png图片目录:" + sourcePath);

fl.trace("png直接目录: " + pngFileName);

fl.trace("swf文件目录: " + destPath);





//读取文件列表句柄

var folderList = FLfile.listFolder(sourcePath, "directories");



var doc1 = fl.createDocument();

doc1.frameRate = 30;	

doc1.width = 1000;

doc1.height = 1000;

doc1.backgroundColor = '#ffffff';











//处理每个文件

for(var j = 0;j < folderList.length; j ++) 

{

     var childFolder = folderList[j];

     fl.trace("文件夹: " + sourcePath + "/" + childFolder);

     

     //取的文件列表句柄

     var list = FLfile.listFolder(sourcePath + "/" + childFolder, "files");

     var doc = null;

     var xmlName = null;

     

     

	 

	

     if(list)

     { 

          //循环这个句柄 获得所有的子文件

          fl.trace("All png name:");

          for(var i = 0;i < list.length; i ++)

          {

               var fileName = list[i];

			   fl.trace(fileName);

               var suffix = fileName.toLowerCase().substr(fileName.length - 3);

               if("png" == suffix)

               {

                    if(doc == null)

                    {

                         //创建一个fla,默认timeline 

                         doc = fl.createDocument();

                         doc.frameRate = 30;

                         doc.width = 100;

                         doc.height = 100;

                         doc.backgroundColor = '#ffffff';

						

                         

                    }

                    //文件导入到flash/舞台/库

					fl.trace(sourcePath + "/" + childFolder + "/" + fileName);

                    doc.importFile(sourcePath + "/" + childFolder + "/" + fileName, true);

               }  

               if("xml" == suffix)

               {

                    xmlName = fileName;

               }

          } 

     }

     

     if(null == xmlName)

     {

          alert("没有指定的xml资源!");

     }

     else if(null != doc)

     {

		  var componentName = "FL_" + childFolder.substr(0, 1) + "_" + childFolder.substr(childFolder.length - 1);

		  

          //library只读属性,库面板

          var lib = doc.library;

          //在库里面加入一个movie clip 名字叫npc

          lib.addNewItem("movie clip", componentName);

          //编辑这个mc

          lib.editItem(componentName);

          

          

          

          

          //得到当前的timeline对象 当前时间轴可以是当前场景、正在编辑的当前元件或当前屏幕

          var tl = doc.getTimeline();

          //将图层设置为选定;同时将指定图层作为当前图层

          tl.setSelectedLayers(0);

          //只读;图层对象数组 命名

          tl.layers[0].name="bitmap";

          //计算多少个图片 在给定的帧编号处插入指定数目的帧。

          var len = lib.items.length-1;

          tl.insertFrames(len-1);

          //设置第一针 然后开始写入图片

          var frameId = 0;

          //lib.items 项目库中的全部item

          var xmlURL = sourcePath + "/" + childFolder + "/" + xmlName;

          var xml = XML(FLfile.read(xmlURL));

          fl.trace(xml);

		  var bitmapItemArr = new Array();

          for(var i = 0;i < lib.items.length; i ++)

          {

               var item = lib.items[i];

               if("bitmap" == item.itemType)

               {

                    

                    //一个布尔值,它指定是否允许对位图进行平滑处理

                    item.allowSmoothing = true;

                    //一个字符串,它确定应用于位图的压缩类型

                    item.compressionType = "photo";

                    //一个整数,用于指定位图的品质

                    item.quality = 80;

                    if(0 < frameId)

                    {

                         //convertToBlankKeyframes方法;将当前图层的帧转换为空白关键帧。

                         tl.convertToBlankKeyframes(frameId);

                    }

                    //addItemToDocument方法;将当前项目或指定的项目添加到舞台的指定位置

                    fl.trace(item.name);

                    var biasX = new Number(xml.OffSet[frameId].@OffSetX);

                    var biasY = new Number(xml.OffSet[frameId].@OffSetY);

                    fl.trace(biasX + " " + biasY);

                    lib.addItemToDocument({x:item.hPixels / 2 + biasX, y:item.vPixels / 2 + biasY}, item.name);

                    //向前推针

                    frameId ++;

					bitmapItemArr.push(item);

					

               }

          }

		  

		  //设置链接

          lib.selectItem(componentName);

          

          lib.setItemProperty("linkageImportForRS", false);

          lib.setItemProperty("linkageExportForRS", false);

          lib.setItemProperty("linkageExportForAS", true);

          

          lib.setItemProperty("linkageClassName", componentName);

          

		  

          doc1.library.newFolder(childFolder);

		  doc1.library.newFolder("image");		  

		  var lib1 = doc1.library;

		  

          var li = lib.items[lib.findItemIndex(componentName)];



          doc1.addItem({x:300, y:300}, li);

		  

		  for(var i = 0; i < bitmapItemArr.length; i ++)

		  {

			  lib1.moveToFolder("image", bitmapItemArr[i].name);

		  }

		  

          lib1.moveToFolder(childFolder, componentName);

		  lib1.moveToFolder(childFolder, "image");

          

          doc.close(false);

          

          

          

     }

     else

     {

          alert("没有指定的png图片!");

     }

}





//导出swf

doc1.exportSWF(destPath + "/"  + pngFileName + ".swf", true);

// 是否保存fla 文件

fl.saveDocument(doc1, destPath +  "/"  + pngFileName + ".fla");          

//关闭这个文件

doc1.close(false); 

 

 

 

 

你可能感兴趣的:(JSF)