EaselJS:在属性改变时更新形状颜色
EaselJS: Update shape color on property change
我正在使用EaselJS编写一个简单的JS游戏。我试图保持一切面向对象的保持同步状态的游戏,EaselJS对象的状态和我的画布上显示的东西。我想有可能通过改变其属性来改变在画布上显示的形状的笔触颜色。我在这里找到了文档append()
,但是我不能让它工作。
这是我到目前为止所取得的成绩:
形状定义:
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
作为它的孩子的代码,我不认为这是一个问题,形状是正确绘制的,只有颜色不会改变。
问题是您不断地将新的stroke/stroke样式命令附加到图形队列的末尾,因此它们对前面的路径没有影响。
在我看来,最简单的方法是像Lanny建议的那样保存命令,并在setPoweredState
方法中修改其样式。
与其使用append
,不如考虑只存储用于修改的命令。
这是我回答的另一个问题,概述了它是如何工作的:在形状中注入新的描边颜色,这里是一篇博客文章:http://blog.createjs.com/new-command-approach-to-easeljs-graphics/
基本上,您可以存储任何命令,然后稍后更改其属性:
var cmd = shape.graphics.beginFill("red").command;
shape.graphics.otherInstructionsHere();
// Later
cmd.style = "blue";
下面是示例代码中使用的填充命令的文档链接:http://createjs.com/docs/easeljs/classes/Graphics.Fill.html
- 通过Ember颜色选择器更新SCSS变量
- 手动更新引导程序颜色选择器
- 动态更新breadcrumb&高亮显示活动颜色
- c3js - 使用 chart.load() 使用颜色数组更新图表颜色
- 如何更新 C3.js图形线宽和刻度颜色
- DC.js 应用过滤器后热图颜色范围未更新
- 更新 IE10 固定网站的后退/前进按钮的颜色而不刷新
- 美国地图拉菲尔插件自动更新和动态填充颜色
- 动态更新谷歌地理图表的颜色
- Jquery 数据表更新单元格文本值和颜色
- 谷歌地图多边形在设置选项后不更新颜色
- Flotr2,图形上的颜色已更改,图例不更新
- 用新值更新JQVMap-map(颜色更改)
- 代码更新颜色,但不更新实际文本
- AJAX数据库更新与CSS按钮颜色改变使用Codeigniter
- 尝试创建和更新一个随机颜色的表
- ASP.在没有回发或更新面板的情况下单击时更改链接按钮的颜色
- 更新ExtJS 6图表中的图例颜色
- 在JavaScript中快速绘制/更新二维正方形数组颜色的方法
- 传单.js choropleth示例-基于单独的数据文件更新颜色