Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Вызов AS 3 функции из JavaScript (http://www.flasher.ru/forum/showthread.php?t=208534)

web5talker 24.07.2014 21:31

Вызов AS 3 функции из JavaScript
 
Смотрел хелп, так и не понял, как вызвать функцию во флеше из JS с передачей аргумента.

alexandrratush 24.07.2014 22:37

Все просто:
Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.external.ExternalInterface;
        import flash.system.Security;
 
        public class Main extends MovieClip
        {
 
                public function Main()
                {
                        init();
                }
 
                public function init():void
                {
                        if (ExternalInterface.available)
                        {
                                ExternalInterface.call("initApp");
 
                                ExternalInterface.addCallback("callFunc", callFromJSCallback);
                        }
                }
 
                private function callFromJSCallback(text:String):void
                {
                        labelTest.text = text;
                }
 
        }
 
}

Код:

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="utf-8"/>
        <title>Main</title>
        <meta name="description" content="" />
        <script type="text/javascript">
               
                /** Сохраняем ссылку на СВФ-объект */
                var swfObj = new Object();
               
                onload = function()
                {
                        sync();
                }
               
                function sync()
                {
                        // Получаем ссылку на нашу SWF
                        swfObj = swfobject.getObjectById("Main");
                       
                        console.log("swfObj", swfObj);
                }
               
//- FUNCTION CALL IN FLASH
               
                function callFuncFlash()
                {
                        console.log("swfObj", swfObj);
                       
                        swfObj.callFunc("test1");
                }
               
//-        FUNCTION CALL FROM FLASH

                /** Функция вызывается из флешки, и сообщает, что приложение загрузилось */
                function initApp()
                {
                        sync();
                }
               
        </script>
       
       
        <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
        <script>
                var flashvars = {
                };
                var params = {
                        menu: "false",
                        scale: "noScale",
                        allowFullscreen: "true",
                        allowScriptAccess: "always",
                        bgcolor: "",
                        wmode: "direct" // can cause issues with FP settings & webcam
                };
                var attributes = {
                        id:"Main"
                };
                swfobject.embedSWF(
                        "Main.swf",
                        "altContent", "550px", "400px", "10.0.0",
                        "expressInstall.swf",
                        flashvars, params, attributes);
        </script>
        <style>
                html, body { height:100%; }
                body { margin:0; }
        </style>
</head>
<body>
       
        <input type="button" value="Call" onclick="callFuncFlash()">
       
        <div id="altContent">
                <h1>Main</h1>
                <p><a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a></p>
        </div>
</body>
</html>


web5talker 24.07.2014 22:47

alexandrratush, спасибо! Flasher как всегда выручил! :)


Часовой пояс GMT +4, время: 04:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.