惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
D
Darknet – Hacking Tools, Hacker News & Cyber Security
F
Fortinet All Blogs
小众软件
小众软件
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
MongoDB | Blog
MongoDB | Blog
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
量子位
N
Netflix TechBlog - Medium
B
Blog
P
Proofpoint News Feed
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
AI
AI
Stack Overflow Blog
Stack Overflow Blog
U
Unit 42
M
MIT News - Artificial intelligence
Vercel News
Vercel News
D
DataBreaches.Net
P
Palo Alto Networks Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
The Hacker News
The Hacker News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
Attack and Defense Labs
Attack and Defense Labs
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Webroot Blog
Webroot Blog
Cyberwarzone
Cyberwarzone
美团技术团队
博客园 - 司徒正美
Cloudbric
Cloudbric
J
Java Code Geeks
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
A
About on SuperTechFans

博客园 - henry

Smark.Net.Tcp.XmlService性能测试程序 基于Flex的http简易文件管理工具 性能的瓶颈到底在那呢? 运用Smark.SocketAsyncs扩展基于XML的TCP服务 运用Smark.SocketAsyncs方便实现数据交互服务 实现分布式对象锁 发布一个C#实现的Asterisk的管理系统 asterisk使用SIP相互对接 开源一个基于Flex4+C#的个人信息管理程序 这样的重构是否有必要呢? Asterisk2B用户管理逻辑设计 用JQuery UI dialog实现Alert和Confirm功能 - henry Asterisk发起电话预约回拔 WOW工会DKP管理系统 我的分页控件设计 实现一个JavaScript验证的Asp.net Helper - henry - 博客园 Smark.Data 实体属性值描述 Smark.Data实体成员数据验证 Smark.Data Part1
FlashBuilder4试用
henry · 2010-03-27 · via 博客园 - henry
 

        很早之前就听说Flex Builder3的新版本FlashBuilder4的事情,由于没有出正式版所以一直没有下载来试用下,昨天听同说已经出了正式版所以下载拿用了一下.总体使用感觉还可以,IDE的速度明显比Flex builder3有所提高,不过提供的控件发生了变化,所以对应MXML名称空间也发生了改变有点不太适应.有些旧的控件已经在IDE的工具栏里找不到了,不过可以手动编写MXML里得到提示。代码的布局说实话没有Flex Builder3好,行距太紧凑看到眼累不多说了下面用FlashBuilder4做个简单的应用。

需要完成的功能:

一个简单的客户查询,当选择客户里查看他相关的订单和订单明细。所涉及的业务逻辑有三个。

定义相关业务逻辑方法:

    public class Services

    {

        public IList<Entities.Customers> CustomerList(string companyname)

        {

            Expression exp = new Expression();

            if (!string.IsNullOrEmpty(companyname))

                exp &= Entities.Customers.companyName.Match(companyname);

            return exp.List<Entities.Customers>();

        }

        public IList<Entities.Orders> OrderList(string customerid)

        {

            return (Entities.Orders.customerID == customerid).List<Entities.Orders>();

        }

        public IList<Entities.OrderDetails> DetailList(int orderid)

        {

            return (Entities.OrderDetails.orderID == orderid).List<Entities.OrderDetails>();

        }

    }

下面定义对应AS的调用类:

    import Core.Utility;

    import Core.ActionBase;

    /**

    * Action Script调用方法生成工具1.2  生成时间:2010-3-26 17:42:59

    */

    public dynamic class Services_CustomerList extends ActionBase

    {

        public var companyname:Object;

    }

    import Core.Utility;

    import Core.ActionBase;

    /**

    * Action Script调用方法生成工具1.2  生成时间:2010-3-26 18:44:06

    */

    public dynamic class Services_OrderList extends ActionBase

    {

        public var customerid:Object;

    }

    import Core.Utility;

    import Core.ActionBase;

    /**

    * Action Script调用方法生成工具1.2  生成时间:2010-3-27 9:04:26

    */

    public dynamic class Services_DetailList extends ActionBase

    {

        public var orderid:Object;

    }

逻辑代码准备好后,就开始写界面了。对于FlashBuilder4编写UI提供什么快速度的方式我没有研究,还是使用最原始的方式直接手动编写MXML的方式(感觉熟悉后这样比鼠标拖来拖去要快)…..

先实现左边的客户信息查询:

代码

        <s:Panel width="379" height="100%" title="客户">
            
<s:layout>
                
<s:VerticalLayout/>
            
</s:layout>
            
<s:BorderContainer width="100%" height="50" backgroundColor="#F4F4F4">
                
<s:TextInput x="8" y="12" text="@{mCustomerList.companyname}" width="199"/>
                
<s:Button x="213" y="12" label="查询">
                    
<s:click>
                        
<![CDATA[
                        mCustomerList.Execute();
                        
]]>
                    
</s:click>
                
</s:Button>
            
</s:BorderContainer>
            
<mx:List id="lstcustomer" dataProvider="{mCustomerList.Result.Data.Customers}" borderVisible="false" width="100%" height="100%">
                
<mx:itemRenderer>
                    
<fx:Component>
                        
<mx:VBox horizontalScrollPolicy="off" verticalScrollPolicy="off">
                            
                        
                        
<mx:Form verticalGap="1">
                            
<mx:FormItem label="ID:">
                                
<s:Label text="{data.CustomerID}"/>
                            
</mx:FormItem>
                            
<mx:FormItem label="Company:">
                                
<s:Label text="{data.CompanyName}"/>
                            
</mx:FormItem>
                            
<mx:FormItem label="Phone:">
                                
<s:Label text="{data.Phone}"/>
                            
</mx:FormItem>
                            
<mx:FormItem label="City">
                                
<s:Label text="{data.Country}({data.Region})-{data.City}"/>
                            
</mx:FormItem>
                            
<mx:FormItem label="Address:">
                                
<s:Label text="{data.Address}"/>
                            
</mx:FormItem>
                            
                        
</mx:Form>
                            
<mx:HRule height="1" width="100%"/>
                        
</mx:VBox>
                    
</fx:Component>
                
</mx:itemRenderer>
                
<mx:change>
                    
<![CDATA[
                        mOrderList.customerid = lstcustomer.selectedItem.CustomerID;
                        mOrderList.Execute();
                    
]]>
                
</mx:change>
            
</mx:List>
        
</s:Panel>

FlashBuilder 4里提供一个不错的功能就是控件值修改同步到对象成员中的功能,绑定的定义也很简单在原来的基础上加个@标识就是了:"@{mCustomerList.companyname}FlashBuilder 4提供的List控件对提供数据有要求必须是IListXMLList对象无法绑定,只有用Flex3所提供的List控件了。在Listchange事件中调用了OrderList查询来获取订单信息。

接下来看订单查询的UI输出描述:

代码

<mx:List dataProvider="{mOrderList.Result.Data.Orders}" width="100%" height="100%" borderStyle="none">
                
<mx:itemRenderer>
                    
<fx:Component>
                        
<mx:VBox verticalScrollPolicy="off" horizontalScrollPolicy="off">
                            
<mx:Grid verticalGap="20" borderStyle="outset" borderColor="#D5D5D5" width="100%" paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5" verticalAlign="top">
                                
<mx:GridRow verticalAlign="middle">
                                    
<mx:GridItem verticalAlign="bottom">
                                        
<s:Label text="Employee:" fontWeight="bold" fontStyle="italic"/>
                                        
                                    
</mx:GridItem>
                                    
<mx:GridItem verticalAlign="bottom">
                                        
<s:Label text="{data.EmployeeName}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<mx:PopUpButton label="Details" click="event.target.open()">
                                            
<mx:popUp>
                                                
<mx:DataGrid dataProvider="{mDetailList.Result.Data.OrderDetails}" dropShadowVisible="true" borderVisible="true" borderColor="#969696" borderStyle="outset" height="100%">
                                                    
<mx:columns>
                                                        
<mx:DataGridColumn dataField="ProductName"/>
                                                        
<mx:DataGridColumn dataField="UnitPrice"/>
                                                        
<mx:DataGridColumn dataField="Quantity"/>
                                                        
<mx:DataGridColumn dataField="Discount"/>
                                                    
</mx:columns>
                                                
</mx:DataGrid>
                                            
</mx:popUp>
                                        
</mx:PopUpButton>
                                    
</mx:GridItem>
                                
</mx:GridRow>
                                
<mx:GridRow  verticalAlign="middle">
                                    
<mx:GridItem>
                                        
<s:Label text="OrderDate:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label  text="{data.OrderDate}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="RequiredDate:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.RequiredDate}"/>
                                    
</mx:GridItem>
                                
</mx:GridRow>
                                
                                
<mx:GridRow  verticalAlign="middle">
                                    
<mx:GridItem>
                                        
<s:Label text="ShippedDate:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label  text="{data.ShippedDate}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="ShipVia:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.ShipVia}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="Freight:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.Freight}"/>
                                    
</mx:GridItem>
                                
</mx:GridRow>
                                
                                
<mx:GridRow  verticalAlign="middle">
                                    
<mx:GridItem>
                                        
<s:Label text="ShipName:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label  text="{data.ShipName}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="ShipCountry:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.ShipCountry}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="ShipRegion:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.ShipRegion}"/>
                                    
</mx:GridItem>
                                
</mx:GridRow>
                                
                                
<mx:GridRow  verticalAlign="middle">
                                    
<mx:GridItem>
                                        
<s:Label text="ShipCity:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label  text="{data.ShipCity}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="ShipPostalCode:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.ShipPostalCode}"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="ShipAddress:" fontWeight="bold" fontStyle="italic"/>
                                    
</mx:GridItem>
                                    
<mx:GridItem>
                                        
<s:Label text="{data.ShipAddress}"/>
                                    
</mx:GridItem>
                                
</mx:GridRow>
                                
                            
</mx:Grid>
                            
<mx:creationComplete>
                                
<![CDATA[
                                    if(data !=null)
                                    {
                                        mDetailList.orderid = data.OrderID;
                                        mDetailList.Execute();
                                    }
                                
]]>
                            
</mx:creationComplete>
                            
                            
                            
<fx:Script>
                                
<![CDATA[
                                    import Api.Services_DetailList;
                                    private var mDetailList:Services_DetailList = new Services_DetailList();
                                
]]>
                            
</fx:Script>
                        
</mx:VBox>
                    
                    
</fx:Component>
                
</mx:itemRenderer>
            
</mx:List>

总的来说FlashBuilder4在编写应用的时候和Flex3没有多的差异,如果本身对Flex3熟悉的朋友那马上转用FlashBuilder4应该不存在问题。

下载完整代码