Loading:

PHP 7 News & Updates v7.0 - 7.4 - book

Proste menu [XML][AS3]

Proste menu stworzone we flashu

Atuty:
- Pionowo położenie

- Edycja poprzez XML

- Możliwość rozbudowania menu o dodatkowe atrybuty



Napisz Artykuł

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");
}


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=12&t=5048

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: anonim Ranga: Poziom 1 Punktów:
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors