我再次尝试了主题和装饰,并尝试为qx.ui.decoration.MLinearBackgroundGradient实现更好的Decorator-Mixin,它不仅具有开始和结束颜色和位置,而且可以获得一组颜色来设置标签样式这个:
在我的测试应用程序中,这个工作非常好,但我不认为它是一种优雅的方式,因为样式的值[“background-image”]的正则表达式。 但因为这是一个Mixin,我无法继承MLinearBackgroundGradient。
我应该将代码从MLinearBackgroundGradient复制到我的自定义mixin并增强我需要的代码和属性吗?这将是某种代码重复。
您可以在Qooxdoo游乐场找到我正在进行的课程:Playground example of the mixin under construction
不幸的是我无法将整个示例复制到Playground,因为我得到像这样的愚蠢错误消息:GlobalError:无法在属性定义中没有“精炼”标志的情况下优化属性“textFillColor”!这个类:qx.ui.decoration.Decorator,原始类:qx.ui.decoration.Decorator。
我在开发领域没有遇到的错误。所以我只是在操场上复制并评论了mixin课程。
上面的图片是在我的自定义Decoration.js中用这种装饰制作的:
"myLabel": {
decorator: [
MExtendedLinearBackgroundGradient
],
style: {
colorPositionUnit: "px",
gradientStart: ["black", 20],
gradientSteps: [{ "green": "20px" }, { "blue": "40px" }, { "red": "60px" }, { "yellow": "80px" }],
gradientEnd: ["red", 100],
textFillColor: "transparent"
}
}
问候 瑞奇