IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

pb avec ExternalInterface


Sujet :

ActionScript 3

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 30
    Points : 24
    Points
    24
    Par défaut pb avec ExternalInterface
    j'ai un soucis avec la classe ExternalInterface.En faite j'essaye de récupérer une fonction javascript mais mon fichier.as ne voit pas la fonction javascript(peut etre un pb de mapping entre les fichiers), en tout cas voici les codes des différents fichiers:

    pour résumer ce code récupère les caractéristiques du système et du navigateur et les affiche dans un tableau, or dans mon cas seul les caractéristiques du système s'affiche.

    fichier.mxml :
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:example="com.example.programmingas3.capabilities.*"
    xmlns="*"
    layout="vertical"
    horizontalAlign="left"
    creationComplete="initApp();">

    <mx:Script>
    <![CDATA[
    import com.example.programmingas3.capabilities.*;
    private function initApp():void {
    var dp:Array = CapabilitiesGrabber.getCapabilities();
    capabilitiesGrid.dataProvider = dp;
    }
    ]]>
    </mx:Script>

    <mx:Label id="title" text="CapabilitiesExplorer Example" fontSize="24" fontStyle="bold" />
    <mx:Label id="subtitle" text="From Programming ActionsScript 3.0, Chapter 23: Client system environment" fontSize="12" />

    <mxanel title="System capabilities" width="100%" height="100%">
    <mxataGrid id="capabilitiesGrid" editable="false" width="100%" height="100%" dropShadowEnabled="false">
    <mx:columns>
    <mx:Array>
    <mxataGridColumn dataField="name" headerText="Name" />
    <mxataGridColumn dataField="value" headerText="Value" />
    </mx:Array>
    </mx:columns>
    </mxataGrid>
    </mxanel>

    </mx:Application>


    fichier html :

    <html lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    <body scroll="no">
    <object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000"
    id="CapabilitiesExplorer" width="100%" height="100%"
    codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab'>
    <param name="movie" value="CapabilitiesExplorer.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#869ca7" />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name='src' value='CapabilitiesExplorer.swf'>
    <param name='flashvars' value=''>
    <embed src="CapabilitiesExplorer.swf" quality="high" bgcolor="#869ca7"
    width="100%" height="100%" name="CapabilitiesExplorer" align="middle"
    play="true"
    loop="false"
    quality="high"
    allowScriptAccess="sameDomain"
    type="application/x-shockwave-flash"
    pluginspage='http://www.adobe.com/go/getflashplayer'
    name="CapabilitiesExplorer">
    </embed>
    </object>

    <script language="JavaScript" charset="utf-8">
    function JS_getBrowserObjects() {
    alert("ddd");
    // Create an array to hold each of the browser's items.
    var tempArr = new Array();

    // Loop over each item in the browser's navigator object.
    for (var name in navigator) {
    var value = navigator[name];
    /*
    If the current value is a string or Boolean object, add it to the
    array, otherwise ignore the item.
    */
    switch (typeof(value)) {
    case "string":
    case "boolean":
    /*
    Create a temporary string which will be added to the array.
    Make sure that we URL-encode the values using JavaScript's
    escape() function.
    */
    var tempStr = "navigator." + name + "=" + escape(value);
    // Push the URL-encoded name/value pair onto the array.
    tempArr.push(tempStr);
    break;
    }
    }
    // Loop over each item in the browser's screen object.
    for (var name in screen) {
    var value = screen[name];
    /*
    If the current value is a number, add it to the array, otherwise
    ignore the item.
    */
    switch (typeof(value)) {
    case "number":
    var tempStr = "screen." + name + "=" + escape(value);
    tempArr.push(tempStr);
    break;
    }
    }
    tempArr.push("nav.oo=13");
    // Return the array as a URL-encoded string of name-value pairs.
    return tempArr.join("&");
    }
    </script>

    </body>
    </html>


    fichier .as :
    package com.example.programmingas3.capabilities {
    import flash.system.Capabilities;
    import flash.external.ExternalInterface;
    import flash.net.URLVariables;
    import flash.display.Sprite;
    import flash.external.*;

    public class CapabilitiesGrabber extends Sprite {
    public static function getCapabilities():Array {
    var capDP:Array = new Array();
    capDP.push({name:"Capabilities.avHardwareDisable", value:Capabilities.avHardwareDisable});
    capDP.push({name:"Capabilities.hasAccessibility", value:Capabilities.hasAccessibility});
    capDP.push({name:"Capabilities.hasAudio", value:Capabilities.hasAudio});
    capDP.push({name:"Capabilities.hasAudioEncoder", value:Capabilities.hasAudioEncoder});
    capDP.push({name:"Capabilities.hasEmbeddedVideo", value:Capabilities.hasEmbeddedVideo});
    capDP.push({name:"Capabilities.hasIME", value:Capabilities.hasIME});
    capDP.push({name:"Capabilities.hasMP3", value:Capabilities.hasMP3});
    capDP.push({name:"Capabilities.hasPrinting", value:Capabilities.hasPrinting});
    capDP.push({name:"Capabilities.hasScreenBroadcast", value:Capabilities.hasScreenBroadcast});
    capDP.push({name:"Capabilities.hasScreenPlayback", value:Capabilities.hasScreenPlayback});
    capDP.push({name:"Capabilities.hasStreamingAudio", value:Capabilities.hasStreamingAudio});
    capDP.push({name:"Capabilities.hasStreamingVideo", value:Capabilities.hasStreamingVideo});
    capDP.push({name:"Capabilities.hasTLS", value:Capabilities.hasTLS});
    capDP.push({name:"Capabilities.hasVideoEncoder", value:Capabilities.hasVideoEncoder});
    capDP.push({name:"Capabilities.isDebugger", value:Capabilities.isDebugger});
    capDP.push({name:"Capabilities.language", value:Capabilities.language});
    capDP.push({name:"Capabilities.localFileReadDisable", value:Capabilities.localFileReadDisable});
    capDP.push({name:"Capabilities.manufacturer", value:Capabilities.manufacturer});
    capDP.push({name:"Capabilities.os", value:Capabilities.os});
    capDP.push({name:"Capabilities.pixelAspectRatio", value:Capabilities.pixelAspectRatio});
    capDP.push({name:"Capabilities.playerType", value:Capabilities.playerType});
    capDP.push({name:"Capabilities.screenColor", value:Capabilities.screenColor});
    capDP.push({name:"Capabilities.screenDPI", value:Capabilities.screenDPI});
    capDP.push({name:"Capabilities.screenResolutionX", value:Capabilities.screenResolutionX});
    capDP.push({name:"Capabilities.screenResolutionY", value:Capabilities.screenResolutionY});
    capDP.push({name:"Capabilities.version", value:Capabilities.version});
    var navArr:Array = CapabilitiesGrabber.getBrowserObjects();
    trace(navArr.length)
    if (navArr.length > 0) {
    capDP = capDP.concat(navArr);
    }
    capDP.sortOn("name", Array.CASEINSENSITIVE);
    return capDP;
    }
    private static function getBrowserObjects():Array {
    var itemArr:Array = new Array();
    var itemVars:URLVariables;
    if (ExternalInterface.available) {
    try {
    var wrapperFunction:String = "JS_getBrowserObjects";
    var tempStr:String = ExternalInterface.call(wrapperFunction);
    trace(tempStr)
    itemVars = new URLVariables(tempStr);
    for (var i:String in itemVars) {
    itemArr.push({name:i, value:itemVars[i]});
    }
    } catch (error:SecurityError) {
    // ignore
    }
    }
    return itemArr;
    }
    }
    }

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    pb résolu.Tout bétement, il fallait insérer le code javascript dans le html wrapper et non pas créer un nouveau html

Discussions similaires

  1. ExternalInterface et FileReference avec IE7.
    Par lutcho dans le forum Flash
    Réponses: 2
    Dernier message: 03/05/2009, 11h11
  2. [FLASH 8] Problème avec ExternalInterface
    Par ViveLesQuads dans le forum Flash
    Réponses: 7
    Dernier message: 03/11/2006, 16h51
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo