加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

每天学一点flash(82) jsfl 的swf窗口面板

发布时间:2020-12-15 06:49:49 所属栏目:百科 来源:网络整理
导读:???? 因为工作需要,那天无意之中看到一个swfpannel 的对象,于是觉得好奇,我发现了这个对象可以扩展开始,而且非常有用。有时候觉得jsfl 的命令 放在flash 命令菜单那里调用不怎么好用。而另外一种方式,发现了我们可以自己制作一个swf 来自定义自己的窗口

???? 因为工作需要,那天无意之中看到一个swfpannel 的对象,于是觉得好奇,我发现了这个对象可以扩展开始,而且非常有用。有时候觉得jsfl 的命令 放在flash 命令菜单那里调用不怎么好用。而另外一种方式,发现了我们可以自己制作一个swf 来自定义自己的窗口面板。有了这个面板之后,我们通过as 可以调用到jsfl 的命令,可视化操作可以让人看起来比较容易接受。

(jsfl 帮助文档 里面记录jsfl 命令)

一 基本?思路

?这个flash是主要是list 组件组成,通过外部加载一个xml 文件获取相应的数据和操作,而里面命令,和名称 都对应好相应的操作。一开始的时候,我们只是需要加载到这个xml就行,而相关的命令都会记录在xml里面配置。

例如:

<label>[1] 导入一张图片 </label>//?标签
?<fun >importOneImage</fun>?//jsfl 命令函数名
? <isuse>0</isuse>?//是否使用默认jsfl文件 0 ,代表是 。1 代表不是
?<fileName> </fileName>? // 额外的jsfl文件,如果isuse 为1的时候,可以添加这里。

?

二 As调用jsfl 的函数

MMExecute(string字符串); 主要填写jsfl 命令 则可以用as 调用jsfl 命令

该命令在 import adobe.utils.MMExecute; 这里

?

三 配置

将制作好的flash swf 文件和xml ,jsfl 需要放置是windowSWF的文件夹里面去。这些jsfl帮助文档已经有很详细的说明

针对不同版本有不同放置方法,包括系统也是

文件夹位于引导驱动器Documents and Settings 用户Local
SettingsApplication DataAdobeFlash CS4 语言ConfigurationWindowSWF 中。(flash cs4)

?

flash cs5 &flash cs5.5 则不一样

但是找到 WindowSWF这个文件夹 可以放置在这里。

?

如果不知道在那个位置:

则可以创建一个jsfl 命令

// store directory to a variable
var configDir = fl.configDirectory;
// display directory in the Output panel
fl.trace(fl.configDirectory);


?

输出这个命令则可以找到对应路径了。

?

?

四 最后界面

把制作好的swf,jsfl 和其他文件保存在WindowSWF文件夹后,重启第一次flash,那么就可以在flash菜单 窗口--->其他面板--->找到对应的菜单按钮。

这样我们的flash jsfl 命令就可以根据这个菜单来进行调用。看起来比较方便。

?

五?个性化设置

?如果需要设置快捷键,则在flash 里面编辑 快捷键那里,复制一个副本,然后对这个面板配置一个快捷键进行弹出。

?每次找的这个窗口的时候,只是需要我们简单的操作即可。

?

?六 代码

?

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;

	public class Main extends Sprite
	{
		private var loader:URLLoader;
		private var xml:XML;
		private var dp:DataProvider;
		private var defaultJsfl:String;//默认的jsfl文件

		public function Main()
		{
			loader=new URLLoader();
			loader.dataFormat=URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE,onLoadComplete);
		    loader.load(new URLRequest("config.xml"));
		}
		
		private function onLoadComplete(event:Event):void
		{
			loader.removeEventListener(Event.COMPLETE,onLoadComplete);
			xml=XML(loader.data);
			defaultJsfl=xml.defaultJsfl;
			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.dataProvider=dp;
			list.addEventListener(Event.CHANGE,changeHandler);
			list.width=300;
			list.height=400;
			list.rowHeight=30;			
		}
		
		private function changeHandler(event:Event):void
		{
			var command:String=event.currentTarget.selectedItem.fun;
			var isUse:int=event.currentTarget.selectedItem.isuse;//是否使用了其他jsfl
			
			if(isUse==0)
			{
			    doAction(command,"WindowSWF/"+defaultJsfl+".jsfl");
			}
			else
			{    var path:String="WindowSWF/"+event.currentTarget.selectedItem.fileName+".jsfl";    
				doAction(command,path);
			}
		}
		
		//执行命令调用jsfl
		private function doAction(command:String,path:String=""):void
		{   
		     
			MMExecute("fl.runScript( fl.configURI + '"+path+"','"+command+"');");
		}
		
	}
	
	
}


?

<config>
   <defaultJsfl>test</defaultJsfl>
   <root> 
  <item>
     <label>[1] 导入一张图片 </label>
     <fun >importOneImage</fun>
	 <isuse>0</isuse> 
	 <fileName> </fileName> 
   </item>
    
   <item>
     <label>[2] 弹出Alert信息 </label>
     <fun >openAlert</fun >
	 <isuse>0</isuse> 
	 <fileName></fileName> 
   </item>
 </root>
</config>


?jsfl 文件

//导入一张图片 
function importOneImage()
{
  var imagePath= fl.browseForFileURL("select","导入一张图片");
  if(imagePath)
  fl.getDocumentDOM().importFile(imagePath,true); 
}

 
function openAlert()
{
	alert("各位中秋节快乐啊!");
}

var configDir = fl.configDirectory;  
// display directory in the Output panel  
fl.trace(fl.configDirectory);  

?

设置之后,可以尝试一下功能,就是这样子了。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读