Proste menu [XML][AS3]
Proste menu stworzone we flashu
Atuty:
- Pionowo położenie
- Edycja poprzez XML
- Możliwość rozbudowania menu o dodatkowe atrybuty
Listing
Nasz XML:
<? xml version="1.0" encoding="urf-8" ?>
<menu>
<item label="funkcje.net" redirect="http://www.funkcje.net" />
<item label="wp.pl" redirect="http://www.wp.pl" />
<item label="onet.pl" redirect="http://www.onet.pl" />
</menu>
We flashu tworzymy sobie prostokąt o wymiarach 150x50 px, robimy z niego MovieClipa, nazywamy go "menuItem", wchodzimy w niego i tworzymy w nim dynamiczne pole tekstowe o nazwie "label". Oczywiście nazwy podajemy bez " ".
Teraz przejdźmy do Actionscript:
//Tworzy loader
var loaderXML:URLLoader = new URLLoader();
var dataXML:XML;
var totalXML:Number;
//Ładuje NaszPlik.xml do loadera "loaderXML"
loaderXML.load(new URLRequest("NaszPlik.xml"));
//W wypadku, gdy plik zostanie załadowany zostanie wywołana funkcja showXML
loaderXML.addEventListener(Event.COMPLETE, showXML);
//W przeciwnym wypadku wywołana zostanie funkcja showError - proponuję tutaj dać jakąś informację np: Plik XML nie został załadowany... sprawdź coś tam.
loaderXML.addEventListener(IOErrorEvent.IO_ERROR, showError);
function showError(e:IOErrorEvent):void {
trace("plik xml nie został załadowany");
}
function showXML(e:Event):void {
dataXML = new XML(e.target.data);
totalXML = dataXML.lenght();
createMenu();
}
function createMenu():void {
for (var i:Number = 0; i<=totalXML; i++) {
//Tworzymy nowy obiekt, który się powiela z pętlą, ten obiekt to nasz zrobiony prostokąt razem z polem tekstowym
menuItems:menuItem = new menuItem;
//Dodajemy "dziecko"
addChild(menuItems);
//Ustawiamy label.text - czyli to co ma się nam wyświetlić w polu tekstowym
menuItems.label.text = dataXML.item[i].@label;
//Ustawiamy oś X
menuItems.x = 75;
//Ustawiamy oś Y przy czym robimy to tak, żeby było zależne od pętli
menuItems.y = (i * 50) + 5;
//Pokazuje łapkę na MovieClipie
menuItems.buttonMode = true;
//Czasami jest problem w połączeniu MC + TextField i to właśnie poprawia nasze klikanie
menuItems.mouseChildren = false;
menuItems.mouseEnabled = true;
//Dodajemy listenera z wywoładniem funkcji
menuItems.addEventListener(MouseEvent.CLICK, menuItemsClick);
}
}
function menuItemsClick(e:MouseEvent):void {
//Zmienna pobierająca z pliku xml dane do przekierowania, w nawiasie kwadratowym e.target.name wyprowadzi liczbę, możecie sprawdzić dokładniej co poda dając trace(redi);
var redi = dataXML.item[e.target.name].@redirect;
//Tworzy URLRequest potrzebny do navigateToURL
var targetURL:URLRequest = new URLRequest(redi);
//Przekierowanie po prostu, targetURL odpowiada za to gdzie ma się przekierować, "_self" to rodzaj przekierowania
navigateToURL(targetURL, "_self");
}
<? xml version="1.0" encoding="urf-8" ?>
<menu>
<item label="funkcje.net" redirect="http://www.funkcje.net" />
<item label="wp.pl" redirect="http://www.wp.pl" />
<item label="onet.pl" redirect="http://www.onet.pl" />
</menu>
We flashu tworzymy sobie prostokąt o wymiarach 150x50 px, robimy z niego MovieClipa, nazywamy go "menuItem", wchodzimy w niego i tworzymy w nim dynamiczne pole tekstowe o nazwie "label". Oczywiście nazwy podajemy bez " ".
Teraz przejdźmy do Actionscript:
//Tworzy loader
var loaderXML:URLLoader = new URLLoader();
var dataXML:XML;
var totalXML:Number;
//Ładuje NaszPlik.xml do loadera "loaderXML"
loaderXML.load(new URLRequest("NaszPlik.xml"));
//W wypadku, gdy plik zostanie załadowany zostanie wywołana funkcja showXML
loaderXML.addEventListener(Event.COMPLETE, showXML);
//W przeciwnym wypadku wywołana zostanie funkcja showError - proponuję tutaj dać jakąś informację np: Plik XML nie został załadowany... sprawdź coś tam.
loaderXML.addEventListener(IOErrorEvent.IO_ERROR, showError);
function showError(e:IOErrorEvent):void {
trace("plik xml nie został załadowany");
}
function showXML(e:Event):void {
dataXML = new XML(e.target.data);
totalXML = dataXML.lenght();
createMenu();
}
function createMenu():void {
for (var i:Number = 0; i<=totalXML; i++) {
//Tworzymy nowy obiekt, który się powiela z pętlą, ten obiekt to nasz zrobiony prostokąt razem z polem tekstowym
menuItems:menuItem = new menuItem;
//Dodajemy "dziecko"
addChild(menuItems);
//Ustawiamy label.text - czyli to co ma się nam wyświetlić w polu tekstowym
menuItems.label.text = dataXML.item[i].@label;
//Ustawiamy oś X
menuItems.x = 75;
//Ustawiamy oś Y przy czym robimy to tak, żeby było zależne od pętli
menuItems.y = (i * 50) + 5;
//Pokazuje łapkę na MovieClipie
menuItems.buttonMode = true;
//Czasami jest problem w połączeniu MC + TextField i to właśnie poprawia nasze klikanie
menuItems.mouseChildren = false;
menuItems.mouseEnabled = true;
//Dodajemy listenera z wywoładniem funkcji
menuItems.addEventListener(MouseEvent.CLICK, menuItemsClick);
}
}
function menuItemsClick(e:MouseEvent):void {
//Zmienna pobierająca z pliku xml dane do przekierowania, w nawiasie kwadratowym e.target.name wyprowadzi liczbę, możecie sprawdzić dokładniej co poda dając trace(redi);
var redi = dataXML.item[e.target.name].@redirect;
//Tworzy URLRequest potrzebny do navigateToURL
var targetURL:URLRequest = new URLRequest(redi);
//Przekierowanie po prostu, targetURL odpowiada za to gdzie ma się przekierować, "_self" to rodzaj przekierowania
navigateToURL(targetURL, "_self");
}
Dodano przez: anonim Ranga: 0 Punktów: 0
Komentarze użytkowników
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno