每天学一点flash(82) jsfl 的swf窗口面板
???? 因为工作需要,那天无意之中看到一个swfpannel 的对象,于是觉得好奇,我发现了这个对象可以扩展开始,而且非常有用。有时候觉得jsfl 的命令 放在flash 命令菜单那里调用不怎么好用。而另外一种方式,发现了我们可以自己制作一个swf 来自定义自己的窗口面板。有了这个面板之后,我们通过as 可以调用到jsfl 的命令,可视化操作可以让人看起来比较容易接受。 (jsfl 帮助文档 里面记录jsfl 命令) 一 基本?思路 ?这个flash是主要是list 组件组成,通过外部加载一个xml 文件获取相应的数据和操作,而里面命令,和名称 都对应好相应的操作。一开始的时候,我们只是需要加载到这个xml就行,而相关的命令都会记录在xml里面配置。 例如: <label>[1] 导入一张图片 </label>//?标签 ? 二 As调用jsfl 的函数 MMExecute(string字符串); 主要填写jsfl 命令 则可以用as 调用jsfl 命令 该命令在 import adobe.utils.MMExecute; 这里 ? 三 配置 将制作好的flash swf 文件和xml ,jsfl 需要放置是windowSWF的文件夹里面去。这些jsfl帮助文档已经有很详细的说明 针对不同版本有不同放置方法,包括系统也是 文件夹位于引导驱动器Documents and Settings 用户Local ? 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>
//导入一张图片 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); ? 设置之后,可以尝试一下功能,就是这样子了。 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |