Accessing an ActionScript function via Javascript

后端 未结 2 579
予麋鹿
予麋鹿 2021-02-09 17:21

I\'m trying to call a function in an action script using the ExternalInterface.addCallback API, but I can\'t seem to get it to work. Here\'s what I have:

A

相关标签:
2条回答
  • 2021-02-09 17:52

    I think the issue is a matter of the flash not being loaded. I tried your code using the window.onload event and it worked for me:

    The flash is the same...

    HTML/JS :

    <!doctype html>
    <html>
        <head>
            <title>User Identification</title>
        <head>
        <body>
    
            <object id="MyClass" name="MyClass" type="application/x-shockwave-flash" data="MyClass.swf" width="1" height="1">
                <param name="movie" value="MyClass.swf">
                <embed src="MyClass.swf" width="1" height="1">
            </object>
    
            <script>
    
                window.onload = function() {
    
                    var flash = document.getElementById("MyClass");
                    var test = flash.getStringJS("test");
                    alert(test);   //pops up with "Hello World!" on Firefox
    
                };
    
            </script>
        </body>
    </html>  
    

    Does that help?

    0 讨论(0)
  • 2021-02-09 18:00

    I figured it out. The key way to signal the javascipt through ExternalInterface.call so we know for sure that the swf is loaded. The most "Universal" way to do this is as follows:

    MyClass.as

    //MyClass.as  
    package {
    
        import flash.display.Sprite;
        import flash.external.ExternalInterface;
    
        public class MyClass extends Sprite
        {
            public function MyClass()
            {
                ExternalInterface.addCallback('getStringJS', getStringAS);
                if  (ExternalInterface.available) {
                    ExternalInterface.call("isConnectedFlex");
                }
            }
    
            public function getStringAS():String
            {
                return "Hello World!";
            }
        }
    }
    

    index.html

    <!doctype html>
    <html>
        <head>
            <title>User Identification</title>
        <head>
        <body>
            <object id="MyClass" name="MyClass" type="application/x-shockwave-flash" data="MyClass.swf" width="1" height="1">
                <param name="movie" value="MyClass.swf">
                <embed src="MyClass.swf" width="1" height="1">
            </object>
            <script type="text/javascript">
    
                var flash = document.getElementById("MyClass");
    
                function isConnectedFlex() {
                    var str = flash.getStringJS();
                    alert(str);
                }
    
    
            </script>
        </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题