Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从javascript调用flash函数可以工作,但FileReference在flash中不工作?_Javascript_Actionscript_Filereference_Addcallback - Fatal编程技术网

为什么从javascript调用flash函数可以工作,但FileReference在flash中不工作?

为什么从javascript调用flash函数可以工作,但FileReference在flash中不工作?,javascript,actionscript,filereference,addcallback,Javascript,Actionscript,Filereference,Addcallback,我需要从javascript调用flash函数。我使用flash.external和addCallback来实现这一点。所有的事情都很好,但当我在flash中使用FileReference时,该功能并没有打开我的浏览器 请参见以下说明: 我使用以下代码在javascript中调用我的函数: 您可以看到我的所有HTML,如下所示: 我只有一个场景,这个代码在这个场景的根上。我有一个名为uploadButton的电影剪辑,在这个示例中只有一个矩形作为按钮。 当你点击矩形浏览_fileHello Wo

我需要从javascript调用flash函数。我使用flash.external和addCallback来实现这一点。所有的事情都很好,但当我在flash中使用FileReference时,该功能并没有打开我的浏览器

请参见以下说明: 我使用以下代码在javascript中调用我的函数: 您可以看到我的所有HTML,如下所示:

我只有一个场景,这个代码在这个场景的根上。我有一个名为uploadButton的电影剪辑,在这个示例中只有一个矩形作为按钮。 当你点击矩形浏览_fileHello World!从闪光;调用并打开浏览器,您可以选择要上载的照片。 当您在html中单击浏览时,必须执行相同的过程,但正如您看到的变量“发送到”功能,但选择照片的浏览器不再打开。 我尝试了几种方法。例如,我将新功能设置为仅打开图片浏览器,或设置新场景,或使用gotoAndPlay等,但还有另一个问题。 您可以从以下链接下载我的源代码: 请注意,javascript onclick=sendToFlash'helloworld!从HTML';不要在直接打开的情况下工作。您必须在localhost中打开它。 我很乐意得到任何线索。 非常感谢
Reza Amya

您不能通过编程调用browse,它必须通过在Flash中单击鼠标来实现:

在Flash Player 10和Flash Player 9更新5中,您只能调用 此方法成功响应用户事件,例如,在 鼠标单击或按键事件的事件处理程序。否则 调用此方法会导致Flash Player抛出错误 例外


经过一天的阅读,我知道这是不可能的安全原因。 然后,您不能以任何方式使用addCallback javascript代码打开文件引用。欲了解更多信息,请阅读

再次感谢 雷扎·阿米亚

<html>
<head>
<title>Upload test</title>
</head>
<script>
function hello (size) {
    alert ("size hast: " + size);
}

function sendToFlash(val){
    var flash = getFlashObject();
    flash.new_browser(val);
}

var flash_ID = "Movie2";
var flash_Obj = null;
function getFlashObject(){
    if (flash_Obj == null){
        var flashObj;
        if (navigator.appName.indexOf( "Microsoft" ) != -1){
           flashObj = window[flash_ID];
        } 
        else{
           flashObj = window.document[flash_ID];
        }
        flash_Obj = flashObj;
    }
    return flash_Obj;
}
</script>

  <body>
    <center>

    <embed width="560" height="410" type="application/x-shockwave-flash" 
    flashvars="sampleVars=loading vars from HTML" 
    salign="" allowscriptaccess="sameDomain" allowfullscreen="false" menu="true" name="Movie2" 
    bgcolor="#ffffff" devicefont="false" wmode="window" scale="showall" loop="true" play="true" 
    pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" 
    quality="high" src="Movie2.swf">

    </center>

    <input type="button" value="Browse" onclick="sendToFlash('Hello World! from HTML');" />
  </body>
</html>
resultsTxtField.text = "";
uploadButton.onPress = function () {
   return browse_file("Hello World! from Flash");
}

import flash.external.*;
ExternalInterface.addCallback("new_browser", this, browse_file);


function browse_file (my_test_val) {
    _root.resultsTxtField.text = "val: " + my_test_val;
    import flash.net.FileReference;
    var fileTypes:Array = new Array();
    var imageTypes:Object = new Object();
    imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
    imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
    fileTypes.push(imageTypes);

    var fileListener:Object = new Object();
    var btnListener:Object = new Object();
    var fileRef:FileReference = new FileReference();
    fileRef.addListener(fileListener);
    fileRef.browse(fileTypes);

    fileListener.onCancel = function(file:FileReference):Void
    {
      _root.resultsTxtField.text += "File Upload Cancelled\n";
    }

    fileListener.onSelect = function(file:FileReference):Void
    {
      _root.resultsTxtField.text += "File Selected: " + file.name + " file size: "+ file.size + " file type: " + file.type;
      getURL("javascript:hello("+file.size+");");
    }
}