【问题标题】:Programmatically Detecting Valid Style Properties In Flex以编程方式检测 Flex 中的有效样式属性
【发布时间】:2010-06-08 22:17:15
【问题描述】:

如果我想知道一个对象是否有特定的属性,我可以这样编码:

if (SomeObject.hasOwnProperty('xyz')) {
  // some code
}

但有些样式在设计时伪装成属性,例如 Button.color... 我如何知道哪些样式属性在运行时有效?即:getStyle/setStyle 的 hasOwnProperty 等价物是什么?

换句话说,我怎么知道一个对象是否有一个特定的样式变量...当我写的时候:

MyButton.setStyle('qsfgaeWT','-33');

它不会完成任何事情,但它也不会出错。我如何以编程方式知道“qsfgaeWT”不是“按钮”的有效样式??

【问题讨论】:

    标签: apache-flex flash actionscript-3 actionscript air


    【解决方案1】:

    setStyle 因样式属性无效而静默失败。您可以在设置后尝试检查样式属性:

    MyButton.setStyle('qsfgaeWT','-33');
    if (MyButton.getStyle('qsfqaeWT') == "-33") {
        // Not valid
    } else {
        // valid
    }
    

    【讨论】:

    • @Joshua:在浏览器样式声明对象中,可以使用(Javascript)"propertyName" in CSSStyleDeclaration。 AFAIK,ActionScript 仅公开了 getStyle() 方法来获取样式值,因此无法使用 in 运算符进行检测。
    • 这行不通!如果随后调用 getStyle,则调用 MyButton.setStyle('qsfgaeWT','-33'), '-33' 将返回!
    • @Joshua:嗯,等有时间我会再研究一下。
    【解决方案2】:

    displayObject 是添加到舞台的 Button。

    var value:* = displayObject.getStyle("borderColor");
    trace( StyleManager.isValidStyleValue(value).toString() );  // outputs true
    value = displayObject.getStyle("qwerty");
    trace( StyleManager.isValidStyleValue(value).toString() );  // outputs false
    value = displayObject.getStyle("color");
    trace( StyleManager.isValidStyleValue(value).toString() );  // outputs true
    

    【讨论】:

    • StyleManager.isValidStyleValue 如果将getStyle() 方法调用返回的值传递给此方法,则如果设置了样式则返回true,如果未设置则返回false。它没有说明风格是废话livedocs.adobe.com/flex/3/langref/mx/styles/…
    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2011-03-15
    • 2011-01-02
    相关资源
    最近更新 更多