【问题标题】:Openlaszlo colorTransform IssueOpenlaszlo colorTransform 问题
【发布时间】:2012-11-14 11:37:35
【问题描述】:

我正在使用颜色转换在 OL 3.3 中使用此代码在视图上设置颜色,这工作得非常好。

obj.setColorTransform({ab: 0, aa: 100, 
                                bb: b-rB, ba: 100, 
                                gb: g-rG,  ga: 100, 
                                rb: r-rR,  ra: 100}); 

但是当我将它升级到 5.0 swf 运行时时我遇到了问题

obj.setAttribute('colortransform',{ab: 0, aa: 100, 
                                bb: b-rB, ba: 100, 
                                gb: g-rG,  ga: 100, 
                                rb: r-rR,  ra: 100});  

这里的obj是这种格式的视图,

  <view name="borders" 
              width="${parent.bg.width}"
              height="${parent.bg.height}" 
              y="10">
           <simplelayout axis="x"/>
           <view name="left" 
                 resource="border_left" 
                 stretches="height" 
                 height="${parent.height}" 
                 x="5" 
                 y="1">
              </view>
           <view name="middle" 
                 resource="border_mid" 
                 y="1"
                 stretches="width" 
                 height="${parent.height - 2}" 
                 width="${parent.width - parent.left.width - parent.right.width}">
           </view>
           <view name="right" 
                 resource="border_right" 
                 stretches="height" 
                 height="${parent.height}">
           </view>
        </view>

知道为什么这不起作用吗?

【问题讨论】:

    标签: migration openlaszlo lzx


    【解决方案1】:

    API 发生了变化,setColorTransform({}) 方法已被弃用,取而代之的是 .setAttribute('colortransform', {})。属性键现在是 redMultiplierredOffset,而不是 rarb。请参阅下面引用的相应文档部分。

    API 的另一个变化是值。引用setColorTransform()的文档:

    字典有以下可能的键: o.ra:百分比 alpha 对于红色分量(-100 到 100); o.rb:红色分量的偏移量(-255 至 255); o.ga:绿色成分的百分比 alpha(-100 到 100); o.gb:绿色分量的偏移量(-255 到 255); o.ba:百分比 alpha 对于蓝色分量(-100 到 100); o.bb:蓝色分量的偏移量 (-255 到 255); o.aa:总体 alpha 百分比(-100 到 100); o.ab: 总偏移量(-255 到 255);

    将其与视图的 colortransform 属性的文档进行比较:

    字典有以下可能的键:o.redMultiplier: 红色分量的乘数(0 到 1)默认为 1 o.redOffset: 红色组件的偏移量(-255 到 255)默认为 0 o.greenMultiplier:绿色分量的乘数(0到1)默认为 1 o.greenOffset:绿色分量的偏移量(-255 到 255),默认为 0 o.blueMultiplier:蓝色分量的乘数(0 到 1)默认为 1 o.blueOffset:蓝色分量的偏移量(-255 到 255)默认为 0 o.alphaMultiplier:alpha 分量的乘数(0 到 1)默认为 1 o.alphaOffset:alpha 分量的偏移量(-255 到 255)默认为 0

    从文档中可以看出,alpha 偏移的值范围从-100 to 100 更改为0 to 1。当您使用setAttribute 时,以下语法有效:

    var transformValues =
            {redMultiplier: 0 to 1,    redOffset: -255 to 255,
             greenMultiplier: 0 to 1,  greenOffset: -255 to 255,
             blueMultiplier: 0 to 1,   blueOffset: -255 to 255,
             alphaMultiplier: 0 to 1,  alphaOffset: -255 to 255}
    this.setAttribute('colortransform', transformValues);
    

    【讨论】:

    • 这是一个令人困惑的 API 更改,很容易错过这个更改。两种方法的文档都应说明 alpha 的值范围从百分比更改为 0 to 1
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多