[ djalfirevic @ 10.08.2009. 12:56 ] @
Pozdrav ljudi!

Dakle desava mi se jedna jako cudna stvar, pa da vidim da li se neko susretao sa tim...

Imam XML koji ima ovakvu strukturu:

Code:

<?xml version="1.0" encoding="utf-8"?>
<links>
      <button id="home">
       <link>index.html</link>
      </button>
      
      <button id="onama">
       <link>index-1.html</link>
      </button>
</links>


Hocu da isparsiram taj XML u flashu, i to uradim na ovaj nacin:

Code:

var linksRequest:URLRequest = new URLRequest("links.xml");
var linksLoader:URLLoader = new URLLoader(linksRequest);
linksLoader.addEventListener(Event.COMPLETE, linksLoaded);

var linksXML:XML = new XML();
linksXML.ignoreWhitespace = true;

// variables
var homeLink:String = "";
var onamaLink:String = "";

function linksLoaded(evt:Event):void {
    linksXML = XML(linksLoader.data);

    homeLink = linksXML.button[0].link;
        onamaLink = linksXML.button[1].link;
    
    trace(linksXML);
}


On lepo uradi trace, sve bude OK. Zatim uradim trace(homeLink) i on izbaci index.html bas kao sto i treba.

Zatim imam dugmice:

Code:

home.addEventListener(MouseEvent.CLICK, buttonClick);
onama.addEventListener(MouseEvent.CLICK, buttonClick);

function buttonClick(evt:MouseEvent):void {
    var buttonName:String = evt.target.name;
    trace(buttonName);
    
    switch (buttonName) {
        case "home" :
            navigate(homeLink);
            break;
        case "onama" :
            navigate(onamaLink);
            break;
    }
}

function navigate(link:String):void {
    var navRequest:URLRequest = new URLRequest(link);
    try {
        navigateToURL(navRequest, "_self");
    } catch (e:Error) {
        trace("Error occurred!");
    }
}


trace(buttonName) - radi odlicno, dakle kada klicnem na dugmence, sve je ok, izbaci njegov naziv. Kada klicnem na dugme, on kaze PageLoad Error zato sto nemam index.html, ALI OK, sve RADI!!! Sada taj isti Flash embedujem u HTML i kada klicnem na dugme, ono kao da ne postoji!!!

E sada... pomislih da je do tog embedovanja, ali sam pokusao sledece... u case klauzulama, ja kazem navigate("index.html"), dakle hard-code-ujem vrednosti, i kada to uradim i kada embedujem taj swf u html, radi sve OK!!

Onda sam stavio sledece:

Code:

var test:String = "index.html";

...
case "home" :
    navigate(test);
    break;
...


Ovaj deo koda za test radi!! Ja stavim trace(test) i on izbaci index.html kao sto i treba. Stavim trace(homeLink) i ISTO TO IZBACI!!! Ali kada stavim navigate(test) sve radi OK, a kada stavim navigate(homeLink) nece i nece :( Radio sam i trace(linksXML.button[0].link) neposredno pre klika na dugme, i fino pise index.html, ali ne kapiram sto nece :(

Skoro sam radio jedan drugi sajt, koji je doduse citav u Flashu, i nisam imao nikakvih problema, ali sada evo... :(

Ima li neko nekakvu ideju?
[ stolex @ 10.08.2009. 18:04 ] @
node ti je XML, sve što trejsuješ se konvertuje u string pre trejsovanja pa zato dobijaš pravu vrednost. Isparsuj ga u string pa probaj:

Code:
homeLink = linksXML.button[0].link.toString();


[ djalfirevic @ 11.08.2009. 08:07 ] @
Hvala na odgovoru.

Hmmm...

Code:

homeLink = linksXML.button[0].link.toString();


Ovaj deo koda sam probao i to nece... Stavise, vec sam ja probao da odradim varijantu:

Code:

homeLink = String(linksXML.button[0].link);


Probao sam da ga cast-ujem, ali nije proslo...

E sad, nisam samo skontao da li si mislio SAMO na ovo, ili da nekako citav XML, isparsiran, konvertujem u String ili sta vec... mozda nisam dobro razumeo, izvini...
[ shedvel @ 11.08.2009. 09:04 ] @
Skroz interesantno da kod radi bez konkretnog poziva/ucitavanja XML-a linksLoader.load(linksRequest);

Sa sledecim kodom kod mene sve radi OK tako da je verovatno problem bio u nedostatku .load metoda:

Code:

var linksRequest:URLRequest = new URLRequest("es.xml");
var linksLoader:URLLoader = new URLLoader(linksRequest);
var linksXML:XML = new XML();

var homeLink:String = "";
var onamaLink:String = "";


linksLoader.load(linksRequest);
linksLoader.addEventListener(Event.COMPLETE, linksLoaded);
linksLoader.addEventListener(IOErrorEvent.IO_ERROR, onError);

function onError(e:IOErrorEvent):void
{
    trace("nesto ne valja "+e.text);
}

function linksLoaded(evt:Event):void 
{
    linksXML.ignoreWhitespace = true;
    linksXML = XML(linksLoader.data);
    
    homeLink = linksXML.button[0].link;
    onamaLink = linksXML.button[1].link;
}

home.addEventListener(MouseEvent.CLICK, buttonClick);
onama.addEventListener(MouseEvent.CLICK, buttonClick);

function buttonClick(evt:MouseEvent):void 
{
    var buttonName:String = evt.target.name;
    
    switch (buttonName) {
        case "home" :
            try 
            {
                navigateToURL(new URLRequest(homeLink));
            }
            catch (e:Error)
            {
                trace("greska "+ e.message);
            }
            break;
            
        case "onama" :
            try 
            {
                navigateToURL(new URLRequest(onamaLink));
            }
            catch (e:Error)
            {
                trace("greska "+ e.message);
            }
            break;
    }
}

[ djalfirevic @ 11.08.2009. 09:56 ] @
Hvala na odgovoru shedvel.

Vidi ovako, kod radi bez poziva load metode, zato sto kada u konstruktor URLLoader-a prosledis URLRequest objekat, implicitino se poziva load metoda. Zato kod i radi...

Probao sam ja i sa load metodom, ali nece...

Ne znam da li si skontao iz teksta gore, ali fora je sto SWF ko SWF radi! Sve radi OK! Ali je fora sto kada ga embedujem u HTML, tada jednostavno NECE!!! Prethodno je ovaj .fla bio uradjen u AS 2.0, gde su bili getURL() pozivi, i sve je radilo OK, ali sada je AS 3.0 i radi se parsiranje XML-a.

Dakle, sam SWF radi... Kada se gleda output on izbaci sve kako i treba, i kada se klicne na dugme, on izbaci Page Load Error zato sto ne postoji index.html u direktorijumu gde je .fla fajl, ali cim da ubacim u HTML, probam u lokalu, ili live na serveru, jok... nece i nece... nista se ne desava... :(

Jos cudnija stvar je sto kada udjem u Publish Settings i kada stikliram i HTML da mi se generise, SWF i dalje radi, a taj NOVOGENERISANI HTML jok... joj ljudi sta je ovo :(
[ shedvel @ 11.08.2009. 11:46 ] @
Ne znam sta da ti kazem, kod koji je postovan kod mene radi:

direktnim publishToBrowser [F12],
radi i na local WebServeru,
cak po ovoj kisi ne budem lenj te taj isti flash generated Html probam i live - radi!

Tako da verujem da imas problem sa browserom, ili addBlockerom/Av-om ... itd. Unutar .zip-a imas html, xml, i swf (kod koji sam postovao) cija kombinacija kod mene radi ok, te proveri da li ce kod tebe raditi.

[url=]http://www.mediafire.com/?niymnm1ttgm[/url]
[ djalfirevic @ 11.08.2009. 12:19 ] @
:(

Kada je bio AS 2.0, tada je Behavior i getURL odradio svoje, ali ovo nece i nece...

Probao sam i Chrome i Explorer ma jok... SWF radi ekstra ali HTML nece i nece...
[ gordon_beneth @ 11.08.2009. 22:39 ] @
Možda je problem u "Local playback security" podešavanju u publish settings?
Trebalo bi da bude postavljeno na "access local files only" (valjda)
[ djalfirevic @ 12.08.2009. 08:15 ] @
Citat:
gordon_beneth: Možda je problem u "Local playback security" podešavanju u publish settings?
Trebalo bi da bude postavljeno na "access local files only" (valjda)


Probao, nije :(
[ djalfirevic @ 12.08.2009. 08:44 ] @
Pogledajte ovo...

http://kb2.adobe.com/cps/000/50c1cf38.html



Links from SWF files in HTML page no longer function (Flash Player 9)


Issue

In Adobe Flash Player 9 update 3 (v9.0.115.0), calling getURL (or its ActionScript 3.0 equivalent, navigateToURL) does not work properly when the calling Flash Player movie (SWF) file is located in a different domain than its hosting HTML page. An exception to this issue is when the target name is "_blank" or the HTML parameter AllowScriptAccess is set to "always."

This issue may prevent some SWF files from changing a user's web browser location. Itmay also interfere withattempts by the SWF file to execute JavaScript style URLs within the context of the hosting page or other frames within that page...


Koga ne mrzi, nek procita citav clanak, mozda nekad nabasa na ovako nesto...