利用flash组件的List做界面,先从flash中拖出List组件,然后删除。绑定Main类。
package { import flash.display.Sprite; import flash.events.*; import fl.controls.List; import fl.data.DataProvider; import flash.net.*; import flash.text.TextFormat; import adobe.utils.MMExecute; import fl.managers.StyleManager; import fl.events.*; public class Main extends Sprite { private var loader:URLLoader; private var xml:XML; private var dp:DataProvider; private var defaultJsfl:String; public function Main() { loader=new URLLoader(); loader.dataFormat=URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE,onLoadComplete); loader.load(new URLRequest("dt_tool_text/dt_config.xml")); } private function onLoadComplete(event:Event):void { xml=XML(loader.data); var len:int=xml.item.length(); defaultJsfl=xml.defaultJsfl; var vesion:Version=new Version(this,xml.vesion);//设置版本信息 var myxml:*=XML(xml.root); dp = new DataProvider(myxml) creatListControl(dp); } //创建list组件 private function creatListControl(dp:DataProvider):void { var list:List=new List(); addChild(list); var format:TextFormat=new TextFormat("黑体",12,0x000000); StyleManager.setStyle("textFormat",format); list.setStyle("cellRenderer", MyCellRenderer); list.dataProvider=dp; list.addEventListener(ListEvent.ITEM_CLICK, changeHandler); list.width=300; list.height=400; list.rowHeight=30; } private function changeHandler(event:ListEvent):void { var command:String=event.item.fun; var isUse:int = event.item.isuse;//是否使用了其他jsfl var jsflPath:String; if(isUse==0) { doAction(command,"WindowSWF/dt_tool_jsfl/"+defaultJsfl+".jsfl"); } else if(isUse==1) { jsflPath="WindowSWF/dt_tool_jsfl/"+event.item.fileName+".jsfl"; doAction(command,jsflPath); }else if(isUse==2) { jsflPath = "WindowSWF/dt_tool_jsfl/" + event.item.fileName+".jsfl"; var element_arr = event.item.element.split(","); var element_str:String = ""; var elementLen_num:Number = element_arr.length; if (elementLen_num == 1){ element_str = event.item.element; }else{ for (var i:int = 0; i < element_arr.length; i++){ if (i == 0){ element_str += element_arr[i] + "\',"; }else if (i == element_arr.length - 1){ element_str += "\'" + element_arr[i]; }else{ element_str += "\'" + element_arr[i] + "\',"; } } } doActionByElem(command,jsflPath,element_str); } else if(isUse==3) { jsflPath="WindowSWF/dt_tool_jsfl/"+event.item.fileName+".jsfl"; dofileCommand(jsflPath); } } //执行命令调用jsfl带参数 private function doActionByElem(command:String,path:String="",element:String=""):void { MMExecute("fl.runScript( fl.configURI + '" + path + "','" + command + "','" + element + "');"); trace("fl.runScript( fl.configURI + '" + path + "','" + command + "','" + element + "');"); } //执行命令调用jsfl private function doAction(command:String,path:String=""):void { MMExecute("fl.runScript( fl.configURI + '"+path+"','"+command+"');"); } //执行整个jsfl文件 private function dofileCommand(path:String):void { MMExecute("fl.runScript( fl.configURI + '"+path+"')"); } } }
package { import fl.controls.listClasses.CellRenderer; import fl.controls.listClasses.ICellRenderer; import fl.controls.listClasses.ListData; import flash.display.Shape; public class MyCellRenderer extends CellRenderer implements ICellRenderer { private var m:Shape = new Shape(); public function MyCellRenderer() { addChildAt(m,0); } override public function set listData(value:ListData):void { super.listData = value; m.graphics.beginFill(0xeeeeee,value.index%2); m.graphics.drawRect(1,1,width-2,height-2); m.graphics.endFill(); } } }
package { import flash.display.InteractiveObject; import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; public class Version { public function Version(target:InteractiveObject,vesionInfo:String) { var menu:ContextMenu = new ContextMenu(); menu.hideBuiltInItems(); try { var str:String = vesionInfo; var m:ContextMenuItem = new ContextMenuItem(str); menu.customItems.push(m); } catch(error:Error) { throw new Error( error.message ); } target.contextMenu = menu; } } }
接下来就是配置xml表格(dt_config.xml):
<config> <defaultJsfl>otherJsfl</defaultJsfl> <vesion>vesion:dt_1.1</vesion> <root> <item> <label>[1] 发布文件夹下所有文件(as2 player 7) </label> <element >2,7</element> <fun >Init</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> <item> <label>[1] 发布文件夹下所有文件(as3 player 9) </label> <element >3,9</element> <fun >Init</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> <item> <label>[1] 发布文件夹下所有文件(as3 player 10.3) </label> <element >3,10.3</element> <fun >Init</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> <item> <label>[1] 发布文件夹下所有文件(as3 player 11.1) </label> <element >3,11.1</element> <fun >Init</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> <item> <label>[1] 发布文件夹下所有文件(as3 player 11.2) </label> <element >3,11.2</element> <fun >Init</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> <item> <label>[1] 发布文件夹下所有文件(自定义) </label> <element ></element> <fun >definedInit</fun> <isuse>2</isuse> <fileName>publish_dt </fileName> </item> </root> </config>
最后将发布的swf和对应的jsfl和xml放入对应的flash路径即可(即flash安装目录下的WindowSWF文件夹里):
C:\Users\Administrator\AppData\Local\Adobe\Flash CS6\zh_CN\Configuration\WindowSWF/