var source = {}; function load_source(url,w,h,type){//返回圖片還是canvas this.canvas = document.createElement('canvas'); ... this.ctx =this.canvas.getContext('2d'); this.img = new Image(); this.img.onload = function () { this.ctx.drawImage(this.img,0,0); }.bind(this); this.img.src = url; if(type=='canvas') return this.canvas; else if(type=='img') return this.img}source.build = new load_source('http://ut.png',1024,1024,'canvas');source.lk = new load_source('http://ht.png',1024,1024,'canvas');function Map_interpret(){ this.init = function(){//初始化地圖 ... } this.render = function(){//初始化地圖 this.ctx.drawImage(source.lk,0,0); } }m = new Map_interpret();m.init();m.render();臨時寫的精簡的代碼可能會報小錯誤(思路是圖片畫到canvas里,再把這個canvas畫到另一個canvas里,并顯示),主要問題是為什么init方法里面的this.ctx.drawImage(source.build,0,0)畫出來的canvas不顯示,而render里的this.ctx.drawImage(source.lk,0,0);可以畫出來
3 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
this.img.onload = function () {
this.ctx.drawImage(this.img,0,0); }.bind(this); this.img.src = url;if(type=='canvas') return this.canvas;else if(type=='img') return this.img
我感覺是這的問題,你確定這樣寫走到return的時候已經onload了?意思就是你返回canvas的時候還沒有調用onload中的drawInage方法嘞;
把判斷和返回放到onload函數中試試看
this.img.onload = function () {
this.ctx.drawImage(this.img,0,0); if(type=='canvas') return this.canvas;else if(type=='img') return this.img }.bind(this); this.img.src = url;
- 3 回答
- 0 關注
- 1045 瀏覽
添加回答
舉報
0/150
提交
取消