<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-31  評(píng)論-257  文章-0  trackbacks-0
    本篇接著上一篇文章,上篇文章中,大家都看到最終效果了,這個(gè)例子很簡(jiǎn)單,我就粗略的講解一下代碼吧
    整個(gè)Flex程序,就兩個(gè)Panel面板,將控件都排放好到Panel里面,之后定好相應(yīng)的屬性,我主要解析一下下面的代碼:
     1 <mx:Script>
     2         <![CDATA[
     3         //導(dǎo)入需要用到的類
     4         import mx.utils.Base64Encoder;
     5         import mx.collections.ArrayCollection;
     6         import mx.controls.Alert;
     7         import com.adobe.images.PNGEncoder;
     8        
     9         //這里定義一個(gè)ArrayCollection 這就是PieChart控件所需要的dataProvider,并賦好初值
    10         [Bindable]
    11         private var mydata:ArrayCollection = new ArrayCollection([
    12             {name: "非常滿意",num: 1},
    13             {name: "滿意",num: 1},
    14             {name: "普通",num: 1},
    15             {name: "不滿意",num: 1},
    16             {name: "非常不滿意",num: 1}
    17         ]);
    18        
    19         //方法為PieChart控件自動(dòng)調(diào)用的,是用于當(dāng)圖表要顯示Label時(shí),將會(huì)調(diào)用該方法,并傳上相應(yīng)的參數(shù),這樣,你就可以在該方法里自已處理好要顯示的數(shù)據(jù),再返回給Chart顯示
    20         private function showLabel(data:Object, field:String, index:Number, percentValue:Number):String{
    21             return data.name + ":" + data.num + "\n" + Math.round(percentValue) + "%";
    22         }
    23        
    24         //該方法是當(dāng)點(diǎn)擊“確定”按鈕時(shí)調(diào)用的,用于改變圖表數(shù)據(jù)的ArrayCollection里的數(shù)據(jù),再更新圖表顯示
    25         private function changeData(ent:Event):void{
    26             //定一個(gè)臨時(shí)的集合用于放置數(shù)據(jù)
    27             var temp:ArrayCollection = new ArrayCollection();
    28             //判斷用戶所填的數(shù)據(jù)是否為空,如果為空的就不要加進(jìn)集合里了,免得圖表出現(xiàn)一些無(wú)謂的Label,下同
    29             if(resu0.text != ""){
    30                 temp.addItem({name: "非常滿意",num: resu0.text});
    31             }
    32             if(resu1.text != ""){
    33                 temp.addItem({name: "滿意",num: resu1.text});
    34             }
    35             if(resu2.text != ""){
    36                 temp.addItem({name: "普通",num: resu2.text});
    37             }
    38             if(resu3.text != ""){
    39                 temp.addItem({name: "不滿意",num: resu3.text});
    40             }
    41             if(resu4.text != ""){
    42                 temp.addItem({name: "非常不滿意",num: resu4.text});
    43             }
    44             panel1.title = subjectTitle.text;
    45             /*
    46             mydata[0].num = resu0.text;
    47             mydata[1].num = resu1.text;
    48             mydata[2].num = resu2.text;
    49             mydata[3].num = resu3.text;
    50             mydata[4].num = resu4.text;
    51             */
    52             pc.dataProvider = temp;
    53         }
    54        
    55         //這里是截圖的方法函數(shù),參照于國(guó)外某高手地Flex截圖方面的代碼
    56         private function catchPic(ent:Event):void{
    57             //根據(jù)要截圖的Panel的大小建立一個(gè)放置位圖數(shù)據(jù)的BitmapData對(duì)象
    58             var bitmapData:BitmapData = new BitmapData(panel1.width,panel1.height,true,0xffffff);
    59             //用現(xiàn)時(shí)panel1對(duì)象的位圖信息填充到bitmapData對(duì)象中
    60             //由于每一個(gè)DisplayObject對(duì)象都有自已的用于顯示的位圖色彩信息,
    61             //所以很多繼承了DisplayObject的類都可以填充到bitmapData對(duì)象中處理,如模糊處理等
    62             bitmapData.draw(panel1);
    63             //用PNGEncoder類對(duì)位圖信息進(jìn)行壓縮轉(zhuǎn)換處理才得以輸出PNG圖片格式數(shù)據(jù)
    64             var bytes:ByteArray = PNGEncoder.encode(bitmapData);
    65             //再將數(shù)據(jù)進(jìn)行編碼,用于在JavaScript中向?yàn)g覽器傳播
    66             //最后調(diào)用JavaScript來(lái)打開(kāi)新窗口來(lái)顯示圖借數(shù)據(jù)
    67             var b64encoder:Base64Encoder = new Base64Encoder();
    68             b64encoder.encodeBytes(bytes);
    69             ExternalInterface.call("showPic",b64encoder.flush(),panel1.width+25,panel1.height+25);
    70         }
    71         ]]>
    72 </mx:Script>


    JavaScript方面要寫上以下函數(shù):

    1 function showPic(img,width,height){
    2     window.open("data:image/png;base64," + img,"","width="+width+",height="+height+",resizable=1");
    3 }



    以上有幾點(diǎn)應(yīng)該要注意:
    注意PieChart的dataProvider的寫法,也就是ArrayCollection的寫法,這與很多控件的dataProvider的都一樣,比如DataGrid控件。
    注意,PNGEncoder類不是Flex原本自帶的,是要另外自已下載的擴(kuò)展包,在com.adobe.images里面,是Adobe發(fā)布的核心擴(kuò)展類庫(kù),更多的類庫(kù),大家可以在網(wǎng)上找找。

    以下放出完整的源代碼:[down=attachments/month_0710/92007102323188.rar]點(diǎn)擊下載此文件[/down]


    posted on 2008-07-29 14:10 姜大叔 閱讀(2774) 評(píng)論(4)  編輯  收藏 所屬分類: Flash/Flex

    評(píng)論:
    # re: [續(xù)] 初玩 Flex Chart,簡(jiǎn)單實(shí)例分析![未登錄](méi) 2008-10-09 16:42 | 魚(yú)
    不錯(cuò),但為何怎么不見(jiàn)你的源碼的連接呀!!!
    wwj256@163.com望樓主發(fā)份給我,謝啦!  回復(fù)  更多評(píng)論
      
    # re: [續(xù)] 初玩 Flex Chart,簡(jiǎn)單實(shí)例分析![未登錄](méi) 2008-12-22 14:07 | 風(fēng)
    怎么不能下載源碼?
    saint1107@163.com望樓主發(fā)份給我,謝謝哈  回復(fù)  更多評(píng)論
      
    # re: [續(xù)] 初玩 Flex Chart,簡(jiǎn)單實(shí)例分析! 2009-05-22 13:39 | very good!
    望樓主發(fā)份給我(wangshigeyao@yahoo.com.cn),謝謝哈  回復(fù)  更多評(píng)論
      
    # ok[未登錄](méi) 2010-01-20 16:00 | ok
    主站蜘蛛池模板: 亚洲福利电影在线观看| 美女被免费视频网站| 国产美女a做受大片免费| 一区二区三区在线免费| 亚洲一区影音先锋色资源| 在线中文高清资源免费观看| 免费国产va在线观看| 18亚洲男同志videos网站| 成人免费视频观看无遮挡| 国产高清对白在线观看免费91| 亚洲高清无在码在线无弹窗| 无码专区一va亚洲v专区在线| 小日子的在线观看免费| 免费福利资源站在线视频| 久久综合亚洲鲁鲁五月天| 亚洲免费在线观看| 拨牐拨牐x8免费| 久久久久国产精品免费免费不卡 | 91情国产l精品国产亚洲区| 国产伦精品一区二区三区免费迷| 日韩精品免费视频| 免费高清A级毛片在线播放| 亚洲日本久久久午夜精品| 亚洲级αV无码毛片久久精品| 四虎成人免费影院网址| 亚洲免费在线视频| 中国国产高清免费av片| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲av无码潮喷在线观看 | 亚洲日韩一区精品射精| 久久亚洲精品成人| 国内精品99亚洲免费高清| 国产精品无码一二区免费| 国产免费女女脚奴视频网| 在线免费播放一级毛片| 阿v免费在线观看| 亚洲日韩中文字幕无码一区| 亚洲最大在线观看| 亚洲人成在线电影| 国产亚洲精品a在线观看app| 亚洲熟女乱综合一区二区|