亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么init方法畫不出來canvas而render可以畫出來

為什么init方法畫不出來canvas而render可以畫出來

嚕嚕噠 2018-07-18 14:13:37
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;


查看完整回答
反對 回復 2018-07-22
  • 3 回答
  • 0 關注
  • 1045 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號