无法再在 Flex 中使用 this[“propertyName”] 分配类属性值

发布于 2024-09-29 15:52:27 字数 612 浏览 4 评论 0原文

给定如下所示的动态或非动态类:

package {
  public class MyClass {
    public var myProperty:String;
    public var myBooleanProperty:Boolean;

    public function MyClass() {}
  }
}

Flex 3 允许您像这样向 myProperty 分配值:

myClassInstance["myProperty"] = "myValue";
myClassInstance["myBooleanProperty"] = true;

我定期解析 XML 以获取属性名称及其值,然后使用此技术更新相关类;但是,Flex 4 不再允许分配布尔属性。我没有解决方法。

如果跟踪结果:

trace(myClassInstance.myProperty) // Returns "myValue"
trace(myClassInstance.myBooleanProperty) // Returns null

有人可以解释发生了什么变化以及如何解决该问题吗?

Given a dynamic or non-dynamic class like the following:

package {
  public class MyClass {
    public var myProperty:String;
    public var myBooleanProperty:Boolean;

    public function MyClass() {}
  }
}

Flex 3 allows you to assign a value to myProperty like this:

myClassInstance["myProperty"] = "myValue";
myClassInstance["myBooleanProperty"] = true;

I regularly parse XML to get property names and their values then update correlated classes using this technique; however, Flex 4 no longer allows assigning the boolean property. I don't have a work-around.

If you trace the results:

trace(myClassInstance.myProperty) // Returns "myValue"
trace(myClassInstance.myBooleanProperty) // Returns null

Can someone explain what has changed and how to work-around the issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

可可 2024-10-06 15:52:27
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="application1_creationCompleteHandler(event)"
               >
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                var c:MyClass = new MyClass();
                c["myBooleanProperty"] = true;
                trace(c["myBooleanProperty"]);
            }

        ]]>
    </fx:Script>
</s:Application>

对于 Flex SDK 4.1,这会输出“true”。
您的代码中可能还有其他问题吗?

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="application1_creationCompleteHandler(event)"
               >
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                var c:MyClass = new MyClass();
                c["myBooleanProperty"] = true;
                trace(c["myBooleanProperty"]);
            }

        ]]>
    </fx:Script>
</s:Application>

This outputs "true" with the Flex SDK 4.1.
There may be something else wrong in your code?

╰ゝ天使的微笑 2024-10-06 15:52:27

您可以使用 Dictionary 类代替。

You can use Dictionary class instead.

甚是思念 2024-10-06 15:52:27

您是否尝试过这样做?

  myClassInstance.myBooleanProperty = true;

这实际上是 AS3 中为公共属性赋值的标准方法。

Have you simply tried to do this?

  myClassInstance.myBooleanProperty = true;

This is actually the standard way of assigning a value to a public property in AS3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文