• User Newbie

    problema url javascript prelevato da xml

    già il titolo è un casino, lo so!
    vi spiego il mio problema sperando innanzitutto che possa spiegarmi bene
    e magari che ci sia qualcuno che possa darmi una mano.
    ho creato (per modo di dire,ho copiato codici qua e la) un menu scorrevole
    con flash e xml.
    l'actionscript preleva le immagini dal file xml e le mette nel menu.
    nell'xml è associata ad ogni immagine anche il rispettivo url,solo che non è il classico
    url http,bensì una chiamata ad una funzione javascript.
    l'actionscript l'ho trovato in giro per il web e funziona in toto,tranne la funzione
    che preleva l'url dal file xml.
    ho fatto delle modifiche e prove di vario genere(puramente di fantasia)
    ma mi da sempre "undefined".

    QUESTO è IL MODELLO DI FILE XML

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <immagini>
    <foto>
    <anteprima>pics/1.jpg</anteprima>
    <link>javascript:sendEvent('playitem',0)</link>
    </foto>......

    questo è l'actionscript(preso da un tutorial in rete e adattato):

    function loadXML(loaded) {
    if (loaded) {
    xmlNode = this.firstChild;
    //definisco le variabili
    anteprima = [];
    link = [];
    total = xmlNode.childNodes.length;
    for (i=0; i<total; i++) {
    //aggiungo i parametri da inserire in xml
    anteprima* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
    link* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
    thumbnails_fn(i);
    }

    } else {
    content = "file not loaded!";
    }
    }

    xmlData = new XML();
    xmlData.ignoreWhite = true;
    xmlData.onLoad = loadXML;
    xmlData.load("video.xml");
    /////////////////////////////////////
    p = 0;
    this.onEnterFrame = function() {
    filesize = anteprima.getBytesTotal();
    loaded = anteprima.getBytesLoaded();
    if (loaded != filesize) {
    preloader.preload_bar._xscale = 100*loaded/filesize;
    } else {
    preloader._visible = false;
    if (anteprima._alpha<100) {
    anteprima._alpha += 10;
    }
    }

    };
    ////////////////////////////////////funzione1 scroll delle miniature
    function thumbNailScroller() {
    // thumbnail code!
    this.createEmptyMovieClip("tscroller", 1000);
    scroll_speed = 10;
    tscroller.onEnterFrame = function() {
    if ((_root._ymouse>=thumbnail_mc._y) && (_root._ymouse<=thumbnail_mc._y+thumbnail_mc._height)) {
    if ((_root._xmouse>=(hit_right._x-40)) && (thumbnail_mc.hitTest(hit_right))) {
    thumbnail_mc._x -= scroll_speed;
    } else if ((_root._xmouse<=(hit_left._x+40)) && (thumbnail_mc.hitTest(hit_left))) {
    thumbnail_mc._x += scroll_speed;
    }
    } else {
    delete tscroller.onEnterFrame;
    }
    };
    }

    openurl = link.getURL; <------------------------------- sicuramente l'errore è qui

    ////////////////////////////////////funzione2 azioni delle miniature
    function thumbnails_fn(k) {
    thumbnail_mc.createEmptyMovieClip("t"+k, thumbnail_mc.getNextHighestDepth());
    tlistener = new Object();
    tlistener.onLoadInit = function(target_mc) {
    target_mc._x = hit_left._x+(target_mc._width+5)*k;
    target_mc.pictureValue = k;
    target_mc.onRelease = openurl;<----------------------------- e anche qui
    target_mc.onRollOver = function() {
    this._alpha = 50;
    thumbNailScroller();
    };
    target_mc.onRollOut = function() {
    this._alpha = 100;

    };
    };
    image_mcl = new MovieClipLoader();
    image_mcl.addListener(tlistener);
    image_mcl.loadClip(anteprima[k], "thumbnail_mc.t"+k);
    }


  • Super User

    Ciao sigfunaris e benvenuto nel forum GT 🙂

    Ti faccio un esempio con la funzione javascript per aprire un pop-up:

    XML:

    
    <link>javascript:newWindow=window.open('file.html','popper1','width=400,height=400');newWindow.focus(); void(0);</link>
    
    

    Poi da Flash:

    
    getURL(nodo XML corretto);
    
    

  • Super User

    Se non funziona, prova a metterlo come stringa nell' XML:

    
    <link>"javascript:newWindow=window.open('file.html','popper1','width=400,height=400');newWindow.focus(); void(0);"</link>
    
    

  • User Newbie

    grazie per l'intervento.
    ma il problema era un altro.
    ho risolto in questo modo.

    innanzi tutto ho creato una funzione per aprire url in questo modo:

    function openurl() {
    if (p<(total-1)) {
    p++;
    if (loaded == filesize) {
    picture.getURL(link[p]);<-----------------link è il nodo Xml contente l'url.

        }
    }
    

    }

    poi creo l'evento onRelease per ogni immagine

        target_mc.onRelease = function() {
            p = this.pictureValue-1;
            nextImage();
            openurl();
        };
    

    fin qui tutto ok. ma vale solo per gli url http:...
    e comunque vengono aperti in un altra scheda.

    qui viene il problema.
    io avrei bisogno che con il click sull'immagine venga richiamata una
    funzione javascript con i vari argomenti.

    è chiaro che nella pagina html contente il flash c'è già la dichiarazione javascript.

    conclusione: con questo codice mi apre una scheda bianca senza che il
    javascript venga azionato.
    mi scuso per i termini poco professionali,sono un dilettante.
    spero di essere stato chiaro nella spiegazione. grazie e a presto.


  • Super User

    fin qui tutto ok. ma vale solo per gli url http:...

    Il metodo getURL di Actionscript richiede un indirizzo internet, non puoi prire files in locale utilizzando getURL.

    Scua ma non ho capito se alla fine hai risolto :bho:


  • User Newbie

    non ho risolto:

    se faccio un menu statico
    e assegno ad ogni immagine il geturl(javascript:funzione(argomenti...)
    funziona
    ma in questo caso prendendo il javascript da un file xml non funziona.

    mi spiego meglio:

    nell'actionscript
    getURL(nodoxml)

    nodo xml = javascript:funzione()


  • Super User

    A questo punto devi mettere nell' XML solo gli argomenti javascript e poi concatenarli in actionscript chiamando la funzione.


  • User Newbie

    infatti questa sarebbe proprio la soluzione ideale.
    così nell'xml metterei solo l'argomento del javascript e sarebbe molto
    piu semplice.
    c'è un problema però...non so come si fa.non conosco la sintassi corretta.
    ho provato a fare getURL(javascript:sendEvent + link[p]);
    ma non va. mi da errori di sintassi


  • User Newbie

    lo stesso vale per getURL(javascript:sendEvent('link[p]'));
    perchè a quel punto link[p] me lo vede come argomento anzichè nodo xml.


  • Super User

    Io avevo creato tempo fa una cosa simile per una galleria immagini.

    Ti faccio vedere come ho concatenato :

    
    getURL("javascript:newWindow=window.open('"+me.Pops[this.id]+"','popper1','width="+com.flepstudio.Manager.Widths[this.id]+",height="+com.flepstudio.Manager.Heights[this.id]+"');newWindow.focus(); void(0);");
    
    

    Quello che vedi: com.flepstudio.Manager.Widths[this.id] e com.flepstudio.Manager.Heights[this.id] sono delle path a degli indici di array, per cui credo che ora tu ce la possa fare.


  • User Newbie

    grazie per la disponibilità.
    le ho provate tutte.
    mi arrendo,non fa per me. :bho: