慕森王
2019-03-21 18:15:49
為何從新設(shè)置points屬性然后調(diào)用draw方法不會(huì)清空之前的繪制呢?點(diǎn)擊之后變成了兩條線(xiàn)<div id="container"></div><script src="./lib/jquery/dist/jquery.js" charset="utf-8"></script><script src="./lib/konva/konva.js" charset="utf-8"></script><script type="text/javascript"> $(function() { const stage = new Konva.Stage({ container: '#container', width: window.innerWidth, height: window.innerHeight, }); const layer = new Konva.Layer(); const line = new Konva.Line({ points: [10, 10, 100, 100], stroke: 'black', strokeWidth: 3, }); line.on('click', event => { line.points([10, 10, 100, 10]); line.draw(); }); layer.add(line); stage.add(layer); });</script>
1 回答

達(dá)令說(shuō)
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)其實(shí)很簡(jiǎn)單,之所以設(shè)置了points屬性并調(diào)用draw方法不會(huì)清空之前的繪制,而是變成了兩條線(xiàn),是因?yàn)槟阍邳c(diǎn)擊的回調(diào)事件里調(diào)用的是line的draw(),而不是layer的draw(),所以layer不會(huì)重新繪制,而是又繪制了一個(gè)line,你可以把這段代碼
line.on('click', event => {
line.points([10, 10, 100, 10]);
line.draw();
});
改成下面的這段
line.on('click', event => {
line.points([10, 10, 100, 10]);
layer.draw();
});
添加回答
舉報(bào)
0/150
提交
取消