欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

在試XML-RPC(這回畫個圖吧)

系統 2050 0

上次那個“小試”實在太不過癮,這次我們從服務器上定時取出數據,然后用javascript在瀏覽器上畫個圖。
這回我就不具體解釋了,就貼一下程序啦!!

先來個圖吧:
xml-rpc3.jpg

?用javascript畫圖,當然不能空手畫了,找個庫吧。wz_jsgraphics,詳細資料看這里( http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm#download )很酷的一個javascript圖形庫,當然除了畫圖還有別的,不妨試試(我一年前發現的這東東,現實才第一次用 )用起來跟用c畫圖差不多。
?首先當然還是建個服務的類:

public ? class ?DataService? {

????
public ? double ?getData() {
????????Random?r?
= ? new ?Random();
????????
return ? 20 + ( 10 * r.nextDouble() - 5 );
????}

????
????
public ? static ? void ?main(String[]?args) {
????????DataService?ds?
= ? new ?DataService();
????????
for ( int ?i = 0 ;i < 20 ;i ++ ) {
????????????System.
out .println(ds.getData());
????????}

????}

}

Servlet上篇文章里有,我這里就不寫了。
然后是一個html頁面。
< html >
< head >
< title > XML-RPC </ title >
< script? type ="text/javascript" ?src ="./js/init.js" ></ script >
< script? type ="text/javascript" ?src ="./js/lib/urllib.js" ></ script >
< script? type ="text/javascript" ?src ="./js/lib/xml.js" ></ script >
< script? type ="text/javascript" ?src ="./js/lib/xmlrpc.js" ></ script >
< script? type ="text/javascript" ?src ="./js/hello.js" ></ script >
< script? type ="text/javascript" ?src ="./js/wz_jsgraphics.js" ></ script >
</ head >
< body? onload ="init()" >
< input? type ="button" ?id ="do3" ?value ="start" ?onclick ="startTimer()" />
< input? type ="button" ?id ="do3" ?value ="stop" ?onclick ="stopTimer()" />
< input? type ="text" ?id ="result" ? />
< div? id ="canvas" ?style ="border:1px?solid?#6666FF;?position:relative;height:300px;width:500;?background-color:#CCCCCC" ></ div >
< textarea? id ="debug" ?rows ="10" ?name ="S1" ?cols ="69" ></ textarea >
</ body >
</ html >
重點是這個div,我們用wz_jsgraphics畫圖就是往這上面畫,他的作用相當于很多畫圖系統的canvas.其實主要是提供參考坐標。
然后就是重點了hello.js(懶得該名字了)
var ?timerid;
var ?dataservice;
var ?g;
var ?xPoints? = ? new ?Array();
var ?y1Points? = ? new ?Array();
var ?y2Points? = ? new ?Array();
var ?length = 0 ;
startTimer?
= ? function (){
????init();
????
if (timerid == null ){
????????timerid?
= ?window.setInterval( " doTask() " , 800 );?
????}
}

stopTimer?
= ? function (){
????window.clearInterval(timerid);
????timerid
= null ;
}

function ?init(){
????
var ?xmlrpc = null ;
????
try {
????????xmlrpc?
= ?importModule( " xmlrpc " );
????}
catch (e){
????????reportException(e);
????????
throw ? " importing?of?xmlrpc?module?failed. " ;
????}
????
????
var ?addr? = ? " http://localhost:8080/Rpc/RpcServer " ;
????
var ?methods? = ?[ " DataService.getData " ];
????
????
try {
????????dataservice?
= ? new ?xmlrpc.ServiceProxy(addr,?methods);
????}
catch (e){
????????
var ?em;
????????
if (e.toTraceString){
????????????em?
= ?e.toTraceString();
????????}
else {
????????????em?
= ?e.message;
????????}
????????alert(
" Error?trace:?\n\n " ? + ?em);
????}
????g?
= ? new ?jsGraphics( " canvas " );
????????????
}


function ?doTask(){
????
var ?rslt? = ?dataservice.DataService.getData();
????document.getElementById(
" result " ).value = rslt;
????
var ?y1? = ? 145 * rslt / 20 ;
????
var ?rslt? = ?dataservice.DataService.getData();
????
var ?y2? = ? 145 * rslt / 20 ;
????
if (length < 44 ){
????????y1Points[length]
= y1;
????????y2Points[length]
= y2;
????????
for ( var ?i = 0 ;i < y1Points.length;i ++ ){
????????????xPoints[i]?
= ? 30 + 10 * i;
????????}
????????length
++ ;
????}?
else ?{
????????
for ( var ?i = 0 ;i < y1Points.length - 1 ;i ++ ){
????????????y1Points[i]?
= ?y1Points[i + 1 ];
????????????y2Points[i]?
= ?y2Points[i + 1 ];
????????}
????????y1Points[length]
= y1;
????????y2Points[length]
= y2;
????}
????g.clear();
????drawbg();
????drawline();
????debug();
}

function ?drawline(){
????g.setStroke(
2 );
????
for ( var ?i = 1 ;i <= y1Points.length;i ++ ){
????????g.setColor(
" yellow " );
????????g.drawLine(xPoints[i
- 1 ],y1Points[i - 1 ],xPoints[i],y1Points[i])
????????g.setColor(
" red " );
????????g.drawLine(xPoints[i
- 1 ],y2Points[i - 1 ],xPoints[i],y2Points[i])
????}
????
// g.drawPolyline(xPoints,yPoints);
????g.paint();
}

function ?drawbg(){
????g.setStroke(
2 );
????g.setColor(
" maroon " );
????g.drawLine(
30 , 270 , 470 , 270 ); // x軸
????g.drawLine( 30 , 270 , 30 , 10 ); // y軸
????g.drawLine( 30 , 10 , 26 , 14 ); // x軸箭頭
????g.drawLine( 30 , 10 , 34 , 14 );
????g.drawLine(
470 , 270 , 466 , 266 ); // y軸箭頭
????g.drawLine( 470 , 270 , 466 , 274 );
????
????g.setColor(
" #000000 " ); // 畫刻度
???? var ?x? = ? 30 ;
????
for ( var ?y? = ? 270 ;y? >= ? 20 ;y? = ?y? - ? 50 ?){
????????g.drawLine(x
- 1 ,y,x + 1 ,y);
????}
????g.setStroke(
1 );
????g.drawLine(
30 , 145 , 470 , 145 ); // 中心線
????
????g.drawString(
" 0 " , 23 , 271 );
????g.drawString(
" Time " , 430 , 271 );
????g.paint();
}

function ?debug(){
????
var ?debug? = ? "" ;
????
for ( var ?i = 0 ;i < xPoints.length;i ++ ){
????????debug?
+= ? " x: " + i + " ? " + xPoints[i] + " ?y1: " + i + " ? " + y1Points[i] + " ?y2: " + i + " ? " + y2Points[i] + " \n " ;
????}
????document.getElementById(
" debug " ).value = debug;

}
其實沒什么復雜的,不過就是javascript調試起來太費事了。錯又不知道錯在哪里。還是喜歡java,調試起來容易多了!
其中一些算法我做的也不太好,有很多需要改進的地方。主要就是如何把從其服務器得到的元數據轉換成畫圖用的數據(兩個數組,存放二維坐標集)。
我畫了兩條線,一條線太單薄了,呵呵。兩條線用的x軸坐標相同(其實是時間),所以就用一個數組了。

在試XML-RPC(這回畫個圖吧)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品福利视频手机免费观看 | 色午夜 | 91成人在线免费视频 | 久久国产精品免费网站 | 欧美伊人久久 | 久久毛片网站 | 开心久久网 | 欧美一区二区三区gg高清影视 | 人人舔人人爱 | 欧美一区二区三区爽大粗免费 | 欧美日韩一区在线 | 正在播放国产精品 | 久久国产精品一区 | 成人涩涩屋福利视频 | 在线视频观看国产 | 中文字幕在线免费观看 | 一级毛片在线完整免费观看 | 李欣汝 | 国产成人一区二区三区 | 午夜资源在线 | 久久精品亚洲成在人线av网址 | 91看片官网| 91精品福利 | 成人国产精品一区二区毛片在线 | pornoⅹxxxxhd麻豆 | 精品久久久久久久久久 | 2015小明看日韩成人免费视频 | 夜夜夜操 | 久久中文字幕不卡一二区 | 欧美日韩一区二区三区免费视频 | 日本高清色本在线www | 性夜影院爽黄e爽痛轻点www | 精品久久久久久亚洲 | 5月婷婷6月丁香 | 在线观看国产wwwa级羞羞视频 | 亚洲成人激情av | 国产精品a久久久久 | 亚洲精品第一综合99久久 | 国产欧美日本亚洲精品五区 | 一区二区三区欧美在线 | 草草线在成年免费视频网站 |