AS3 - вызов внешнего Javascript - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь передать геолокацию по Javascript во Flash.Файл .SWF встроен в сайт HTML и имеет значение AllowScriptAccess = "always" .По какой-то причине функция getGEO () не принимает вызов.

JS:

<script>
        function getGEO()
        {
         alert("getGEO");
            if (navigator.geolocation)
            {
                navigator.geolocation.getCurrentPosition(function(position)
                {
                    lat = position.coords.latitude
                    long = position.coords.longitude;
                    passGEOToSWF(lat, long);
                });
            } else {

            }
        }

AS3:

if (ExternalInterface.available) 
{  
    try 
    {
        ExternalInterface.call("getGEO");
        ExternalInterface.addCallback("passGEOToSWF", onPassGEOToSWF);
    } 
    catch (error:SecurityError) 
    {
    } 
    catch (error:Error) 
    {
    } 
}

function onPassGEOToSWF(lat:*,long:*):void
{
    trace(lat,long);
}

Что мне здесь не хватает?

1 Ответ

3 голосов
/ 29 марта 2012

У вас есть:

ExternalInterface.call("getGEO");
ExternalInterface.addCallback("passGEOToSWF", onPassGEOToSWF);

Возможно, вы захотите попробовать:

ExternalInterface.addCallback("passGEOToSWF", onPassGEOToSWF);
ExternalInterface.call("getGEO");

Внешний вызов JS может завершиться до того, как AS3 зарегистрирует обратный вызов.1008 *

Чтобы получить ссылку на флэш-фильм, который вам нужен для вызова обратного вызова AS3, вам нужна функция, подобная следующей ( source )

function getFlashMovieObject(movieName){
    if (window.document[movieName]){
        return window.document[movieName];
    }
    if (navigator.appName.indexOf("Microsoft Internet")==-1){
        if (document.embeds &amp;&amp; document.embeds[movieName])
            return document.embeds[movieName];
    }
    else{
        return document.getElementById(movieName);
    }
}

Получив эту ссылку, вы можете вызвать обратный вызов AS3.Вот пример:

function SendDataToFlashMovie(lat, long){
    var flashMovie=getFlashMovieObject("main_flash");
    flashMovie.passGeoToSWF(lat, long);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...