2010-02-10 8 views
0

J'ai un SWF AS2 Flash qui appelle un autre fichier Flash AS2 en utilisant loadMovieNum ("flash.swf", 2) et un fichier JavaScript qui appelle une fonction sur la page en utilisant un timer. C'est ce que je reçois dans Firefox avec Flash 10 (IE8 donne pas de message d'erreur):Problème avec Flash et JavaScript Communication

exception uncaught: Erreur appelant la méthode sur NPObject! [exception du plugin: Erreur dans Actionscript. Utilisez un bloc try/catch pour trouver l'erreur.].

Qu'est-ce qui ne va pas? Je ne peux pas voir un problème. Il est supposé effacer le contenu du fichier SWF incorporé et utiliser une boîte de dialogue d'alerte Flash pour confirmer Oui ou Non

éclair:

import flash.external.ExternalInterface; 
import mx.controls.Alert; 

System.security.allowDomain("mydomain.com"); 

function getTimeOut() 
{ 
// Show alert dialog box 
_level2._visible = false; 
Alert.show("You are about to Timeout. Do you want to continue using Courseware?", "Timeout", Alert.YES | 
Alert.NO, this, myClickHandler); 
} 

ExternalInterface.addCallback("timeOut", this, getTimeOut); 

this.onMouseDown = function(){ 
//if not on login 
getURL("javascript:startTimer();"); 
}; 

var myClickHandler:Function = function (evt_obj:Object) { 
switch (evt_obj.detail) { 
    case Alert.YES : 
    getURL("javascript:buttonEvent('yes');"); 
    break; 
    case Alert.NO : 
    getURL("javascript:buttonEvent('no');"); 
    break; 
} 
_level2._visible = true; 
}; 

//load courseware 
loadMovieNum("embedded.swf",2); 

JavaScript:

<script type="text/javascript"> 
    // <![CDATA[ 

    var so = new SWFObject("main.swf", "mainMovie", "100%", "100%", "9", "#083770"); 
    so.addParam("scale", "noscale"); 
    so.addParam("quality", "high"); 
    so.addParam("allowScriptAccess","always"); 
     so.write("flashcontent"); 

    var timerMin = '<?php echo($timerMinutes); ?>'; 
    var timer; 
    var timer2; 

    function startTimer() 
    { 
    var timerMill = 0; 
    clearTimeout(timer); 
    timerMill = getMillis(); 
    timer = setTimeout ('stopTimer()', timerMill); 
    } 

    function stopTimer() 
    { 
    clearTimeout(timer); 
    timer2 = setTimeout('redirectPage()', 60000); 

    //call flash function 
    getFlashMovie("mainMovie").timeOut(); 
    } 

    function buttonEvent(evt) 
    { 
    if(evt == 'yes') 
    { 
    clearTimeout(timer2); 
    startTimer(); 
    } 
    else 
    { 
    clearTimeout(timer2); 
    redirectPage(); 
    } 
    } 

    function getMillis() 
    { 
    var milliseconds = 300000; 

    if(timerMin == parseInt(timerMin)) 
    { 
    //convert to milliseconds 
    //60000 milliseconds in 1 minute 
    milliseconds = (parseInt(timerMin)) * 60000; 
    } 

    return milliseconds; 
    } 

    function getFlashMovie(movieName) 
    { 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
    //return document.getElementById(movieName); 
    } 

    function redirectPage() 
    { 
    top.location = "timeout.php?t=<?php echo($timerMinutes); ?>"; 
    } 

    // ]]> 
</script> 

Répondre

0

même histoire - NPObject .

J'ai sorti Flash de l'image et j'ai pu réaliser la même chose en utilisant CSS et JavaScript. Le correctif pour cela est de créer un fichier de politique pour Flash mais pour quelque chose d'aussi simple, je suis simplement allé dans une autre direction afin de ne pas déboguer.

Questions connexes