利用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/