原创:实现view(mxml)和代码分离的好方法

最近用flex3开发软件发现当视图文件里的按钮,函数很多时由于视图标签和代 码<mx:script>...</mx:script>是在一个文件中的,因此会导致在编辑时找代码位置很麻烦,然后我就开始 寻找让view和代码分离的方法,本来知道一些flex开发框架cairngorm,puremvc等等,cairngorm太烦琐,puremvc好很 多,但是我的目的仅仅只是把函数代码从mxml中分离而已,并不想用任何框架(以免以后会带来有什么限制的副作用),因此我想啊,试啊,终于找到了二个方 法,解释如下(不用任何框架,以后不会因框架带来任何限制或副作用):
mxmls视图文件docu_borw.mxml 解释就在文件里面注释了)
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="300"
creati showCloseButton="true" close=" opUpManager.removePopUp(this);">
<mx:Script>
    <![CDATA[
        import mx.managers.PopUpManager;
        public function init():void{}
        //实现vc代码分离的方法(因为flex编辑器本身不支持)
        /*方法一:与常规编写mxml和写as函数一样(包括例如在button中用click="btn_test_click()"关联)
        ,但是在实现的函数中无具体代码,然后在继承的类(真正的代码文件)中覆盖view(mxml)中的函数,
        并写实现的代码,以后在使用这个view(mxml)时,是通过 new 继承的类()来使用的
          方法二:方法一有个麻烦的地方就是要在view(mxml)文件中写一大堆空函数,为此可以在被继承的
          view(mxml)的开始定义一个名为init空函数(并且在view开头creati),
          然后在继承的类(真正的代码文件)中覆盖init空函数并写入具体代码,包括用类似
          this.btn_test.addEventListener(MouseEvent.CLICK,btn_test_click);
          代码来加入操作和函数调用关联,然后编写具体的调用函数即可,此种方法主view(mxml)文件中
          除了一个init()空函数外完全无代as代码(全部写在了继承的类中)*/       
    ]]>
</mx:Script>
<mx abel id="lbl_test" x="88" y="56" text="测试codeBehind模式,成功!" width="151"/>
<!--<mx:Button x="88" y="99" id="btn_test" label="test code behind" click="btn_test_click()"  />-->
<mx:Button x="88" y="99" id="btn_test" label="test code behind" />
</mx:TitleWindow>
上面是视图mxml文件,然后我定义一个类从该视图(不过是一个用mxml定义的类而已)继承,代码如下(Docu_browas.as):
package view{
    import flash.events.MouseEvent;
   
    public class Docu_browas extends docu_brow
    {       
          public function Docu_browas():void{
          //必须在下面覆盖方法(从view中继承且在主view中定义了creati)定义关联
          }       
          override public function init():void{
          this.btn_test.addEventListener(MouseEvent.CLICK,btn_test_click);
          }   
         
          public function btn_test_click(event:MouseEvent):void{
              this.lbl_test.text="haha,测试代码分离成功了!";   
          }
       
          /*public override function btn_test_click():void
            {
            this.lbl_test.text="haha,测试代码分离成功了!";               
            }*/           
    }
}
这里注意这2个文件我把它都放在了src/view子文件夹下了,所以继承类的package是view.
使 用时只要在应用程序mxml中调用,例如这里因为实际是一个titleWindow,所以在主应用程序mxml中使用private function btn_test_click(event:Event):void{                  PopUpManager.centerPopUp(Docu_browas(PopUpManager.createPopUp(this,Docu_browas)));
}即可,呵呵,方便简单吧,就和visual.net1.1中的codebehind代码分离一样啊!(vs.net2.0为codebeside了)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值