Salve a tutti,
ho il problema di richiamare un swf al quale passare una variabile che successivamente possa essere letta da action script.
Uso Flash CS5 e questo è il codice della pagina php che richiama il file swf:
index.php
Da questo codice php dovrei passare la variabile con il nome del file da aprire.codice:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Monografie virtuali</title> <script src="Scripts/swfobject_modified.js" type="text/javascript"></script> </head> <body> <div align="center"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="750" id="FlashID" title="PageFlip"> <param name="movie" value="notebook.swf" /> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="8.0.35.0" /> <!-- Questo tag param fa in modo che agli utenti con Flash Player 6.0 r65 e versioni successive venga richiesto di scaricare l'ultima versione di Flash Player. Eliminarlo se non si vuole visualizzare la richiesta agli utenti. --> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- Il tag object successivo è per i browser diversi da IE. Utilizzare IECC per nasconderlo in IE. --> <object type="application/x-shockwave-flash" data="notebook.swf" width="800" height="750"> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="8.0.35.0" /> <param name="expressinstall" value="Scripts/expressInstall.swf" /> <!-- Il browser visualizza il seguente contenuto alternativo per gli utenti che utilizzano Flash Player 6.0 e versioni precedenti. --> <div> <h4>Il contenuto di questa pagina richiede una nuova versione di Adobe Flash Player.</h4></p> </div> </object> </object> <script type="text/javascript"> <!-- swfobject.registerObject("FlashID"); //--> </script> </div> </body> </html>
Questo è il codice action script richiamato:
notebook.swf
proprio nell'ultima riga c'è il nome del file xml che dovrebbe essere aperto.codice:import flash.geom.ColorTransform; import flash.geom.Transform; //Stage.scaleMode = "noScale"; var maxSize:Number = 290; //the maximum width or height for the photos //no need to edit this unless you know what you are doing attachMovie("book", "Book", this.getNextHighestDepth()); Book._x = 146; Book._y = 90; Book._xscale = Book._yscale = 90; Book.gotoAndStop(26); attachMovie("page","Page", this.getNextHighestDepth()); Page._x = 440; Page._y = 438; attachMovie("cap", "Cap", this.getNextHighestDepth()); Cap._x = 342; Cap._y = 410; var colorTrans:ColorTransform = new ColorTransform(); var hxy:Number = 0; var Holder:MovieClip = createEmptyMovieClip("Holder", this.getNextHighestDepth ()); var Frame:MovieClip = createEmptyMovieClip("Frame", this.getNextHighestDepth ()); var mcLoader:MovieClipLoader = new MovieClipLoader(); var loadListener:Object = new Object(); var This:MovieClip = this; var trans:Transform = new Transform(Holder); var transFrame:Transform = new Transform(Frame); var transPage:Transform = new Transform(Page); var transCap:Transform = new Transform(Cap); if (maxSize < 350) hxy = 175 - maxSize/2 ; Holder._x = 164 + hxy; Holder._y = 100 + hxy; drawFrame = function ():Void { Frame.lineStyle(1, 0x888888); Frame.moveTo(Holder._x,Holder._y); Frame.lineTo(Holder._x+Holder._width, Holder._y); Frame.lineTo(Holder._x+Holder._width, Holder._height +Holder._y); Frame.lineTo(Holder._x, Holder._y + Holder._height); Frame.lineTo(Holder._x,Holder._y); } var x:XML = new XML(); x.ignoreWhite = true; var urls:Array = new Array(); var captions:Array = new Array(); var whoIsOn:Number; x.onLoad = function () { var photos:Array = this.firstChild.childNodes; for (i=0;i<photos.length;i++) { urls.push((_root.folderPath?_root.folderPath:"") + photos [i].attributes.url); captions.push(photos[i].attributes.caption); } whoIsOn = 0; loadListener.onLoadStart = function ():Void { attachMovie("preloader", "Preloader", This.getNextHighestDepth ()); Preloader._x = 339; Preloader._y = 275; Page.counter.text = "Pagina "+(whoIsOn+1)+" di "+photos.length; Cap.capcont.text = captions[whoIsOn]; var transPreloader:Transform = new Transform(Preloader); timer = 0; colorTrans.blueOffset=colorTrans.greenOffset=colorTrans.redOffset=255; colorTrans.alphaOffset = -255; trans.colorTransform = transFrame.colorTransform = transPage.colorTransform = transCap.colorTransform = transPreloader.colorTransform = colorTrans; Holder.onEnterFrame = function () { if (timer > 5) { colorTrans.alphaOffset = 0; colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset -= 40; trans.colorTransform = transFrame.colorTransform = transPage.colorTransform = transCap.colorTransform = transPreloader.colorTransform = colorTrans; } else timer++; if (colorTrans.blueOffset < 0) { colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset = 0; trans.colorTransform = transFrame.colorTransform = transPage.colorTransform = transCap.colorTransform = transPreloader.colorTransform = colorTrans; timer = 0; delete this.onEnterFrame; } } } loadListener.onLoadComplete = function ():Void { removeMovieClip(Preloader); } loadListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void { percent = Math.ceil(bytesLoaded/bytesTotal*100); Preloader.gotoAndStop(percent); } loadListener.onLoadInit = function() { raport = Holder._width / Holder._height; if ((Holder._width > maxSize) || (Holder._height > maxSize)){ if (raport > 1) { Holder._width = maxSize; Holder._height = maxSize/raport; Holder._y += maxSize/2 - Holder._height/2-20; drawFrame(); } else if (raport < 1) { Holder._width = maxSize*raport; Holder._height = maxSize; Holder._x += maxSize/2 - Holder._width/2; Holder._y -=20; drawFrame(); } else if (raport == 1) { Holder._width = Holder._height = maxSize; Holder._y -=20; drawFrame(); } } else { Holder._x += maxSize/2 - Holder._width/2; Holder._y += maxSize/2 - Holder._height/2; } } mcLoader.addListener(loadListener); mcLoader.loadClip(urls[whoIsOn], Holder); Book.onRelease = function () { this.gotoAndPlay(1); if (whoIsOn<photos.length-1) whoIsOn++; else whoIsOn = 0; Holder.onEnterFrame = function () { if (colorTrans.blueOffset < 255) { colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset += 80; colorTrans.alphaOffset -=50; trans.colorTransform = transFrame.colorTransform = transPage.colorTransform = transCap.colorTransform = colorTrans; } else { delete this.onEnterFrame; removeMovieClip(Holder); removeMovieClip(Frame); var Holder:MovieClip = createEmptyMovieClip ("Holder", This.getNextHighestDepth()); var Frame:MovieClip = createEmptyMovieClip ("Frame", This.getNextHighestDepth()); Holder._y = 100+hxy; Holder._x = 164+hxy; mcLoader.loadClip(urls[whoIsOn], Holder); } } } } x.load((_root.folderPath?_root.folderPath:"") + "notebook.xml");
Dovrei fare in modo che "notebook.xml" sia una variabile passata dal file index.php.
Cioè dal file index.php gli passo una variabile tipo $nome_file e su action script ricavo la variabile e la inserisco nell'ultima riga.
Grazie


Rispondi quotando
