ASP.NET中實(shí)現(xiàn)可動(dòng)態(tài)更新Flash統(tǒng)計(jì)圖
怎么在自己的ASP.NET頁(yè)面插入可動(dòng)態(tài)更新Flash統(tǒng)計(jì)圖呢?網(wǎng)上的資源倒是不少(Fusioncharts、amCharts……),
但我覺得效果最炫的還是amcharts的統(tǒng)計(jì)圖,還可以與用戶交互
可動(dòng)態(tài)更新Flash統(tǒng)計(jì)圖效果圖:
(柱狀圖)
(餅狀圖)
(股票圖)
(怎么樣?效果夠炫吧?趕緊去官網(wǎng)體驗(yàn)一下吧,會(huì)比你想象的用起來還要好~還可以自己設(shè)置很多的效果)
amcharts官網(wǎng)上各種各樣的都可以下載,而且可以免費(fèi)使用,唯一不足的就是免費(fèi)版會(huì)顯示它公司的鏈接,不過這是可以破解的,
下載amcharts_key.txt放到flash的相同目錄下即可。
我所使用的flash是兩個(gè)不同的版本,一個(gè)是直接在官網(wǎng)下載的柱狀圖、另一個(gè)不知道的哪下的餅狀圖,不過也是amcharts的,但貌似是經(jīng)過破解的,只有一個(gè)xml文件(一般來說都應(yīng)該有兩個(gè),一個(gè)主要設(shè)置內(nèi)容,一個(gè)主要設(shè)置外觀)如下圖:
準(zhǔn)備工作:統(tǒng)計(jì)圖的swf文件、相關(guān)的xml數(shù)據(jù)文件、swfobject1.5(現(xiàn)在2.x都有了,不過感覺1.5用著舒服些)
先說說從官網(wǎng)下載下來的使用方法吧。直接以代碼呈現(xiàn):(關(guān)于swfobject請(qǐng)查看官方文檔)
- <script type="text/javascript" src="js/swfobject.js"></script>
- <div id="flashcontent">
首先引用swfobject.js,不然編譯器會(huì)罷工的噢~ : )
然后就是一個(gè)div,也可以是span,里面有一句"You need to upgrade your Flash Player”,你肯定猜得到在flash未加
載時(shí)就會(huì)顯示這句話,這是為什么呢?(破有小沈陽的味道)請(qǐng)繼續(xù)往下看,SWFObject(注意大小寫哦)里的***句就引用了想要加載的flash路徑,然后下面兩句關(guān)聯(lián)上xml文件,如果要?jiǎng)討B(tài)改變flash的話就必須在xml后加上一個(gè)隨機(jī)變量,否則flash只會(huì)在你重新運(yùn)行或者清空緩存之后改變,***一個(gè)so.write就是用flash替換掉div中的內(nèi)容。
下面是改變內(nèi)容的代碼:(因?yàn)橥耆皇煜ml,自己瞎琢磨出的一個(gè)方法,僅作參考)
- using System.Xml;
- XmlDocument doc = new XmlDocument();
好了,這樣就大功告成了~
然后再說說我的另外一個(gè)flash的用法吧,這個(gè)就麻煩多了,中外的網(wǎng)站都給翻遍了(有點(diǎn)夸張,不過我確實(shí)是從晚上11點(diǎn)直到早上5點(diǎn)半才把它給解決),開始說了,這個(gè)flash只有一個(gè)xml如果用前面的方法想要實(shí)現(xiàn)動(dòng)態(tài)的話是不可能的,因?yàn)檫@個(gè)flash是從內(nèi)部讀取xml的,在外面怎么改都不能動(dòng)態(tài)顯示,我***還想通過禁用緩存的方法來解決,但也是不可能的,我甚至想了一個(gè)更絕的辦法:直接拿修改后的xml去覆蓋windows臨時(shí)文件夾的xml。
但還是行不通,***實(shí)在不行了就只能把flash給反編譯了,不過幸好flash的代碼不那么麻煩,沒找多久久找到了那個(gè)載入的函數(shù)
- function load(url)
- {
- xml.load(url);
- }
然后我直接在url后加上了隨機(jī)變量
- function load(url)
- {
- xml.load(url+“?"+Math.random());
- }
這樣ASP.NET中實(shí)現(xiàn)可動(dòng)態(tài)更新Flash統(tǒng)計(jì)圖就OK了
本文來自Darryn的博客園文章《在ASP.NET中使用可動(dòng)態(tài)更新的flash統(tǒng)計(jì)圖》
【編輯推薦】