扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開(kāi)發(fā)

本站首頁(yè) 軟件開(kāi)發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開(kāi)發(fā)公司 >> 開(kāi)發(fā)語(yǔ)言 >> 文章正文

看看javascript是如何繪圖的

——點(diǎn)的實(shí)現(xiàn)與速度測(cè)試
Ps:本文只是一菜鳥(niǎo)畫(huà)鴨之筆,有不對(duì)之處歡迎高手們指證!

一、背景知識(shí):
   通過(guò)搜索,網(wǎng)上關(guān)于web繪圖的實(shí)現(xiàn)大致有以下三類:
1 插件實(shí)現(xiàn)
     優(yōu)點(diǎn):功能豐富。護(hù)展性好,速度快。
     缺點(diǎn):首次訪問(wèn)必須下載插件。
2 flash實(shí)現(xiàn)
     優(yōu)點(diǎn):首次訪問(wèn)不需要下載插件(大部分瀏覽已經(jīng)安裝有flash插件),畫(huà)面質(zhì)量高。
     缺點(diǎn):速度較慢,需要懂得flash相關(guān)編程的知識(shí)。
3 js實(shí)現(xiàn)
     優(yōu)點(diǎn):首次訪問(wèn)不需要下載插件
     缺點(diǎn):速度應(yīng)該慢于插件的實(shí)現(xiàn)(沒(méi)有測(cè)試),實(shí)現(xiàn)方法較牽強(qiáng)。
本文只介紹js實(shí)現(xiàn)。構(gòu)思參照neweroica 于2003年發(fā)布的JS2D函數(shù)集。在小學(xué)的幾何中我們就明白,繪圖平面由線構(gòu)成,而線是由點(diǎn)構(gòu)成,所以,只要我們解決了點(diǎn)的繪制,則線,面只是一個(gè)循序漸進(jìn)的過(guò)程。

二、思路解析:
 在newerroica的JS2D函數(shù)集中,點(diǎn)的繪制是通過(guò)table標(biāo)簽來(lái)實(shí)現(xiàn)的。也就是繪制一個(gè)無(wú)邊框,無(wú)填充,一個(gè)單元格的表格,來(lái)實(shí)現(xiàn)點(diǎn)的顯示。點(diǎn)的顏色、大小、位置則由table標(biāo)簽的style屬性來(lái)定義。代碼如下:
//Dottable.js

 

1/**//************* 畫(huà)點(diǎn) **************
2  x,y     點(diǎn)所在的屏幕坐標(biāo)(像素)
3  color   顏色(字符串值)
4  size    大。ㄏ袼兀
5**********************************/
6function drawDot(x,y,color,size){
7  document.write("<table border=’0’ cellspacing=0 cellpadding=0><tr><td style=’position: absolute; left: "+(x)+"; top: "+(y)+";background-color: "+color+"’ width="+size+" height="+size+"></td></tr></table>");
8}

我的改進(jìn)思路是,如果table可以實(shí)現(xiàn),那么div是否同樣可以實(shí)現(xiàn),并且能夠達(dá)到更快的速度呢,我簡(jiǎn)單的修改代碼如下:
//Dotdiv.js

1/**//**********畫(huà)點(diǎn)***********
2x,y   點(diǎn)的坐標(biāo)(像素)
3color 點(diǎn)的顏色(字符串值)
4size  點(diǎn)在大小(像素)
5
6**********************/
7function drawDot(x,y,color,size){
8  document.write("<div style=’position: absolute; border:0;left: "+(x)+"; top: "+(y)+";background-color:"+color+"; width:"+size+"; height:"+size+"; overflow:hidden;’></div>");
9}
那么div是否真的比table快呢?我做了個(gè)簡(jiǎn)單的js測(cè)試程序段,這個(gè)程序段同樣可用于更多的js腳本性能測(cè)試,代碼如下:
//timer.js

 1/**//***********計(jì)時(shí)器****************
 2startime()       開(kāi)始計(jì)時(shí)
 3endtime()        結(jié)束計(jì)時(shí)并輸出時(shí)間
4
 5*********************************/
 6var ms;
 7//開(kāi)始計(jì)時(shí)
 8function starttime() {
 9 then = new Date();
10 ms= then.getTime();
11 
12}
13
14//結(jié)束計(jì)時(shí)
15function endtime() {
16        now = new Date();
17 ms=now.getTime()-ms;
18 ms=ms/1000;
19 alert("共用時(shí):"+ms+"秒");
20}
三、測(cè)試
構(gòu)建測(cè)試用例,我們用兩種方法,分別沿45度畫(huà)5百個(gè)點(diǎn),分別對(duì)所用時(shí)間計(jì)數(shù):
Ps:我的機(jī)器配置:方正t3200c筆記本電腦,p41.5的cpu,內(nèi)存384M。
Table實(shí)現(xiàn)的測(cè)試用例代碼:

 1<html>
 2<head>
 3</head>
 4<body>
 5<script src="timer.js">
 6</script>
 7<script src="dottable.js">
 8</script>
 9
10
11<script language="javascript">
12    starttime();
13    for(i=0;i<500;i++){
14        drawDot(1+i,1+i,"ff0000",1);
15    } 
16
17    endtime();
18</script>
19
20</body>
21</html>
運(yùn)行后返回時(shí)間:0.27秒
Div實(shí)現(xiàn)的測(cè)試用例代碼:

 1<html>
 2<head>
 3</head>
 4<body>
 5<script src="timer.js">
 6</script>
 7<script src="dotdiv.js">
 8</script>
 9
10
11<script language="javascript">
12    starttime();
13    for(i=0;i<500;i++){
14        drawDot(1+i,1+i,"ff0000",1);
15    } 
16
17    endtime();
18</script>
19
20</body>
21</html>
運(yùn)行后返回時(shí)間:0.11秒

顯然,div的運(yùn)行時(shí)間明顯快于table.測(cè)試成功。

 

作者:未知 | 文章來(lái)源:未知 | 更新時(shí)間:2007-12-15 16:32:47

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    搜集整理的javascript select操作的例子
    javascript中createTextRange如何使用
    如何使用JavaScript判斷瀏覽器類型代碼
    如何在JavaScript實(shí)現(xiàn)彈出層效果
    JAVASCRIPT如何判斷大小寫(xiě)字母
    J2EE開(kāi)發(fā)中的錯(cuò)誤處理
    javascript的function的總結(jié)
    Javascript訪問(wèn)html頁(yè)面的控件
    軟件技術(shù)
    · 開(kāi)發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開(kāi)發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開(kāi)發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開(kāi)發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來(lái)實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開(kāi)發(fā)過(guò)程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開(kāi)發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開(kāi)發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開(kāi)發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    陆河县| 兴隆县| 岐山县| 惠安县| 阜城县| 友谊县| 乌鲁木齐市| 方正县| 施甸县| 桐柏县| 湘阴县| 安塞县| 宁蒗| 天峨县| 靖西县| 从化市| 凤山县| 高唐县| 东乡县| 太康县| 闵行区| 澄江县| 乌什县| 吉水县| 灵寿县| 丹东市| 磴口县| 娱乐| 安化县| 珲春市| 麦盖提县| 游戏| 上饶县| 册亨县| 崇阳县| 抚顺市| 县级市| 彩票| 安宁市| 长兴县| 微山县|