Мы создаем интерфейс для игры.
Интерфейс имеет меню с вкладками в нижней части экрана, где каждая вкладка отображает различные аспекты объекта (называемого узлом).
Когда вы нажимаете на одну из этих частей, она становится основной, и мы загружаем ее детали в XML, включая все ее подузлы и родительские узлы, а затем соответствующим образом обновляем отображение вкладок, или, по крайней мере, это то, что мы хотели бы нравится случаться.
Что имеем:
MainInterface.mxml
<s:Application...
<fx:Script>
<![CDATA[
public var currentNode:Node = new Node();
protected function selectNodeHandler(event:Event):void
{
loader = new URLLoader(new URLRequest(ourWebSite + event.target.id + ".xml"))
//the xmlDownloaded function below is what changes the contents of currentNode
loader.addEventListener(Event.COMPLETE, xmlDownloaded);
...
<s:SkinnableContainer id="dashBoard"..
<mx:TabNavigator...
<s:NavigatorContent...
<s:SkinnableDataContainer ...
dataProvider="{currentNode.children}"
itemRenderer="renderers.NodeRenderer">
Node.as (valueObjects.Node)
...
[Bindable] public var id:String;
[Bindable] public var name:String;
[Bindable] public var children:ArrayCollection = new ArrayCollection();
[Bindable] public var parents:ArrayCollection = new ArrayCollection();
...
NodeRenderer.mxml (renderers.NodeRenderer)
<s:ItemRenderer ... click="nodeRenderer_clickHandler(event)">
<fx:Script>
<![CDATA[
protected function nodeRenderer_clickHandler(event:MouseEvent):void
{
var eventObject:Event = new Event ("nodeSelected");
dispatchEvent(eventObject);
}
...
<s:Label text = "{data.name}"/>
Мы попытались добавить прослушиватель событий для «selectNode» в dashBoard: SkinnableContainer, который вы видите выше, но, похоже, он не хотел его брать. Мы подозреваем, что это связано с тем, что dashBoard происходит из компонента spark, а диспетчер «selectNode» находится в наших собственных пользовательских компонентах, но мы не были уверены ... в любом случае это то, что ассистент кода показывал так, как нам пришлось запишите это от руки.
Мы не уверены, как подобрать события в отладчике FlashBuilder 4, поэтому у нас возникли проблемы с определением того, что происходит не так. По сути, когда кто-то нажимает на метку дочернего или родительского узла (который отображается itemRenderer), мы хотим, чтобы URLRequest отправлялся на наш веб-сайт с URL-адресом, специфичным для выбранного узла. Затем мы хотим, чтобы URLLoader прослушивал возврат, который обновит публичную переменную 'currentNode', когда загрузчик вызывает xmlDownloaded.
Если бы вы могли уточнить, как следует отправлять событие click, что должно ожидать его, а затем отправлять URLRequest и где должен быть URLLoader, который прослушивает возвращаемые данные XML, который решит наши проблемы. В качестве альтернативы, если есть лучший (более традиционный) способ сделать то, что мы пытаемся сделать, это также поможет, поскольку мы относительно новы в actionscript и flex.