<!--Original source http://www.html5canvastutorials.com/tutorials/html5-canvas-image-loader/-->
<canvas id="myCanvas" width="400" height="400"></canvas>
JQuery 1.9.1
$(function(){ function loadedImg(sources,callback){//sources=圖片素材來源物件,callback=處理圖片載入的callback function var imgs={};//建立imgs物件 var loadedImgs=0;//預設已載入的圖片數為0 var imgsTotal=0;//預設載入圖片總數為0 for(var src in sources){//遍歷sources物件,src初始值為0 imgsTotal++;//每執行一次imgsTotal+1 }; for(var src in sources){//遍歷sources物件,src初始值為0 imgs[src]=new Image();//創建<img>物件 imgs[src].onload=function(){//當圖片載入後 if(++loadedImgs>=imgsTotal){//loadedImg先+1,當以載入圖片>=圖片總數時 callback(imgs);//將imgs物件放入callback function }; }; imgs[src].src=sources[src];//將sources物件的圖片連結擷取出來給imgs }; }; var cxt=$('#myCanvas')[0].getContext('2d'); var imgLink={//存有圖片路徑的物件 photo1:'https://c2.staticflickr.com/1/437/18634993201_10aa53d5ef_k.jpg', photo2:'https://c3.staticflickr.com/1/469/18010094874_0b037901e4_k.jpg' }; loadedImg(imgLink,function(i){//這邊的function(i)等於callback(imgs) cxt.drawImage(i.photo1,10,10,200,200);//創建第一張圖,用i.photo來連結使用的<img> cxt.drawImage(i.photo2,10,220,200,200);//創建第二張圖,用i.photo來連結使用的<img> }); });
主要使用function :
- loadedImg() - 此function的作用為,當圖片都載入完成後,才繪製canvas裡的圖片。
Result
JSFiddle
https://jsfiddle.net/MickeyChen/qs6erbqL/
沒有留言:
張貼留言