Как я могу ввести словарь, используя петрушку в as3? - PullRequest
2 голосов
/ 29 августа 2011

В моем контейнере петрушки я создаю экземпляр объекта 'A', который содержит словарь (flash.utils.Dictionary).

Я бы хотел создать этот словарь, используя петрушку, и вставить его в 'A'. Эта структура пар словаря: key = id объекта 'B', значение = 'B' где объект 'B' также является объектом, который определен и создан с использованием петрушки (так что в основном структура пар - это и идентификатор объекта в качестве ключа, и сам объект в качестве значения).

Теперь у меня нет проблем с созданием «A» и «B», но, похоже, я не могу найти правильный способ создания этого словаря с использованием петрушки или добавления его к «A».

Любая помощь высоко ценится!

Заранее спасибо, Йогев

1 Ответ

3 голосов
/ 03 сентября 2011

Вы можете сделать это в context.mxml:

<mx:Object xmlns:mx="http://www.adobe.com/2006/mxml" 
           xmlns="http://www.spicefactory.org/parsley">

    <mx:Script>
            <![CDATA[
                import com.example.ObjectToInjectX; 
                import com.example.ObjectToInjectY;
                import com.example.MyExampleObject;

            ]]>
    </mx:Script>

    <!-- The class to inject the map into, just declare -->
    <Object type="{MyExampleObject}" id="myExampleObject" />

    <!-- Objects to inject into the Dictionary -->
    <Object type="{ObjectToInjectX}" id="objectToInjectX" />
    <Object type="{ObjectToInjectY}" id="objectToInjectY" />

    <!-- The Dictionary -->
    <Object type="{Dictionary} id="myDictionaryToInject" />
        <DynamicProperty name="itemX" idRef="objectToInjectX" />
        <DynamicProperty name="itemY" idRef="objectToInjectY" />
    </Object>

</mx:Object> 

Затем просто в классе, который вы хотите добавить, выполните следующее:

public class MyExampleObject
{
     private var _myDictionaryToInject:Dictionary;

     [Inject(id="myDictionaryToInject")]
     public function set myDictionaryToInject( myDictionaryToInject:Dictionary ):void
     {
            _myDictionaryToInject = myDictionaryToInject;
     }
}
...