0

I am trying to call a AS3 function from javascript but getting the following error in browser:

Object doesnot support property or method myCreateFile .

Below is the AS3 class:

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 code:

<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>

Any idea what is wrong when I try to call the myCreateFile() AS3 function which is present in CreateDoc class from java script?

1 Answer 1

1

The problem is that you have used same id in three places. Change "flashcontent" here: swfobject.embedSWF("CreateDoc.swf", "flashcontent" , ... to something else , unique_id for example , so it will be: swfobject.embedSWF("CreateDoc.swf", "unique_id" ... . After that use this id here : document.getElementById("flashcontent"); too , like document.getElementById("unique_id");

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.