• User

    Passare un comando pulsante da XML a Action script

    Ciao a tutti!
    Il menù fighissimo che potete vedere in questo link
    flashden.net/item/xml-team-menu/3356
    carica dei clip filmato "dude" identificati anche con la proprietà di concatenamento, identificatore "dude1", "dude2", "dude3", ecc...
    Caricati grazie alle action script contenenti in un clip (che non contiene grafica, solo azioni), che poi è il menù. E grazie ai comandi del file "menu.xml".

    Il problema è che si aprono dei link ad altre pagine, ma per migliorare la navigazione del sito, interamente in flash, occorre che i** pulsanti (dude) si aprano delle scene all'interno dell'swf**.
    é possibile, combiando dei comandi???
    Il problema è che le sagome del menù (dude) vengono caricate grazie al file .xml

    Queste le azioni del clip filmato menu:

    
    // Importing the transition class
    import mx.transitions.*;
    import mx.transitions.easing.*;
    
    
    easeSpeed = 3; // set the ease sensetivity
    MovieClip.prototype.elasticScale = function(toSize) {
        easeType = mx.transitions.easing.Regular.easeInOut;
        myTween = new Tween(this, "_yscale", easeType, this._yscale, toSize, easeSpeed);
        myTween = new Tween(this, "_xscale", easeType, this._xscale, toSize, easeSpeed);
    };
    
    // Here the array object is created.
    var rubrieken:Array = new Array();
    // Here the XML object is created.
    myXML = new XML();
    myXML.ignoreWhite = true;
    myXML.onLoad = function(success) {
        // De data from the xml is loaded into flash
        // Using a 'for' loop the data is placed inside the array
        if (success) {
            menuItems = this.firstChild;
            for (i=0; i<menuItems.childNodes.length; i++) {
                rubriek = menuItems.childNodes*;
                rubrieken.push(rubriek);
            }
        }
        // As soon as the data is loaded int the array the function below will be executed
        attachMenu();
    };
    myXML.load("menu.xml");
    // This function attaches the people figures to the stage with the right data
    function attachMenu() {
        // This margin variable sets the space on the right and the left. roght now 80px;
        margin = (Stage.width-680)/rubrieken.length;
        for (i=0; i<rubrieken.length; i++) {
            loadDude = rubrieken*.attributes.dude;
            var menuItems = peopleHolder.attachMovie(loadDude, "dude"+i, 10000+i);
            menuItems._x = menuItems._x+(margin)*i;
            
            // This inline fuction executes the proximity function onEnterFrame
            menuItems.onEnterFrame = function() {
                proximity(this);
            };
    
            menuItems._href = rubrieken*.attributes.href;
            menuItems.idText = rubrieken*.attributes.dudesname;
            menuItems.knopTekst.text = rubrieken*.attributes.naam;
            // The events when you roll over the button
            menuItems.onRollOver = function() {
                this.swapDepths(10000+i);
                // makes the tooltip appear
                this.nameTip._alpha = 100;
                // Out the name from the xml inside the tooltip
                this.nameTip.idTag.text = this.idText;
            };
            menuItems.onRollOut = function() {
                // makes the tooltip disappear
                this.nameTip._alpha = 0;
            };
            menuItems.onRelease = function() {
                getURL(this._href, "_self");
            };
        }
    }
    
    // This here is the function that calculates the size of each item depending on the proximity of the mouse position
    // You could play a little with these number but it is kinda tricky.
    function proximity(clip) {
        var x:Number = peopleHolder._xmouse;
        var y:Number = peopleHolder._ymouse;
        var cx:Number = clip._x;
        var cy:Number = clip._y-clip._height/2;
        var prox:Number = Math.sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy));
        // if the mouse is closer to the object than 100px it increases its size
        if (prox<100) {
            clipx = 300-prox*2;
            clip.elasticScale(clipx);
        // if the mouse is futher away than 100 it keeps it original size
        } else {
            clipx = 100;
            clip.elasticScale(clipx);
        }
    }
    
    ```**Questo il contenuto del file "menu.xml":**
    
    [html]<?xml version="1.0" encoding="iso-8859-1"?>
    <rubriekenxml>
      <project dude="dude0" dudesname="Sam" href="...link..."/>
      <project dude="dude1" dudesname="Richard" href="...link..."/>
      <project dude="dude2" dudesname="John" href="...link..."/>
      <project dude="dude3" dudesname="Curtis" href="...link..."/>
      <project dude="dude4" dudesname="Charles" href="...link..."/>
      <project dude="dude5" dudesname="Otis" href="...link..."/>
      <project dude="dude6" dudesname="Benny" href="...link..."/>
      <project dude="dude7" dudesname="Ray" href="...link..."/>
      <project dude="dude8" dudesname="Billy" href="...link..."/>
      <project dude="dude9" dudesname="Paul" href="...link..."/>
    </rubriekenxml>[/html]
    
    
    Chi ha qualche idea/soluzione...???

  • User

    si ma se fai un sito in flash un po di actionscript lo dovresti sapere iam...

    nel tuo caso basta inserire al posto dell'azione getURL quella che vuoi che esegua....se vuoi cambiarla poi runtime puoi fare uno switch(variable) dove variable dipende dal nodo xml corrente...

    se vuoi un consiglio passa a as3


  • User

    Ma un po' lo so... un po'... 😄
    Quindi devo cambiare, nell'actionscript:

    
            menuItems.onRelease = function() {
                getURL(this._href, "_self");
    
    

    Con...?

    
            menuItems.onRelease = function() {
                gotoAndPlay(??????????);
    
    

    L'ho sparata così... non saprei che comando inserire di preciso.

    Mentre nel'xml va cambiato:
    [HTML]
    <project dude="dude0" dudesname="l'evento" href="...link..."/>
    [/HTML]
    Con...?
    Cosa va esattamente al posto di href???

    Poi mi butterò sull'ultimo flash, e vedrò di imparare AS3!
    Adesso uso la versione 8.


  • User

    allora...
    1)devi aprire un'altra pagina??? risposta: NO!, quindi href lo puoi togliere del tutto!
    2)Cosa va al posto di href? risposta Me lo dovresti dire tu iam... mettici per esempio un attributo Pageid="1", cosi sai a che fotogramma devi andare...

    per quanto riguarda la sostituzione della funzione tu cosa dici??
    leggi il codice... "quando dude0 è stato rilasciato fai ..."
    quindi ovviamente è giusto...


  • User

    Dunque...
    Per l'xml ho messo
    [HTML]
    <project dude="dude0" dudesname="l'evento" pageid="1"/>
    [/HTML]
    ma ho provato anche con scena + fotogramma
    e anche con una etichetta ad un fotogramma chiamato "tac"
    [HTML]
    <project dude="dude0" dudesname="l'evento" pageid="Scena 1, 1"/>

    <project dude="dude0" dudesname="l'evento" pageid="tac"/>
    [/HTML]

    Per le azioni
    [FLASH]
    menuItems.onRelease = function() {
    gotoAndPlay(this._pageid);
    [/FLASH]

    L'xml è di sicuro toppata.
    Come faccio a dirgli di andare a quel preciso fotogramma? Nome scena + fotogramma, nome etichetta fotogramma?


  • User

    iam studiati come accedere agli attributi di un file xml in flash e dopo usi la funzione

    gotoAndStop(elemento.attributo_pageid)


  • User

    Le azioni che volevo scrivere erano queste:

    
      menuItems.onRelease = function() {
       gotoAndPlay(this._pageid);
    
    

  • User

    Mi sto smazzando un po' di tutorial, ma non ne vengo a capo...
    Potresti scrivermi tu il codice GreyFox?
    Si tratta di poche stringe, giusto...?


  • User

    Ho provato sostituendo action script e xml come e nella stessa scena funziona! (ma mi serve che vada in un'altra scena........!!!)

    
    menuItems._pageid = rubrieken*.attributes.pageid;
    menuItems.onRelease = function() {
     gotoAndPlay(this._pageid);
    
    
    
      <project dude="dude0" dudesname="l'evento" pageid="10"/>
    
    

    oppure

    
      <project dude="dude0" dudesname="l'evento" pageid="easy"/>
    
    

    Dove 10 è il fotogramma e "easy" è un etichetta presente nella stessa scena
    Adesso che ci penso quel menù è dentro un clip filmato (esigenze per la struttura della pagina) così ho pensato di dirgli di andare ad un fotogramma etichettato chiamato "fax" presente in un'altra scena, ma niente...
    Insomma se metto un etichetta in un fotogramma all'interno di quel clip funziona,
    ma va appunto al fotogramma dentro il clip...........
    io devo farlo andare in un fotogramma nella scena (in cui è contenuto il menu) o in un fotogramma di un'altra scena...
    che comando gli posso dare???
    Centra la root vero...?


  • User

    In definitiva, pare che così funzioni:

    
    menuItems._pageid = rubrieken*.attributes.pageid;
    
    menuItems.onRelease = function() {
        _parent.gotoAndPlay(this._pageid);
    
    ```e per l'xml
    

    <project dude="dude0" dudesname="Sam" pageid="fax"/>

    
    Funziona anche con _root
    

    _root.gotoAndPlay(this._pageid);


  • User

    Un'altro problema...
    Per motivi tecnici faccio caricare il menù con un loadmovie

    
    loadMovieNum("menu.swf", 1);
    
    ```che rimane caricato in tutte le scene del sito, tutto il tempo.
    
    Però adesso il comando non funziona più, va modificato...
    In pratica seve un comando che gli dica di andare al fotogramma di una scena contenuta nell'swf che contiene il menu.swf...
    
    Come sostituisco il
    _parent.gotoAndPlay    ???
    
    O cosa aggiungo???

  • User

    Ho trovato, si cambia così:
    _level.gotoAndPlay