flex学习
Mar 24
话不多说,看代码吧....

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  <mx:Panel width="399" height="309" title="内置类练习">
  <mx:Button label="字符串类" color="#0B72FF" click="strtest()" />
  <mx:Button label="日期类" color="#0B72FF" click="datetest()" />
  <mx:Button label="数学类" color="#0B72FF" click="mathtest()" />
  <mx:Button label="操作XML类" color="#0B72FF" click="xmltest()" />
  <mx:Button label="操作正则类" color="#0B72FF" click="regtest()" />
  <mx:Button label="操作系统类" color="#0B72FF" click="systest()" />
  <mx:TextArea id="mytext" width="377" text="这里显示结果"  height="92"/>
    <mx:Script>
    <![CDATA[
      import mx.controls.Alert;
      public function strtest():void{
        var info1:String  =  "hello flex!";
        var info2:String  =   new String("hello my flex!");
        var bol:Boolean    =  true;
         //下面来学习下基本的内置类
        var bol2:String    =  bol.toString();//使用toString转换变量类型
        var Company:String  =  String.fromCharCode(65,100,111,98,101);//使用ascii
        var info3:String  =  "info1:"+info1+";info2:"+info2;  //使用"+"连接字符
        trace(info1.length);  //使用length获得长度
        trace(info3);
        trace(info1.charAt(0));//取出第一个字
        trace(info1.charCodeAt(0));//return ascii code
        var str:String    =  "123today is sunny day";
        trace(str.indexOf("day",4));//从第五个位置开始搜索str中的day
        trace(str.lastIndexOf("day",5));//从后往前找
        trace(str.search("day"));
        var pat:RegExp    =  /[a-z]*day/g;  
        trace(str.match(pat));      //返回所有匹配子串
        //其他字符串类
        /*
          str.substr(start,num);
           str.substring(start,end);
           str.slice(start,end);
           str.split("-",3);    //以-分割字符串,返回一个具有前3个元素的数组
           str.replace("-","*");  //将str中的-替换为*
         */
      }
      
      public function datetest():void{
        var now:Date  =  new Date();
        var year:int  =  now.fullYear;        
        var month:int  =  now.month+1;
        var date:int  =  now.date;
        var week:int  =  now.day;//一周中的某一天
        var strweek:String;
        switch(week){
          case 0:strweek="周日";break;
          case 1:strweek="周1";break;
          case 2:strweek="周2";break;
          case 3:strweek="周3";break;
          case 4:strweek="周4";break;
          case 5:strweek="周5";break;
          case 6:strweek="周6";break;
        }  
        Alert.show("今天是"+year+"年"+month+"月"+date+"日 "+strweek);
        trace(now.getTime());  //获取当前时间戳
        now.setTime(now.getTime()+60000);//设置当前时间戳
        trace(now.getTime());
        mytext.text  = "今天是"+year+"年"+month+"月"+date+"日 "+strweek;
      }
      //数学类
      public function mathtest():void{
        var num:Number  =  Math.floor(Math.random()*Math.pow(10,6));
        var res:String  =  num.toString();
        mytext.text= "随机数:"+res;
      }
      //xml操作类
      public function xmltest():void{
        var books:XML=<books>
        <book pub="图灵出版" date="2010">
        <name>flex4</name>
        <price>$40.00</price>
        </book>
        <book>
        <name>php</name>
        <price>$30.00</price>
        <number>$30.00</number>
        </book>
        </books>
        var book:XMLList  =  books.book;
        var name:XMLList  =  books..name;
        var price:XMLList  =  books..price;
        trace(book.toString());
        trace(name.toString());
        trace(price.toString());
        trace(book[0].name);//访问第一本书的名称
        //使用@来访问具体的属性
        mytext.text= "《"+book[0].name+"》出版社:"+book[0].@pub+",出版日期:"+book[0].@date;
        //使用xml类函数访问属性
        trace("《"+book[0].name+"》出版社:"+book[0].attribute('pub')+",出版日期:"+book[0].attribute('date'));
        trace(book[0].attributes());//返回全部属性
        //其他方法:
        /*
          xml.appendChild(child);//向xml元素尾部添加子节点child
          xml.prependChild(child);//向xml元素头部添加子节点child
          xml.insertChildAfter(to,child);//向xml元素to后面添加一个子节点child
          xml.insertChildBefore(to,child);//向xml元素to前面添加一个子节点child
         */
         //直接使用"."添加子元素
        book[0].number  =  40;//添加元素
        book[0].@page  =  500;//添加属性
        trace(book[0]);
        //通过查找元素
        trace(books.book.(hasOwnProperty("@page")));
        //通过内容查找元素 使用此方法时,需要在初始xml中有相关内容节点,如:number
        trace(books.book.(number==40));
      }
      //正则表达式
      public function regtest():void{
      //验证用户名
        var reg_name:RegExp    =  /^\w{3,9}$/;
        var user_name1:String  =  "hellokity";
        var user_name2:String  =  "%%%%";
        var res:String;
        if(reg_name.test(user_name1)){
          res=user_name1+"合法";
        }else{
          res=user_name1+"不合法";
        }
        if(reg_name.test(user_name2)){
          res+=user_name2+"合法";
        }else{
          res+=user_name2+"不合法";
        }
        //验证email  
        var reg_email:RegExp  =  /\w+([-+.]\w)*@\w+([-+.]\w).\w+([-+.]\w)*/;
        var email1:String    =  "yangjs@yeah.net";
        var email2:String    =  "hello kity";
        if(reg_email.test(email1)){
          res+=email1+"合法";
        }else{
          res+=email1+"不合法";
        }
        if(reg_email.test(email2)){
          res+=email2+"合法";
        }else{
          res+=email2+"不合法";
        }      
        mytext.text=res;
      }
      //系统类和打印类
      public function systest():void{
        
      }
      //获取错误报告
      public function getError(event:SecurityErrorEvent):String{
        var errorReport:String="["+event.type+"]"+event.text;
        return errorReport;
      }
    ]]>
  </mx:Script>
  </mx:Panel>
</mx:Application>

Mar 24
1.package(包)的概念
2.包中的类为主类,可以被外部访问,包外的类为从属类,不能被外部访问。
3.通过 import引入包及类
4.internal修饰符(只对包中有效)
5.this当前类,super指父类
6.接口中不能定义变量和常量
Mar 24
注意事项:
1.数据类型检查: typeof (返回对象类型),is/as(是否为相关数据类型)
2.for in (循环键)和 for each in(循环值)
3.创建函数时,必须定义其返回类型

public function sum(x:int,y:int):int
{
return x+y;
}

4.函数传参:不属于基本数据类型的对象始终按引用传递。
5.arguments对象及
6. ...(args)参数
7.函数嵌套及作用域
8.使用length截取数组
Mar 24
在fb中新建一个mxml app.
用源代码source模式查看,可以得到如下代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  <mx:Script>
    <![CDATA[
      //在此写你的as程序吧~
    ]]>
  </mx:Script>
</mx:Application>


mxml是一个标准的xml,前面的m代表MXXXX公司。

下面是一个计算器demo

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
  <mx:Panel x="199" y="50" width="330" height="287" layout="absolute" title="简单的计算器">
    <mx:Button x="67" y="191" label="确定" color="#0B72FF" click="showresult()" />
    <mx:Button x="191" y="191" label="重置" color="#DE4848" click="reset()"/>
    <mx:Label x="32" y="27" text="数字1" />
    <mx:Label x="32" y="57" text="数字2"  />
    <mx:TextInput x="84" y="25" id="text1"/>
    <mx:TextInput x="84" y="55" id="text2"/>
    <mx:RadioButtonGroup id="rg1"/>
    <mx:RadioButton x="46" y="114" label="加" groupName="rg1"/>
    <mx:RadioButton x="103" y="115" label="减" groupName="rg1"/>
    <mx:RadioButton x="210" y="115" label="除" groupName="rg1"/>
    <mx:RadioButton x="157" y="115" label="乘" groupName="rg1"/>
  </mx:Panel>
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;
      public function showresult():void{
        var num1:Number=Number(text1.text);  //获取用户操作数字
        var num2:Number=Number(text2.text);
        var result:Number;  //声明一个变量 保存结果
        var op:String;  //干啥用?  用做运算符
        var action:String=String(rg1.selectedValue);
        
        //调试
        trace(action);
        
        //设置以下一行为断点,程序挂起。可以点击调试中的继续执行按钮继续执行程序
        if(text1.text !="" && text2.text!=""){
          if(text2.text=="0"  && action=="除"){
            Alert.show("除法被除数不能为0");
          }else{
            switch(action)
            {
              case "加":
                op="+";
                result=num1+num2;
              break;
              case "减":
                op="-";
                result=num1-num2;  
              break;
              case "乘":
                op="*";
                result=num1*num2;
              break;
              case "除":
                op="/";
                result=num1/num2;
              break;
              default:
                Alert.show("程序出错了");
              break;
            }
            Alert.show(num1+op+num2+"="+result);
          }  
        }else{
          Alert.show("两个操作数不能为空");
        }
      }
      public function reset():void{
        text1.text="";
        text2.text="";
      }
    ]]>
  </mx:Script>
</mx:Application>


注意事项:(基本已经在代码中注释)
1.学会使用调试函数 trace()


Mar 23
前言


第一幕:购书
刚接触flex,不知道从何入手。以前(2010年的样子)买了本《flex程序设计》,一直没看。
到现在再看,感觉有点小小out了。
里面讲的是flex2与as3。。如今都flex4了~
前几天网上又买了几本书,包括一本《flex+php ria》,嗯,准备按这本书学了~

第二幕:安装及初体验flex4
初步体验是个痛苦的经历,下了一个flash builder 4,安装之。
安装基本没问题,傻瓜式步骤。
按《flex程序设计》里的demo进行编程,测试时候提示设计模式下XXXX.swc与sdk不兼容,不在意。可是hello flex 就是输不出来。郁闷之~
百度,gg。未问出结果。不开心……郁闷至晚上1点多,精疲力尽,睡觉。还好第二天没迟到。

第三幕:改道flex builder,体验flex3
翌日,不死心啊不死心,晚上回来后继续搞,未得解。放弃~
刚好新书到了,一看书里用的是flexbuilder 而且是flex3.所以卸载了flash builder,装上flex builder(沿用至今)。
安装一样美问题,写demo。按书上写的demo,编写一个简单计算器,运行……

结果很完美,无任何异样。
开心啊……

好了,让我们开始flex学习之路吧~

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]