Объявление словаря в MXML, возможно ли? - PullRequest
0 голосов
/ 02 июня 2009

В MXML можно объявлять экземпляры объектов даже для динамических объектов, например так:

<mx:Object>
    <mx:foo>bar</mx:foo>
    <mx:bar>foo</mx:bar>
</mx:Object>

Можно ли сделать то же самое с классом Dictionary без использования некоторого класса-оболочки MXML?

Ответы [ 3 ]

6 голосов
/ 02 июня 2009

Я не совсем уверен, что понимаю вопрос, но если вы спрашиваете, можете ли вы объявить словарь в MXML, да, вы можете; Вот некоторый код, демонстрирующий Словарь, объявленный в MXML, вместе с формой, показывающей, как можно динамически добавлять элементы в словарь:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:utils="flash.utils.*" creationComplete="onCreationComplete()">

    <mx:Script>
        <![CDATA[

            private function onCreationComplete():void
            {
                showContents();
            }

            private function onBtnClick():void
            {
                addProperty();
                showContents();
            } 

            private function showContents():void
            {
                txt.text = "";

                for (var k in d) 
                    txt.text += k + ": " + d[k] + "\n"
            }

            private function addProperty():void
            {
                d[pname.text] = pvalue.text;

                pname.text = ""; 
                pvalue.text = "";

                pname.setFocus();
            }

        ]]>
    </mx:Script>

    <mx:VBox>
        <mx:Label text="Dictionary Contents" />
        <mx:TextArea id="txt" width="350" height="200" />
        <mx:HBox>
            <mx:VBox>
                <mx:Label text="New Property Name" />
                <mx:TextInput id="pname" text="pets" />
            </mx:VBox>
            <mx:VBox>
                <mx:Label text="New Property Value" />
                <mx:TextInput id="pvalue" text="dog, cat, fish" />
            </mx:VBox>
        </mx:HBox>
        <mx:Button id="btn" label="Add" click="onBtnClick()" />
    </mx:VBox>

    <utils:Dictionary id="d">
        <utils:fname>Chris</utils:fname>
        <utils:lname>Nunciato</utils:lname>
    </utils:Dictionary>

</mx:Application>

Надеюсь, это поможет! Если я полностью упустил суть, отправьте ответ, и я посмотрю, смогу ли я помочь.

1 голос
/ 10 июня 2009

Это возможно, если вы импортируете правильное пространство имен

    <mx:Application ... xmlns:utils="flash.utils.*">
        <utils:Dictionary>
            <utils:foo>bar</utils:foo>
            ...
        </utils:Dictionary>
        ...

Но я не вижу веских причин для этого. Преимущество словаря перед обычным объектом (или ), которое вы обычно используете, заключается в том, что вы можете использовать в качестве ключа другие объекты, кроме String. Но вы не можете написать нестроковый ключ в MXML.

Другими словами: да, вы можете создать его, но нет смысла.

0 голосов
/ 02 июня 2009

Нет, я не думаю, что словарь привязан к MXML.

Вам действительно нужен словарь для того, чего вы хотите достичь?

...