저는 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
개체는 업데이트되지 않습니다. 게다가, 전혀 그려지지 않았습니다. 아마 append()
을 부정확하게 사용하고있을 것입니다. 내가 뭘 놓치고 있니?
BTW : 캔버스에 createjs.Stage
초기화 코드를 사용하지 않고 자식으로 bLetter
을 추가하면 문제가 아닌 모양이 올바르게 그려 지므로 색상 만 변경되지 않습니다.
그건 내가 원했던 것입니다. 또한 내 접근 방식이 유효하지 않은 이유에 대해 답변 해 주셔서 감사합니다. 도서관 창작자 자신의 답변보다 나은 것은 없습니다.) – Wookie88