【问题标题】:AS3 function call from javascript来自 JavaScript 的 AS3 函数调用
【发布时间】:2013-06-12 12:40:50
【问题描述】:

我正在尝试从 javascript 调用 AS3 函数,但在浏览器中出现以下错误:

对象不支持属性或方法 myCreateFile 。

下面是AS3类:

package {
import flash.display.Sprite;
    import flash.external.ExternalInterface;
    import flash.net.FileReference;             
import flash.events.IOErrorEvent;
import flash.events.Event;
import flash.system.Security;

public class CreateDoc extends Sprite {
    private static const DEFAULT_FILE_NAME:String = "example.txt";

    //FileReference Class well will use to save data
    private var fr:FileReference;

    public function CreateDoc()
    {
        // Register the function for external use.
        ExternalInterface.addCallback("myCreateFile", myCreateFile);
        Security.allowDomain("*");
    }

    public function myCreateFile():void
    {
        fr = new FileReference();
        //open a native save file dialog, using the default file name
        fr.save("Demo file", DEFAULT_FILE_NAME);

        fr = null;         
    }
}
}

HTML 代码:

<html>
<head>      
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
        try{
            var flashvars = {};
            var params = {allowscriptaccess:"always", movie:"CreateDoc.swf", wmode:"opaque", menu:"false"};
            var attributes = {id:"flashcontent",  name:"flashcontent"};
            swfobject.embedSWF("CreateDoc.swf", "flashcontent", "800", "600", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
        }
        catch(err){
            alert(err.message);
        }
    </script>

    <script type="text/javascript">
        function doFunction(){
            alert('Calling function..');
            try{
                var myObj = document.getElementById("flashcontent");
                myObj.myCreateFile();
            }
            catch(err){
                alert(err.message);
            }
        }
    </script>
</head>
<body>
    <div id="flashcontent">
    </div>

    <input id="save file" type="button" value="clickme" onclick="doFunction();" />
</body>

知道当我尝试从 java 脚本调用 CreateDoc 类中存在的 myCreateFile() AS3 函数时出了什么问题吗?

【问题讨论】:

    标签: javascript html actionscript-3 flash


    【解决方案1】:

    问题是您在三个地方使用了相同的id。在此处更改“flashcontent”: swfobject.embedSWF("CreateDoc.swf", "flashcontent" , ... 到别的东西,例如unique_id,所以它将是:swfobject.embedSWF("CreateDoc.swf", "unique_id" ...。之后在这里使用这个 id:document.getElementById("flashcontent");,比如document.getElementById("unique_id");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多