我正在使用EaselJS在JS中編寫一個簡單的遊戲。我儘量保持面向對象的一切,以保持遊戲狀態,EaselJS對象的狀態以及畫布上顯示的內容。我希望可以通過改變其屬性來改變畫布上顯示的形狀的筆觸顏色。我發現在文檔append()
here,但我無法得到它的工作。EaselJS:更新屬性更改的形狀顏色
這裏是我到目前爲止已經取得的成就:
形狀定義:
var bLetter = new createjs.Shape();
bLetter.graphics.append({exec: setPoweredState});
bLetter.graphics.moveTo(0, 0)
.lineTo(0, segSize * 2)
.arc(circSize, segSize * 2, circSize, Math.PI, Math.PI + 0.0001, true);
setPoweredState
功能 - 當我設置bLetter.powered = true
,線的顏色應改變:
setPoweredState = function(ctx, shape) {
if(shape.powered) {
shape.color = consts.COLOR_LINE_ACTIVE;
} else {
shape.color = consts.COLOR_LINE_INACTIVE;
}
shape.graphics.beginStroke(shape.color).setStrokeStyle(consts.STROKE_SIZE, 'round', 'round');
}
當我設置bLetter.powered = true
和我檢查bLetter.color
看來,該功能被執行 - bLetter.color
屬性更改。但是,畫布上的bLetter
對象未更新。更重要的是,它並沒有被繪製 - 可能我以錯誤的方式使用了append()
。我錯過了什麼?
BTW:我省略與在畫布上初始化createjs.Stage
並添加bLetter
,因爲它的孩子,我不認爲這是一個問題的代碼,形狀繪製正確,唯一的顏色不會改變。
這正是我想要的。另外,謝謝你回答爲什麼我的方法是無效的。沒有比圖書館創作者本人的回答更好的了;) – Wookie88