SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Adobe Flash 11 – Rilasciata la versione stabile a 64 bit!

Adobe® Flash® Player è un runtime applicativo basato su browser multipiattaforma che offre una visualizzazione fedele di applicazioni, contenuti e video accattivanti su diversi schermi e piattaforme.

È stato rilasciato Adobe Flash Player 11 che aggiunge finalmente, dopo diversi anni di sviluppo, il supporto nativo ai browser a 64 bit.

Tra le altre interessanti novità c’è la possibilità di rendering 2D e 3D.

Come al solito, la pagina di download è disponibile all’indirizzo http://get.adobe.com/it/flashplayer/

enjoy!

Recuperare l’userAgent in una webapp Flex

Grazie all’uso della funzione ExternalInterface.call() di Flex/Flash Builder è possibile recuperare in modo semplice alcuni parametri del browser. Ad esempio, per recuperare l’userAgent, basterà inserire nell’applicazione web il seguente codice:

var userAgent:String = ExternalInterface.call("navigator.userAgent.toString");

e la variabile userAgent sarà popolata con l’userAgent del “visitatore”.

enjoy

Recuperare in Flex un parametro passato all’url

E’ possibile recuperare con Flex/Flash Builder in un’applicazione web, un parametro passato all’url della pagina che contiene l’applicazione.
Ipotizziamo che l’url dell’applicazione sia:
www.smsoft.it/app.html?parametro=ciao

e che l’applicazione contenga una casella di testo chiamata “txt” in cui inserire il valore di “parametro“, dovremo inserire nell’applicazione il seguente codice:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()"
                           >
        <fx:Script>
                <![CDATA[
                private function init():void {
               
                //      inizio recupero parametro da url
                var params:Object = getURLParameters();
                txt.text = params['parametro'];
                // fine recupero parametro da url
               
                }

                private function getURLParameters():Object
                {
                        var result:URLVariables = new URLVariables();
                        try
                        {
                                if (ExternalInterface.available)
                                {
                                        var fullUrl:String = ExternalInterface.call("eval","document.location.href");
                                        var paramStr:String = fullUrl.split("?")[1];
                                        if (paramStr != null)
                                        {
                                                result.decode(paramStr);
                                        }
                                }
                        }
                        catch (error:Error)
                        {
                                Alert.show(error.toString());
                        }
                               
                        return result;
                }      
                       
                ]]>
        </fx:Script>

        <s:TextInput x="183" y="65"  name="txt" id="txt"/>
</s:Application>

enjoy

Recuperare FlashVars in Flex con AS3

Nel caso venga creata un’applicazione web con Flex (o Flash Builder), è possibile che si renda necessario “passargli” dei parametri a runtime. Questo è possibile inserendo una variabile FlashVars nel codice html e poi richiamandola da Flex/Flash Builder.

Partiamo con l’esempio del codice html. Generando un progetto web, viene automaticamente creato il file html con il seguente codice:

<script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
            var swfVersionStr = "10.0.0";
            <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
            var xiSwfUrlStr = "playerProductInstall.swf";
            var flashvars = {};
            flashvars.parametro = "ciao";
            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "VP";
            attributes.name = "VP";
            attributes.align = "middle";
            swfobject.embedSWF(
                "VP.swf", "flashContent",
                "100%", "100%",
                swfVersionStr, xiSwfUrlStr,
                flashvars, params, attributes);
                        <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->
                        swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        </script>

in questo caso il parametro, chiamato proprio “parametro” è definito con la riga:

flashvars.parametro = "ciao";

In alternativa, utilizzando il classico object, si avrebbe:

<noscript>
            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="VP">
                <param name="movie" value="VP.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="allowScriptAccess" value="sameDomain" />
                <param name="allowFullScreen" value="true" />
                        <param name="FlashVars" value="parametro=ciao" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="VP.swf" width="100%" height="100%">
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="allowScriptAccess" value="sameDomain" />
                    <param name="allowFullScreen" value="true" />
                    <param name="FlashVars" value="parametro=ciao" />
                <!--<![endif]-->
                <!--[if gte IE 6]>-->
                        <p>
                                Either scripts and active content are not permitted to run or Adobe Flash Player version
                                10.0.0 or greater is not installed.
                        </p>
                <!--<![endif]-->
                    <a href="http://www.adobe.com/go/getflashplayer">
                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
                    </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
            </noscript>

dove il parametro è definito nelle righe:

<param name="FlashVars" value="parametro=ciao" />

Bene, ora passiamo al codice da inserire in Flex/Flash Builder. Ipotizziamo di avere una casella di testo, chiamata “txt” e di volerci caricare il contenuto di “parametro”, dovremo inserire nell’applicazione il seguente codice:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()"
        <fx:Script>
                <![CDATA[
                private function init():void {
                   // inizio recupero da flashvars
                     var obj:Object = this.parameters;
                     txt.text = obj.parametro;
                  // fine recupero da flashvars
                }
       
                ]]>
        </fx:Script>

        <s:TextInput x="183" y="65"  name="txt" id="txt"/>
</s:Application>

enjoy

Salvando un file con Flex/Air visualizzo l’errore SecurityError: fileWriteResource

Sono incappato in un messaggio di errore, apparentemente anomalo, durante il salvataggio di un file nella cartella dell’applicazione (File.applicationDirectory)

SecurityError: fileWriteResource
        at runtime::SecurityManager$/checkPrivilegeForCaller()
        at flash.filesystem::FileStream/open()

La porzione di codice che identificava il file (un’immagine nel mio caso) è:

downloadedFile = File.applicationDirectory.resolvePath("assets/logo.gif");

e la soluzione è al problema è puntare il file in quest’altro modo:

downloadedFile = new File("file:///" + File.applicationDirectory.resolvePath("assets/logo.gif").nativePath);

Spero possa esservi di aiuto…
Enjoy

I percorsi in Adobe Flex

I percorsi in Flex possono essere recuperati con le seguenti funzioni:
File.applicationStorageDirectory : La cartella di archiviazione specifica per ciascuna applicazione AIR installata
File.userDirectory : La cartella utente (es. c:\documents and setting\username o /Users/username)
File.documentsDirectory : La cartella che contiene i documenti
File.applicationDirectory : La cartella che contiene l’applicazione Flex
File.desktopDirectory : La cartella che contiene il nostro Desktop

Flex, ViewStack e null object reference error

Usando I viewstack con Flex, mi sono accorto che i vari stack non vengono inizializzati tutti all’avvio dell’applicazione e quindi se si tenta di utilizzare dei componenti presenti in uno stack ancora non aperto inizializzato, si viene avvertiti dal debugger di questa cosa(es null object reference error).

Per far si che tutti gli stacks vengano inizializzati all’avvio dell’applicazione ed utilizzare (es modificarne gli attributi) gli oggetti presenti in tutti gli stack fin da subito, basterà impostare l’opzione creationPolicy ad all. Ad esempio:

d90f4acbf669eec8423ec9e30d44bd79

Page optimized by WP Minify WordPress Plugin