Avatar billede rolflagoni Nybegynder
21. juni 2007 - 14:19 Der er 5 kommentarer

Actionscript i url istedet for i frame

Jeg har lavet en swf hvor jeg henviser til en flashpaper som jeg har fået hentet ind i .fla via nedenstående actionscript:



// function: loadFlashPaper
// ------------------------
// Load FlashPaper document, size it,
// Parameters:
//  path_s: Path of SWF to load
//  dest_mc: Movie clip to hold the imported SWF
//  width_i: New size of the dest MC
// height_i: New size of the dest MC
// loaded_o: (optional) Object to be notified that loading is complete
function loadFlashPaper(path_s, dest_mc, width_i, height_i, loaded_o) {
    var intervalID = 0;
    var loadFunc = function(){       
        dest_mc._visible = false;       
        var fp = dest_mc.getIFlashPaper();
        if (!fp) {
            return;
        } else if (fp.setSize(width_i, height_i) == false)    {
            return;
        } else {
            clearInterval(intervalID);       
            var pages_i = fp.getNumberOfPages();
            ctrlHolder_mc.swapDepths(_root.control_mc);
            dest_mc._visible = true;            // Now show the document
            _root.control_mc._visible = true;    // Now show the controller
            loaded_o.onLoaded(fp);
        }
    }
    intervalID = setInterval(loadFunc, 100);
    dest_mc.loadMovie(path_s);
}


// function: onLoaded()
// ------------------------
// Called once loading is complete
// Parameters:
//  fp: FlashPaper interface (returned by getIFlashPaper())
function onLoaded(fp) {
    // We can now call the FlashPaper API functions.
    // Remove the standard user interface features:
    fp.showUIElement("PrevNext", true);
    fp.showUIElement("Print", true);
    fp.showUIElement("Find", true);
    fp.showUIElement("Tool", true);
    fp.showUIElement("Pop", true);
    fp.showUIElement("Zoom", true);
    fp.showUIElement("Page", true);
    fp.showUIElement("Overflow", true);
    fp.enableScrolling(true);
    fp.setCurrentZoom (36)
    // Some additional API features (here commented out):
    // Go to page:
    // fp.setCurrentPage(8);
    // Change the magnification to 50%:
    // fp.setCurrentZoom(50);
}

// Hide the navigation controller until after the document is loaded:
_root.control_mc._visible = false; 

// Create movie clip to hold the document:
var theDocMC_mc = this.createEmptyMovieClip("theDocMC",100);
// Create movie clip to exchange the depth with the navigation controller clip:
var ctrlHolder_mc = this.createEmptyMovieClip("ctrlHolder",200);

// Position the document clip on the stage:
theDocMC_mc._x = 1;
theDocMC_mc._y = 99;

// Load the FlashPaper document:
loadFlashPaper("catalogue.swf", theDocMC_mc, 898, 449, this);


Mit store spørgsmål er så nu: Hvis jeg gerne vil kunne linke til forskellige sider i flashpaperen, kan jeg så gøre det ved at lave et link hvor jeg kan indsætte den her del fra actionscriptet "// fp.setCurrentPage(8);" på en eller anden måde?

Eksempel.

www.domæne.dk/flashpaper.html/// fp.setCurrentPage(8); - den her åbner siden og bladrer til side 8

www.domæne.dk/flashpaper.html/// fp.setCurrentPage(140); - den her åbner samme side og bladrer til side 140

Nogen der ved noget om det?

Rolf
Avatar billede maqhem Nybegynder
21. juni 2007 - 14:39 #1
Det er jeg meget sikker på, du ikke kan, men du kan sende GET-parametre med og kalde dem fra _root'en i Flash:

./side.swf?fp_setcurrentpage=8

Hentes med:

_root.fp_setcurrentpage
Avatar billede rolflagoni Nybegynder
21. juni 2007 - 14:48 #2
Nu du skriver GET-parametre :-)

Synes den er ret så ligeglad med hvad jeg skriver efter .swf?

Den henter bare side 1 og så kan man ellers godt begynde at scrolle :(

Men du ville mene at jeg bare kan skrive:

www.domæne.dk/flashpaper.swf?fp_setcurrentpage=8

Skal der ændres noget i actionscriptet?
Betyder det noget at det i actionscriptet hedder fp.setCurrentPage istedet for fp_setCurrentPage

Og sidste spørgsmål... det skal så være swf'en jeg gør det med... det kan ikke være en parameter i html'en?

Rolf
Avatar billede maqhem Nybegynder
21. juni 2007 - 15:02 #3
if(_root.fp_setcurrentpage) {
    // Nu er _root.fp_setcurrentpage defineret i url'en!
} else {
    // Nu er _root.fp_setcurrentpage IKKE defineret i urlen!
}

Så kan du vel selv tilpasse det?
Avatar billede rolflagoni Nybegynder
22. juni 2007 - 13:28 #4
Jeg har nu fundet ud af at jeg kan linke til den vha:

www.domæne.dk/flashpaper.swf?INITIAL_PAGE=1

Så det virker fint nu - nu er tillægsspørgsmålet jo så hvordan (og om man kan) gøre det på en html side hvor jeg har indsat swf'en?
Avatar billede maqhem Nybegynder
22. juni 2007 - 16:56 #5
Så du vil have GET-parametren fra url'en? Tjoh, det kan du da godt:

www.domæne.dk/flashpaper.swf?INITIAL_PAGE=<?php echo $_GET['INITIAL_PAGE']; ?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester