Возврат переменной из ExternalInterface.call () обратно во Flash - PullRequest
1 голос
/ 17 февраля 2010

Я вызываю функцию JS с ExternalInterface.call и пытаюсь получить возвращаемое значение внутри Flash. Когда я отслеживаю переменную op, я получаю 0 вместо 500. Что-то не так с моим кодом встраивания?

Код для вставки:

<embed src="/sites/default/files/flash/flashgame/Preload.swf" width="975" height="572" align="middle" FlashVars="entry=login" quality="high" bgcolor="#ffffff" name="slider" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

JS:

function get_current_points(){
    // Hardcoded return value for testing
    return 500;
}

Actionscript:

var op:Number = ExternalInterface.call("get_current_points") as Number;

Ответы [ 5 ]

1 голос
/ 12 марта 2011

Кроме того, я не думаю, что вы можете получить возвращаемое значение от вызова внешнего интерфейса.Я думаю, вам нужно настроить функцию обратного вызова.ActionScript вызывает JavaScript, затем JS вызывает AS с отдельной функцией.

Если бы вам пришлось ждать возвращаемого значения для каждого вызова между сценариями, это, вероятно, замедлило бы просмотр фильма.

1 голос
/ 17 февраля 2010

@ knuckfubuck, я думаю, вы не используете правильное имя функции, на что указывает RobertBak. В противном случае код прекрасно работает, когда я запускаю его на моем т / с.

@ OXMO456, 'as Number' не имеет никакого отношения к этой проблеме. В этом случае «Number (Ext ....)» и «Ext .. as Number» работают нормально.

Надеюсь, это поможет, Ashine.

=============================================== ================================

@ khuckbuck в ответ на ваш комментарий, я уверен, что функция не становится видимой во Flex. Попробуйте использовать if (ExternalInterface.available) внутри flex, чтобы проверить, доступен ли интерфейс для flex. Это поможет нам выявить проблему.

0 голосов
/ 03 сентября 2014

Получить возвращаемое значение во Flash рискованно. Это не работает, как ожидалось, на всех браузерах. На самом деле я переделываю свой код, потому что Internet Explorer отказывается возвращать возвращенные значения. Я предлагаю воспользоваться советом Джастина Путни.

Привет

0 голосов
/ 17 февраля 2010

Я думаю, вы получите 0, потому что вы используете: as Number.

Используйте Number(ExternalInterface.call("get_current_points")) вместо.

0 голосов
/ 17 февраля 2010

это только в этом примере, или может быть, что у вас есть несоответствие в именах функций?

потому что значение должно быть NaN вместо 0, если вы не получите правильное возвращаемое значение.

в противном случае ваш код кажется правильным.

...