Показать сообщение отдельно
Старый 15.04.2008, 15:53
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 2  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
Все зависит от конкретной структуры документа XML.
В самом общем виде задача сводиться к обходу этого самого xml в цикле.

Например, если xml будет вида:

<menu>
<item id="1" label="item 1" url="somepage1.html" />
<item id="2" label="item 2" url="somepage2.html" />
<item id="3" label="item 3" url="somepage3.html" />
</menu>

То код должен быть примерно таким:

Код:
 
import mx.utils.Delegate;
var menuXML:XML;
var menuItems: Array = new Array();
menuXML = new XML(); menuXML.ignoreWhite = true; menuXML.onLoad = Delegate.create(this, menuIsLoaded);
menuXML.load("menu.xml"); function menuIsLoaded():Void { for(var i = 0; i < menuXML.firstChild.childNodes.length; i++){ var tempItem: MenuItem = new MenuTem(); tempItem._x = 10; tempItem._y = 10+i*20; tempItem.setLabel(menuXML.firstChild.childNodes[i].attributes.label); tempItem.setAction(menuXML.firstChild.childNodes[i].attributes.url); menuItems.push(tempItem); } }
Далее нужен символ MenuItem, его нужно создать во Flash IDE и происвоить его полю класс MenuItem. Добавить к нему динамическое текстовое поле и в панели своуйств в поле var написать tlabel, и затем собственно написать сам класс MenuItem

Код:
 
import mx.utils.Delegate;
 
class MenuItem extends MovieClip {
private var tlabel:String; private var _action:String;
private function onLoad():Void{ this.onRollOver = Delegate.create(this, handleMouseOver); this.onRollOut = Delegate.create(this, handleMouseOut); this.onRelease= Delegate.create(this, handleMouseRelease); }
public function MenuItem(){ }
public function setLabel(inlabel:String):Void{ tlabel = inlabel; }
public function setAction(inaction:String):Void{ _action = inaction; }
private function handleMouseOver():Void{ }
private function handleMouseOut():Void{ }
private function handleMouseRelease():Void{ getURL(_action); }
}


Вроде так будет работать


Последний раз редактировалось alekslitvinenk; 11.05.2008 в 17:18.