2019年3月25日 星期一

LimeJS : 解決 CanvasContext 無法立即繪圖

2019年3月25日 星期一
LimeJS 提供了 lime.CanvasContext 物件來動態的畫圖,但是之前發現有一個問題,如果不是剛建立好 CanvasContext 物件,如果緊接著在 context 中下的繪圖指令,並不會立即看到想畫的東西。這樣一來,就不能動態建立所需要的 CanvasContext 物件了,實在很不方便。

原本就在猜測,可能是因為 CanvasContext 物件還沒來得及在場景中完全建立好,就開始繪圖所產生指令下了,卻看不到圖的問題,今天想到一招,那就讓繪圖指令延遲一下下好了,例如,在百分之一秒後再執行繪圖指令:

如果原來是:

ctx.fillStyle = "#ff0000";
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(300, 0);
ctx.lineTo(300, 300);
ctx.lineTo(0, 300);
ctx.closePath();
ctx.fill();

就利用 setTimeout 來延遲繪圖指令:

setTimeout( function() {
ctx.fillStyle = "#ff0000";
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(300, 0);
ctx.lineTo(300, 300);
ctx.lineTo(0, 300);
ctx.closePath();
ctx.fill();
}, 10);

最後的 10 ,讓 funtion() 中的指令在 10/1000 秒後才執行。

至於要延遲多少時間,可以自行再調整。

先用這樣解決了眼前的問題,再看看有沒有更好的方法可用。



沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket