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

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

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

    隨筆-31  評論-257  文章-0  trackbacks-0
    本篇接著上一篇文章,上篇文章中,大家都看到最終效果了,這個例子很簡單,我就粗略的講解一下代碼吧
    整個Flex程序,就兩個Panel面板,將控件都排放好到Panel里面,之后定好相應的屬性,我主要解析一下下面的代碼:
     1 <mx:Script>
     2         <![CDATA[
     3         //導入需要用到的類
     4         import mx.utils.Base64Encoder;
     5         import mx.collections.ArrayCollection;
     6         import mx.controls.Alert;
     7         import com.adobe.images.PNGEncoder;
     8        
     9         //這里定義一個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控件自動調用的,是用于當圖表要顯示Label時,將會調用該方法,并傳上相應的參數,這樣,你就可以在該方法里自已處理好要顯示的數據,再返回給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         //該方法是當點擊“確定”按鈕時調用的,用于改變圖表數據的ArrayCollection里的數據,再更新圖表顯示
    25         private function changeData(ent:Event):void{
    26             //定一個臨時的集合用于放置數據
    27             var temp:ArrayCollection = new ArrayCollection();
    28             //判斷用戶所填的數據是否為空,如果為空的就不要加進集合里了,免得圖表出現一些無謂的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         //這里是截圖的方法函數,參照于國外某高手地Flex截圖方面的代碼
    56         private function catchPic(ent:Event):void{
    57             //根據要截圖的Panel的大小建立一個放置位圖數據的BitmapData對象
    58             var bitmapData:BitmapData = new BitmapData(panel1.width,panel1.height,true,0xffffff);
    59             //用現時panel1對象的位圖信息填充到bitmapData對象中
    60             //由于每一個DisplayObject對象都有自已的用于顯示的位圖色彩信息,
    61             //所以很多繼承了DisplayObject的類都可以填充到bitmapData對象中處理,如模糊處理等
    62             bitmapData.draw(panel1);
    63             //用PNGEncoder類對位圖信息進行壓縮轉換處理才得以輸出PNG圖片格式數據
    64             var bytes:ByteArray = PNGEncoder.encode(bitmapData);
    65             //再將數據進行編碼,用于在JavaScript中向瀏覽器傳播
    66             //最后調用JavaScript來打開新窗口來顯示圖借數據
    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方面要寫上以下函數:

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



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

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


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

    評論:
    # re: [續] 初玩 Flex Chart,簡單實例分析![未登錄] 2008-10-09 16:42 |
    不錯,但為何怎么不見你的源碼的連接呀!!!
    wwj256@163.com望樓主發份給我,謝啦!  回復  更多評論
      
    # re: [續] 初玩 Flex Chart,簡單實例分析![未登錄] 2008-12-22 14:07 |
    怎么不能下載源碼?
    saint1107@163.com望樓主發份給我,謝謝哈  回復  更多評論
      
    # re: [續] 初玩 Flex Chart,簡單實例分析! 2009-05-22 13:39 | very good!
    望樓主發份給我(wangshigeyao@yahoo.com.cn),謝謝哈  回復  更多評論
      
    # ok[未登錄] 2010-01-20 16:00 | ok
    ok  回復  更多評論
      
    主站蜘蛛池模板: 亚洲а∨天堂久久精品9966| 久久亚洲国产成人精品性色| 亚洲欧洲日产国码久在线| 亚洲免费视频观看| 亚洲欧洲国产经精品香蕉网| 四虎在线免费视频| 亚洲欧洲另类春色校园网站| 免费无码精品黄AV电影| 亚洲精品美女久久久久久久| 免费乱码中文字幕网站| 99久久免费国产精品热| 亚洲av无码专区国产乱码在线观看| 中国在线观看免费的www| 亚洲AV日韩AV天堂一区二区三区| 久久国产免费观看精品3| 亚洲伊人久久精品| 日本一道一区二区免费看| 成人精品综合免费视频| 亚洲va无码手机在线电影| 亚洲精品视频在线观看免费| 亚洲毛片基地4455ww| 日韩精品亚洲专区在线观看| 国产VA免费精品高清在线| 亚洲av一综合av一区| 曰批全过程免费视频在线观看| 亚洲成av人无码亚洲成av人| 亚洲人成电影在线播放| 精品一区二区三区免费毛片爱| 亚洲看片无码在线视频| 亚洲AV无码乱码在线观看性色扶 | 中国一级毛片免费看视频| 亚洲一区二区影院| 国产免费看插插插视频| 东方aⅴ免费观看久久av | 亚洲无砖砖区免费| 国产裸模视频免费区无码| 日韩精品无码免费专区午夜不卡| 亚洲午夜电影在线观看高清| 人人狠狠综合久久亚洲高清| 69av免费视频| 四虎影视久久久免费观看|