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

 

posted on 2018-11-02 15:45  我是cdt  阅读(427)  评论(0编辑  收藏  举报