我有一个使用loadMovieNum(“flash.swf”,2)调用另一个AS2 Flash文件的AS2 Flash SWF和一个使用计时器调用页面上的函数的JavaScript文件。这是我在Firefox中使用Flash 10获得的(IE8没有提供错误消息):
未捕获的异常:调用错误 NPObject上的方法! [插件例外: Actionscript中的错误。使用try / catch 阻止发现错误。]。
出了什么问题?我看不出有什么问题。假设清除嵌入式swf的内容并使用Flash警告对话框确认是或否。
闪光:
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>
答案 0 :(得分:0)
同样的老故事 - NPObject。
我将Flash从图片中删除,并且能够使用CSS和JavaScript实现相同的功能。解决这个问题的方法是为Flash创建一个策略文件但是对于这么简单的事情,我只是朝着另一个方向去了,所以不要调试。