??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品小仙女,国产精品成人免费视频,国产精品久久久久久久久久小说http://www.aygfsteel.com/Crying/category/39017.html????????, ??????????握! zh-cnMon, 13 Apr 2009 10:14:35 GMTMon, 13 Apr 2009 10:14:35 GMT60Flexq接数据库三U方?http://blog.csdn.net/wirror800/archive/2009/04/07/4053224.aspx)http://www.aygfsteel.com/Crying/articles/265330.htmlCryingCryingMon, 13 Apr 2009 09:14:00 GMThttp://www.aygfsteel.com/Crying/articles/265330.htmlhttp://www.aygfsteel.com/Crying/comments/265330.htmlhttp://www.aygfsteel.com/Crying/articles/265330.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/265330.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/265330.html首先Q做一点说明。Flex是不能直接连接数据库的,q一点大安要知道,它只能间接地q接数据库。Flex中提供了三种方式QHttpServiceQWebService 和RemoteObject。其中HttpService可以直接获取XML中的数据Q还可以通过JSP,ASP以及PHPd数据库中的数据,q个比较单,而且|上也有很多例子Q我׃多说了。WebService我不懂,误己查资料。我一直用的是JAVA对象q接数据库,感觉q个挺方便,而且J2EE的技术已l很成熟。今天的教程是?Flex + JAVA + SQLServer获取数据库公告信息ؓ例简单说一下RemoteObject的用法?br /> 前提
1.保你安装了Flex Data Service。这个对于单个CUP无限APP是免费的Q可以去Adobe下蝲。如果只是读取XML文g是不需要这个的Q连接数据库需要它了?br /> 2.安装了Flex Builder或者有Flex SDK。我q里使用的是Flex BuilderQIDE是方便?^_^Q?br /> 3.安装了SQLServer数据库?br /> 4.安装了JRUN或者tomcat或其它的J2EE容器Q因为发布的时候我们的E序要运行在J2EEq_上?br /> 5.安装了JDK?br /> W一步:创徏数据?br /> q里我们有一个公告表Q表名ؓBulletin。结构如下:
字段名称           字段cd            说明
ID              自动~号          自动~号
title           Nvarchar(100)    题目
date            datatime         日期
author         Nvarchar(20)      作?br /> content        ntext                内容
在数据库中创个表。保存之后进入下一步?br /> W二步:在JAVA中编写获取公告的代码
首先Q我们要创徏一个公告类来专门保存获取的公告信息Q代码如下?br /> NoticeInfo.java
package net.zhuoqun.connectDB;
import java.util.Date;
public class NoticeInfo {
    private String title;        // 标题
    private String author;  // 作?br />     private String content;// 内容
    private Date dates;       // 旉    
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    ……………… // 其它get ?set Ҏ?br /> }
创徏好这个之后我们要创徏一个数据查询类QDataServiceImpl.java来查询数据库Qƈ查询结果传l将要创建的FlexE序。由于我们不清楚有多条记录Q所以就借助一下JAVA中的ArrayListq个c,它位于java.util 包中。先创徏一个ArrayListQ?br /> ArrayList noticeList = new ArrayList();
查询数据库之后,每读取一条记录就d?noticeList?br /> while(rs.next()){
    NoticeInfo temp = new NoticeInfo();
    temp.setAuthor(rs.getString("author"));
    temp.setContent(rs.getString("content"));
    temp.setDates(rs.getDate("date"));
    temp.setTitle(rs.getString("title"));
    noticeList.add(temp);
}
查询完毕之后你就可以把这个noticeList传回去,你也可以传回M?NoticeInfo 数组Q?br /> NoticeInfo[] notices = new NoticeInfo[noticeList.size()];
for(int i=0;i<noticeList.size();i++){
    notices = (NoticeInfo)noticeList.get(i);
}
return notices;
我这里用的是后一U方法。如果你直接把noticeList传回ȝ话,C一点,JAVA的ArrayListcd的对象到了Flex中会变成ArrayCollectioncd的?br /> 现在JAVA部分的代码就写好了?br /> DataServiceImpl.java 的全部代码如下:
package net.zhuoqun.connectDB;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
public class DataServiceImpl {    
    private Connection conn = null;
    private Statement stmt = null;
    // 以下是数据库以及驱动信息
    public final static String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    public final static String CONN_STR_PRE = "jdbc:microsoft:sqlserver://";
    public final static String HOST_NAME = "localhost:1433;";
    public final static String DATABASE_NAME = "DatabaseName=mydata";
    public final static String USERNAME = "aaa";
    public final static String PASSWORD = "aaa";
        public DataServiceImpl(){
      
    }
    // 查询数据?br />     private ResultSet executeQuery(String sqlText){
        try{
            Class.forName(DRIVER);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        try{
            conn = DriverManager.getConnection(CONN_STR_PRE + HOST_NAME + DATABASE_NAME, USERNAME, PASSWORD);
            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sqlText);
            return rs;
        }catch(SQLException e){
            e.printStackTrace();
        }
        return null;
    }
    // 查询公告. q个是本E序的关键代?br />     public NoticeInfo[] getNotices(){
        ArrayList noticeList = new ArrayList();      
        String sqlText = "select author,content,date,title from Bulletin";      
        ResultSet rs = executeQuery(sqlText);        
        try{
            while(rs.next()){
                NoticeInfo temp = new NoticeInfo();
                temp.setAuthor(rs.getString("author"));
                temp.setContent(rs.getString("content"));
                temp.setDates(rs.getDate("date"));
                temp.setTitle(rs.getString("title"));
                noticeList.add(temp);
            }          
            NoticeInfo[] notices = new NoticeInfo[noticeList.size()];
            for(int i=0;i<noticeList.size();i++){
                notices = (NoticeInfo)noticeList.get(i);
            }
            return notices;
        }catch(SQLException e){
            e.printStackTrace();
            return null;
        }
    }
}
W三步: 配置Flex Data Service
1Q把刚才写的JAVA文g~译。打开FDS的安装文件夹Q将~译的文件拷贝到\jrun4\servers\default\flex\WEB-INF\classes 文g夹中Q进行下面的配置?br /> 2.打开FDS的安装文件夹。进入jrun4\servers\default\flex\WEB-INF\flex 目录。里面是关于FlexData Service的配|文Ӟ我们q里只看RemoteObject如何配置Q其它配|信息请自己看帮助。现在我们打开里面的remoting-config.xml文g。向里面d如下信息Q作?lt;service>的子标签Q?br /> E序代码
<destination id="dataService">
     <properties>
          <source>net.zhuoqun.connectDB.DataServiceImpl</source>
     </properties>
</destination>
当你讑֮?destination的时候,你就引用了了可以用来q接相应cȝ信息通道Qmessaging channelQ。它的id必须在文件中是独一无二的。source属性是指你~译的JAVAcdclasses文g夹中的\径。由于我的DataServiceImplcdclasses\net\zhuoqun\connectDB中,所以source的gؓnet.zhuoqun.connectDB.DataServiceImpl。记住,不要?class后缀?lt;properties>标签q可以有一?lt;scope>子标{,其作用我在这里就不说了,大家自己看相x档(关于FDS的配|其实有很多东西Q这些在帮助文档里都有,我这里不多说了,也说不过来,自己看吧Q?br /> 现在我们已经配置好了后台?FDSQ做完了整个E序的大部分工作Q接下来是前台FlexE序调用的事情了?br /> W四步:创徏FlexE序
打开Flex BuilderQ新Z个工E?ConnectDB。菜单栏?File -> New -> Flex ProjectQ这时会弹出一个对话框Q选择 Flex Data ServiceQ创Z一个Flex工程?br /> W五步:通过 RemoteObject 讉K数据?br /> 打开工程中生成的L?ConnectDB.mxmlQ声明一?RemoteObject Q?br /> E序代码
<mx:RemoteObjectid="getData" destination="dataService"result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>
其中destination 的值是刚才我们在配|?FDS 的时候设定的 destination?result 表示在这个RemoteObject成功q回之后所要做的动作,q里我们调用一个方?proccessResult()来处理返回的数据Q它的参?event.result是从服务器D获得的数据Q数据是作ؓ一个对象传q来的?fault表示在这个RemoteObjecthp|时要做的处理Q这里我们会弹出一个显C错误信息的对话框。接下来我们要声明一个DataGrid控g来显C公告的标题和发布日期:
E序代码
<mxataGrid id="myDG">
    <mx:columns>
        <mxataGridColumn headerText="标题" dataField="title"/>
        <mxataGridColumn headerText="发布日期" dataField="dates" labelFunction="formatDate"/>
    </mx:columns>
</mx:DataGrid>
其中headerText是显C在上方的表_dataField表示要显C的数据域,Z么数据域是title和dates呢?因ؓ我们传回的是一个NoticeInfo 对象数组Q虽然它是作Z个对象传回来的,但是其中的数据结构ƈ没有变,那些数据域的名字也没有变Q所以我们可以根据NoticeInfo 中的变量讑֮dataField。labelFunction属性是用来格式化显C的Q因Z回来的是格林威治旉Q所以我们需要将其格式化然后昄出来。注意,q里只是昄两个数据域,q不代表其它的数据都没有了,它们仍然存在Q只是没有显C出来?br /> 接下来,?<mx:Script> 标签中编写proccessResult()Ҏ和格式化日期?formatDateҎQ?br /> E序代码
private function proccessResult(result:Object):void
{
    myDG.dataProvider = ArrayUtil.toArray(result);
}
private function formatDate(item:Object,column:DataGridColumn):String
{
    return df.format(item.dates);
}    // df 是一?DateFormatterQ在下面会给出。关于如何格式化DataGrid的显C?br />     // 以及DateFormatterq里׃讨论了,帮助里写得很清楚
q个函数只是单地获得的数据传给 myDG ?dataProvider。result的类型是ObjectQ因为数据是作ؓ一个对象传q来的。之所以调?ArrayUtil.toArray()q个ҎQ是因ؓq回的记录可能只有一条,而myDG ?dataProvider昄单个对象的时候可能会出错Q所以安全v见先其转换成数l?br /> 最后,我们~写调用 RemoteObject 的方法,使其在程序启动时p用?br /> E序代码
private function initApp():void
{
      getData.getNotices();
}
其中 getData 是RemoteObject的idQgetNotices()是DataServiceImpl.java中的Ҏ。在q里可以直接调用它。当Ӟ如果DataServiceImpl.java有其它方法,也可以通过q种方式直接调用。接下来讑֮lg创徏完毕时调?initApp()ҎQ在<mx:Application>中添加一个creationComplete属?
E序代码
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="initApp()">
ConnectDB.mxml的全部代码:
E序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" creationComplete="initApp()">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;          
            import mx.utils.ArrayUtil;        
            private function initApp():void
            {
                getData.getNotices();
            }
            private function proccessResult(result:Object):void
            {
                myDG.dataProvider = ArrayUtil.toArray(result);
            }
            private function formatDate(item:Object,column:DataGridColumn):String
            {
                return df.format(item.dates);
            }// df 是一?DateFormatterQ在下面会给出。关于如何格式化DataGrid的显C?br />             // 以及DateFormatterq里׃讨论了,帮助里写得很清楚
        ]]>
    </mx:Script>
    <mx:DateFormatter id="df" formatString="YYYY-MM-DD"/>
   <mx:RemoteObject id="getData" destination="dataService"result="proccessResult(event.result)"fault="Alert.show(event.fault.faultString,'Error')"/>  
    <mx:DataGrid id="myDG">
        <mx:columns>
            <mx:DataGridColumn headerText="标题" dataField="title"/>
            <mx:DataGridColumn headerText="发布日期" dataField="dates" labelFunction="formatDate"/>
        </mx:columns>
    </mx:DataGrid>
</mx:Application>
整个工程l于完成Q启动JRUNQ然后运行程序,查看E序l果
如果是其他数据库Q只需要改一下数据库驱动信息可以了



Crying 2009-04-13 17:14 发表评论
]]>
最全的FLEX|站攉(http://yzyzilyr.spaces.live.com/blog/cns!80B5D9AC4E8FA63!421.entry?wa=wsignin1.0&sa=619253831)http://www.aygfsteel.com/Crying/articles/265328.htmlCryingCryingMon, 13 Apr 2009 09:11:00 GMThttp://www.aygfsteel.com/Crying/articles/265328.htmlhttp://www.aygfsteel.com/Crying/comments/265328.htmlhttp://www.aygfsteel.com/Crying/articles/265328.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/265328.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/265328.html一、国?span>站点
1.资源 c?br /> Adobe Flex 2 Component Explorer Q?官方的,展示了各U?span>lg ?span>用法 Q?span>入门 必看?br /> CFlex Q很好的一个Flex资源站点Q包?span>教程 Q新闻,资源站点…… 只是面有点杂ؕQ大家一般看双那一栏就行了?br /> FlexBox Q一?span>攉 了网上很?span>开?/span> lg的站点,是进?span>学习 的好帮手?br /> FlexLib Q也是一个开源Flexlg站点Q不q与FlexBox不同的是Q这个是原创Q而FlexBox只是攉?br /> Flex Developer Center QAdobe Flex开?/span> 者中心,l常会有一些好的教E出现?br /> Adobe Labs Q这个不用我说了吧?br /> Flex.orgQ?a target="_blank">http://www.flex.org/ 官方的,基本上应有尽有?br /> 2. Explorers
Flex 2 Style Explorer Q用来设?span>E序
样式风格的工P很好用,现在?span>代码 已经可以下蝲 ?br /> Flex 2 Primitive Explorer Q用来调节各UPrimitive囑Ş的组Ӟ非官方的Q源代码提供下蝲?br /> Flex 2 Filter Explorer Q用来调节各Uo镜(filterQ,非官方的Q源代码提供下蝲?br /> 3. Blogs
MXNA Q这个不用我说了吧,虽说q不是一个BlogQ但是它聚合了所有优U的BlogQ所以把它放在Blog一栏,下面所有的Blog都在q个聚合中?br /> Alex UhlmannQ?a target="_blank">http://web logs.macromedia.com/auhlmann/
Christophe CoenraetsQ?a target="_blank">http://coenraets.org/ 特别推荐
Code SlingerQ?a target="_blank">http://blogs.digitalprimates.net/codeSlinger/
DeitteQ?a target="_blank">http://www.deitte.com/
Doug mccuneQ?a target="_blank">http://dougmccune.com/blog/ 特别推荐
Flex Doc TeamQ?a target="_blank">http://blogs.adobe.com/flexdoc/
KuwamotoQ?a target="_blank">http://kuwamoto.org/ 特别推荐
Macromedia ConsultingQ?a target="_blank">http://weblogs.macromedia.com/mc/
Matt ChotinQ?a target="_blank">http://weblogs.macromedia.com/mchotin/ 特别推荐
Peter EntQ?a target="_blank">http://weblogs.macromedia.com/pent/ 特别推荐
Quietly SchemingQ?a target="_blank">http://www.quietlyscheming.com/blog/ 特别推荐
ScaleNine BlogQ?a target="_blank">http://www.scalenine.com/blog/index.php 特别推荐
Steven WebsterQ?a target="_blank">http://weblogs.macromedia.com/swebster/
EverythingFlexQ?a target="_blank">http://blog.everythingflex.com/ 特别推荐
Alex’s Flex ClosetQ?a target="_blank">http://blogs.adobe.com/aharui/ 特别推荐
4. 邮g 列表
FlexCodersQ?a target="_blank">http://tech.groups.yahoo.com/group/flexcoders/
Flex ComponentsQ?a target="_blank">http://www.adobe.com/go/flexcomponents 非高U开发者最好别加入
上面是两个比较有名的邮g列表Q徏议大家提问之前先搜烦一下邮件存档,一般都能找到答案,找不到再提问。更多邮件列表请看这里:http://flex.org/community/
5.Cairngorm 相关
Cairngorm Documentation Group q个里面攉了基本上所有关于Cairngorm?span>资料
二、国内站?br /> 1.论坛
RIACHINA Q前w是RIACNQ国内最好的Flex论坛之一。我最初知道Flex从这里开始,对这个站挺有感情Q饮水思源Q把它排W一?br /> AnyFlex Q国内最好的Flex论坛之一Q成立的旉比较早,而且论坛FTP中有很多好的资料?br /> JavaUU Q?后v之秀Q主要收集一些java?span>开源技?/span> 及热?span>技?/span> 资源Q特别是FLEX的资源相当齐全;
RIADev QGoogle|上论坛Qd.CAT前辈L的,一般小问题都能解决?br /> FlexCoders.cn Q刚h的论坛,不过看域名觉得挺有前途,呵呵?br /> 2.Blogs

Y.X.Shawn Q对Flex研究很深入,自己写一些开源的lg?br /> d.CAT Q高U开发者,台湾的,为数不多的华语高U开发者,他还做过一个类似Caringorm的架构?br /> Kenshin Q很早就开始研IFlex了,自己开发过很多东西?/div>

Crying 2009-04-13 17:11 发表评论
]]>
12条有用的Flex代码 (http://www.cnblogs.com/xxcainiao/archive/2009/04/13/1434590.html)http://www.aygfsteel.com/Crying/articles/265327.htmlCryingCryingMon, 13 Apr 2009 09:10:00 GMThttp://www.aygfsteel.com/Crying/articles/265327.htmlhttp://www.aygfsteel.com/Crying/comments/265327.htmlhttp://www.aygfsteel.com/Crying/articles/265327.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/265327.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/265327.html1.复制内容到系l剪贴板
System.setClipboard(strContent);


2.复制一个ArrayCollection

   //dummy solution( well, it works )
   var bar:ArrayCollection = new ArrayCollection();
   for each ( var i:Object in ac ){
       bar.addItem( i );
   }
   // fantastic ! //
   var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );


3.打开一个新览器窗?
navigateToURL(new URLRequest('http://52friends.com'), '_blank');


4.h览?/strong>
navigateToURL(new URLRequest("javascript:location.reload();"),"_self")


5.关闭览?/strong>
navigateToURL(new URLRequest("javascript:window.close()"),"_self");


6.讄Alert H口的背景ؓ透明
Alert
    {
    modalTransparency:0.0;  
    modalTransparencyBlur:0;
    }


7.取随机颜?/strong>

lbl.setStyle('color', 0xffffff*Math.random());
 

8.清除子串左侧I格

public function LTrim(s : String):String
    {
      var i : Number = 0;
      while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 || s.charCodeAt(i) == 9)
      {
        i++;
      }
      return s.substring(i,s.length);
    }
 

9.清除字串右侧I格
public function RTrim(s : String):String
    {
      var i : Number = s.length - 1;
      while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 ||s.charCodeAt(i) == 9)
      {
        i--;
      }
      return s.substring(0,i+1);
    }
 

10.清除字串左右的空?/strong>
public function Trim(s : String):String
    {
      return LTrim(RTrim(s));
    }
 

11.获取数据cd

getQualifiedClassName(data)
 

12.生成随机字符?
private function GenerateCheckCode():String
   {
       //init
       var ran:Number;
       var number:Number;
       var code:String;
       var checkCode:String ="";
       //get 4 radom
      for(var i:int=0; i<4; i++)
      {
          ran=Math.random();
          number =Math.round(ran*10000);            //get result like 0.1234
          if(number % 2 == 0)
            code = String.fromCharCode(48+(number % 10));        //0's ASCII code is 48
          else
            code = String.fromCharCode(65+(number % 26)) ;        // A's ASCII code is 65
          checkCode += code;
      }
      return checkCode;
  }



Crying 2009-04-13 17:10 发表评论
]]>
[Bindable] 用法 Q{q来Q?/title><link>http://www.aygfsteel.com/Crying/articles/265326.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Mon, 13 Apr 2009 09:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/Crying/articles/265326.html</guid><wfw:comment>http://www.aygfsteel.com/Crying/comments/265326.html</wfw:comment><comments>http://www.aygfsteel.com/Crying/articles/265326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Crying/comments/commentRss/265326.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Crying/services/trackbacks/265326.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="postbody"> <p>[Bindable]大概又是Flex用得最多的元数据了。刚开始用用确实好单,效率真是没的说。不q这几天用着却碰C些问题,我自己搜集了些资料,想着有必要在blog里ȝ一下吧?/p> <h3>啥是元数据(metadataQ?/h3> <p>知道pq吧。今天不晓得Z么livedoc.adobe.comq么慢,没办法,拿不到权威的解释了。我按自己的理解随便解释一下:首先要明白元数据不是语法的一部分Q而是专门l编译器用的Q说白了是告诉编译器做某些事情,学过java之类的应该知道。那Bindable来讲Q它的作用是告诉flex~译器,l某些某些东西徏立绑定关p,flex~译器会在编译过E中lASQflex~译器就是把mxml~译成asQ再~译到swfQ也可能直接~译倒swfQ我q里假设有asq么个环节)加一点事件发生和处理之类的代码,由此l定的关pM建立了,如果我们用纯_as3代码来写也是可以实现的,是太太太麻烦?/p> <h3>啥是l定</h3> <p>知道l箋跌。D个例子:l下面的public变量加上[Bindable]</p> <div id="wmqeeuq" class="wp_syntax" style="padding-bottom: 0px"> <div id="wmqeeuq" class="code"> <pre class="actionscript" style="font-family: monospace"><span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">public</span> <span style="font-weight: bold; color: #000000">var</span> <span style="color: #0066cc">name</span>:<span style="color: #0066cc">String</span> = <span style="color: #ff0000">""</span>;</pre> </div> </div> <p>作ؓ一个public变量Q肯定既可以被赋|也能赋值给别的变量。绑定的作用是Q当name改变的时候(被赋gQ,可能通知其它被name影响Q赋值给它们Q的变量发生改变。这里的“可能”需要编译器来判断,q就是ؓ什么元数据是给~译器用的原因了。在mxml里用{}的语法的地方是l定的对象,比如label={xxx.name}Q当name变化Qlabel也跟着变化。这P我们只是很简单的改变了name的|׃有绑定,界面上的label也跟着自动变化了,爽吧?/p> <h3>能用在哪?/h3> <p>三个地方Q类, 变量, getter/setter。是不是public没有关系Qprivate的就只能l自家用呗。用在Class上就是简单的l所有的public属性(包括变量Qgetter/setterQ普通方法)加上[Bindable]Q可是一般的Ҏ不能用[Bindable]呀Q于是一般就能看到flexl了个warningQ直接无?)。变量嘛是上面讲的Q很单略掉?/p> <h3>用在只读Q只写属性(getter/setterQ上?/h3> <p>l于讲到关键地方了,因ؓgetter和setter很像ҎQ用h会有点不同。看看这个例子:</p> <div id="wmqeeuq" class="wp_syntax" style="padding-bottom: 0px"> <div id="wmqeeuq" class="code"> <pre class="actionscript" style="font-family: monospace"><span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">private</span> <span style="font-weight: bold; color: #000000">var</span> content:<span style="color: #0066cc">Array</span> = <span style="font-weight: bold; color: #000000">new</span> <span style="color: #0066cc">Array</span><span style="color: #66cc66">(</span><span style="color: #66cc66">)</span>; <span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">public</span> <span style="font-weight: bold; color: #000000">function</span> <span style="color: #0066cc">set</span> _content<span style="color: #66cc66">(</span>ct:<span style="color: #0066cc">String</span><span style="color: #66cc66">)</span>:<span style="color: #0066cc">void</span> <span style="color: #66cc66">{</span> content = ct.<span style="color: #0066cc">split</span><span style="color: #66cc66">(</span>SEP<span style="color: #66cc66">)</span>; <span style="color: #66cc66">}</span> <span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">public</span> <span style="font-weight: bold; color: #000000">function</span> <span style="color: #0066cc">get</span> _wholeText<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span>:<span style="color: #0066cc">String</span> <span style="color: #66cc66">{</span> <span style="color: #b1b100">if</span><span style="color: #66cc66">(</span>content.<span style="color: #0066cc">length</span> == <span style="color: #cc66cc">0</span><span style="color: #66cc66">)</span> <span style="color: #66cc66">{</span> <span style="color: #b1b100">return</span> <span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">&</span>quot;; <span style="color: #66cc66">}</span> <span style="color: #b1b100">else</span> <span style="color: #66cc66">{</span> <span style="font-weight: bold; color: #000000">var</span> _w:<span style="color: #0066cc">String</span> = <span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">&</span>quot;; <span style="color: #b1b100">for</span><span style="color: #66cc66">(</span><span style="font-weight: bold; color: #000000">var</span> i:<span style="color: #0066cc">int</span>=<span style="color: #cc66cc">0</span> ; i<span style="color: #66cc66">&</span>lt;content.<span style="color: #0066cc">length</span> ; i++<span style="color: #66cc66">)</span> <span style="color: #66cc66">{</span> _w += content<span style="color: #66cc66">[</span>i<span style="color: #66cc66">]</span> + <span style="color: #66cc66">&</span>quot;\r\n<span style="color: #66cc66">&</span>quot;; <span style="color: #66cc66">}</span> <span style="color: #b1b100">return</span> _w; <span style="color: #66cc66">}</span> <span style="color: #66cc66">}</span></pre> </div> </div> <p>原来的设xcontentl定_wholeTextQ可它是不工作的。ؓ什么?_wholeText太复杂了Q被~译器排除在“可能”之外Q编译器认ؓ没有l定关系Q如果只是简单的return contentQ倒是可以的。我q里搜到了一些比较权威的解释。来?a >http://www.rubenswieringa.com/blog/binding-read-only-accessors-in-flex</a>扑ֈEly Greenfield讲的?/p> <blockquote> <p>Now keep in mind that there’s no way for the compiler to actually tell if the value of a property get function would be different if called, short of doing an extensive code flow analysis of the get function, identifying all the inputs that might be affecting the value of the get function (i.e., member fields, statics, globals that are used in the get function and in any methods, global functions, closures, etc) it might call, and setting up watchers on every one of those to trigger the binding when any of them change. That’s prohibitively difficult, and expensive to do. So the compiler doesn’t try.</p> <p>Instead when you put [Bindable] on a get/set property, the compiler makes it bindable with a little creative rewriting that allows the framework to watch the get function, and dispatch a change event when the get function is triggered. This means that automatic bindable properties don’t work when the get function is computed from multiple values, or when you change its value by setting a backing field, rather than using the set function.</p> <p>It _also_ means that if you have no set function, we can pretty much guarantee that there’s no way automatically bindable get properties will be triggered. a read only propeerty is, to the compiler, completely opaque…at the moment, it has no idea where that value is coming from, and hence will never be able to ‘automatically’ trigger the binding.</p> </blockquote> <p>说白了就是ؓ了降低复杂度和提高效率,复杂情况的getter会被忽略。如何解冻I可以手动建立l定Q即[Bindable("eventName")]。把代码Ҏq样Q?/p> <div id="wmqeeuq" class="wp_syntax" style="padding-bottom: 0px"> <div id="wmqeeuq" class="code"> <pre class="actionscript" style="font-family: monospace"><span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">private</span> <span style="font-weight: bold; color: #000000">var</span> content:<span style="color: #0066cc">Array</span> = <span style="font-weight: bold; color: #000000">new</span> <span style="color: #0066cc">Array</span><span style="color: #66cc66">(</span><span style="color: #66cc66">)</span>; <span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">]</span> <span style="color: #0066cc">public</span> <span style="font-weight: bold; color: #000000">function</span> <span style="color: #0066cc">set</span> _content<span style="color: #66cc66">(</span>ct:<span style="color: #0066cc">String</span><span style="color: #66cc66">)</span>:<span style="color: #0066cc">void</span> <span style="color: #66cc66">{</span> content = ct.<span style="color: #0066cc">split</span><span style="color: #66cc66">(</span>SEP<span style="color: #66cc66">)</span>; <span style="color: #0066cc">this</span>.<span style="color: #006600">dispatchEvent</span><span style="color: #66cc66">(</span><span style="font-weight: bold; color: #000000">new</span> Event<span style="color: #66cc66">(</span><span style="color: #66cc66">&</span>quot;_contectChanged<span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">)</span><span style="color: #66cc66">)</span>; <span style="color: #66cc66">}</span> <span style="color: #66cc66">[</span>Bindable<span style="color: #66cc66">(</span><span style="color: #66cc66">&</span>quot;_contectChanged<span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">)</span><span style="color: #66cc66">]</span> <span style="color: #0066cc">public</span> <span style="font-weight: bold; color: #000000">function</span> <span style="color: #0066cc">get</span> _wholeText<span style="color: #66cc66">(</span><span style="color: #66cc66">)</span>:<span style="color: #0066cc">String</span> <span style="color: #66cc66">{</span> <span style="color: #b1b100">if</span><span style="color: #66cc66">(</span>content.<span style="color: #0066cc">length</span> == <span style="color: #cc66cc">0</span><span style="color: #66cc66">)</span> <span style="color: #66cc66">{</span> <span style="color: #b1b100">return</span> <span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">&</span>quot;; <span style="color: #66cc66">}</span> <span style="color: #b1b100">else</span> <span style="color: #66cc66">{</span> <span style="font-weight: bold; color: #000000">var</span> _w:<span style="color: #0066cc">String</span> = <span style="color: #66cc66">&</span>quot;<span style="color: #66cc66">&</span>quot;; <span style="color: #b1b100">for</span><span style="color: #66cc66">(</span><span style="font-weight: bold; color: #000000">var</span> i:<span style="color: #0066cc">int</span>=<span style="color: #cc66cc">0</span> ; i<span style="color: #66cc66">&</span>lt;content.<span style="color: #0066cc">length</span> ; i++<span style="color: #66cc66">)</span> <span style="color: #66cc66">{</span> _w += content<span style="color: #66cc66">[</span>i<span style="color: #66cc66">]</span> + <span style="color: #66cc66">&</span>quot;\r\n<span style="color: #66cc66">&</span>quot;; <span style="color: #66cc66">}</span> <span style="color: #b1b100">return</span> _w; <span style="color: #66cc66">}</span> <span style="color: #66cc66">}</span></pre> </div> </div> <p>q样避免了~译器去自动识别。自己加上绑定关p,当_content被赋|发出_contentChanged事gQ通知所有被l定的getterҎ执行一遍。这也说明了Q绑定不q是事g游戏而已Qflex为用户隐藏了很多底层法?/p> </div> <img src ="http://www.aygfsteel.com/Crying/aggbug/265326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Crying/" target="_blank">Crying</a> 2009-04-13 17:08 <a href="http://www.aygfsteel.com/Crying/articles/265326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLEX 快捷键(转)http://www.aygfsteel.com/Crying/articles/265325.htmlCryingCryingMon, 13 Apr 2009 09:07:00 GMThttp://www.aygfsteel.com/Crying/articles/265325.htmlhttp://www.aygfsteel.com/Crying/comments/265325.htmlhttp://www.aygfsteel.com/Crying/articles/265325.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/265325.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/265325.htmlCtrl-F11: 执行QRunQ?
F11: 除错QDebugQ?
Ctrl-Alt-Down: 重复目前所在编辑列QRepeat current line Q?
Alt-Up: Ud本列Q或选择列往上移动(Move line (or selection) up Q?
Alt-Down: Ud本列Q或选择列下往UdQMove line (or selection) down Q?
Ctrl-Click: U至定义区(Go to definition (also F3) Q?
Ctrl-D: 删除本列QDelete line Q?
Alt-/: 文字自动完成QWord completion (cycles through possible matches)Q?
Ctrl-Up: 捲u向上QScroll up Q?
Ctrl-Down: 捲u向下QScroll Down Q?
Q组合键Q?Ctrl+Shift+L
(Activate Editor) F12
(Align Baselines) Ctrl + Alt + 8
(Align Bottom) Ctrl + Alt + 6
(Align Horizontal Centers) Ctrl + Alt + 5
(Align Left) Ctrl + Alt + 1
(Align Right) Ctrl + Alt + 3
(Align Top) Ctrl + Alt + 4
(Align Vertical Centers) Ctrl + Alt + 2

(Backward History) Alt + Left
(Breakpoints) Alt + Shift + Q,B
(Build All) Ctrl + B
(Cheat Sheets) Alt + Shift +Q,H
(Close) Ctrl + F4
(Close All) Ctrl + Shift + F4
(Console) Alt + Shift + Q,C
(Content Assist) Alt + /
(Context Information) Alt + Shift + ?
(Copy) Ctrl + C
(Cut) Ctrl + X
(Debug Adobe AIR Application) Alt + Shift + D,L
(Debug Flex Application) Alt + Shift +D,F
(Debug Last Launched) F11
(Delete) Delete
(Find Text in Workspace) Ctrl + Alt + G
(Find and Replace) Ctrl + F
(Find in Files) Ctrl + Shift + F
(Fit to Window) Ctrl + 0
(Forward History) Alt + Right
(History) Alt + Shift + Q,Z
(Last Edit Location) Ctrl + Q
(Make Same Height) Ctrl + Alt + 9
(Make Same Width) Ctrl + Alt + 7
(Maximize Active View or Editor) Ctrl + M
(New) Ctrl + N
(New menu) Alt + Shift + N
(Next) Ctrl + .
(Next Editor) Ctrl + F6
(Next Perspective) Ctrl + F8
(Next View) Ctrl + F7
(Open Resource) Ctrl + Shift + R
(Open Search Dialog) Ctrl + H
(Paste) Ctrl + V
(Previous) Ctrl + ,
(Previous Editor) Ctrl + Shift + F6
(Previous Perspective) Ctrl + Shift + F8
(previous View) Ctrl + Shift + F7
(print) Ctrl + P
(Profile Adobe AIR Application) Alt + Shift + P,L
(Profile Flex Application) Alt + Shift + P,F
(Properties) Alt + Enter
(Quick Access) Ctrl + 3
(Quick Fix) Ctrl + 1
(Quick Switch Editor) Ctrl + E
(Redo) Ctrl + Y
(Refresh) F5
(Remove All Visible Results) Shift + Delete
(Remove Result) Ctrl + Delete
(Rename) F2
(Run Adobe AIR Application) Alt + Shift + X, L
(Run Flex Application) Alt + Shift + X, F
(Run Last Launched) Alt + F11
(Save) Ctrl + F11
(Save All) Ctrl + Shift + S
(Search) Alt + Shif + Q, S
(Select All) Ctrl + A
(Show In menu) Alt + Shift + W
(Show Key Assist) Ctrl + Shift + L
(Show System Menu) Alt + -
(Show View) Alt + Shift + Q , Q
(Show View [View:Outline]) Alt + Shift + Q ,0
(Show View [View:Problems]) Alt + Shift + Q , X
(Show View Menu) Ctrl + F10
(Switch Source/Design Mode) Ctrl + ‘
(Switch to Editor) Ctrl + Shift + Q , Y
(Terminate Result) Ctrl + Break
(Toggle Breakpoint) Ctrl + Shift + B
(Undo) Ctrl + Z
(Use Step Filters) Shift + Z
(Variables) Alt + Shift + Q , V
(Zoom In) Ctrl + =
(Zoom Out) Ctrl + -

Crying 2009-04-13 17:07 发表评论
]]>
վ֩ģ壺 Ȫ| | | | ̨| | | | | ī| Ϸ| ɽ| ߮| | | | ɽ| ˮ| | | | | | п| ӽ| | | ɽ| | | ϰ| ƽ| ɽ| | | ˮ| | ۩| | ˶| ½|