У меня есть требование в проекте, который должен вызвать функцию actioncript 3 из javascript. Я прочитал много ответов из stackoverflow и adobe и создал простое тестовое приложение. В этом я использовал ExternalInterface.addCallback для регистрации обеих функций, и я также включил разрешения безопасности как в actionscript, так и в html.вызов actioncript 3 функция из javascript с addCallback не работает
Action Script 3 Встроенный код
Я не использовать внешний .as файл вместо я использовал панель действий для создания кода.
import fl.controls.Button
import flash.events.MouseEvent;
flash.system.Security.allowDomain("*")
var butt:Button = new Button();
addChild(butt);
butt.label = "hello";
butt.toggle = true;
butt.move(50, 50);
butt.height = 100;
butt.addEventListener(MouseEvent.CLICK, clickhandle);
function clickhandle(e:MouseEvent)
{
if(butt.height == 100)
butt.height = 200;
else butt.height = 100;
}
ExternalInterface.addCallback("callas", clickhandle);
В тестовом приложении будет отображаться кнопка ac3. Нажав на эту кнопку, он будет переключать расширение и сворачивание своей высоты с помощью обработчика щелчка «clickhandle». Это функция, которую я намереваюсь вызывать из javascript.
HTML код
<html>
<head>
<script>
function callas() {
var hehe = document.getElementById('cvpanel');
console.log(hehe);
hehe.clickhandle();
}
</script>
</head>
<body>
<p>Test</p>
<object id='cvpanel' name='cvpanel' width="425" height="350" type="application/x-shockwave-flash" data="one.swf">
<param value="one.swf" name="movie">
<param name="allowscriptaccess" value="always"/>
<p>You need Flash to see it.</p>
</object>
</body>
</html>
Приложение работает под http://localhost через апач и все файлы, необходимые в той же папке. Я мог запустить приложение и видеть, как появятся кнопки. Нажимая на них, они переключаются по высоте, как ожидалось.
Когда я вызываю функцию каллы из консоли браузера я получаю сообщение об ошибке в консоли, как
"TypeError: hehe.clickhandle is not a function"
в Firefox и аналогичные в Internet Explorer.
Есть что-то не хватает?
Я получил Сообщ ошибки в консоль вроде «Метод вызова ошибок в NPObject!» –
После поиска вышеуказанной ошибки я наткнулся на предложения по вопросу, который просил следовать определенным правилам. http://stackoverflow.com/questions/5607726/how-can-i-overcome-error-calling-method-on-npobject-and-play-a-swf. В этом пользователь «nuton» предложил вызвать функцию с точными параметрами, и если нет параметров, то функция должна пройти null. Итак, я позвонил как hehe.callas (null), и это сработало. Кроме того ... (contd) –
Я столкнулся с https://bugzilla.mozilla.org/show_bug.cgi?id=308814, в котором многие пользователи после выполнения systest обнаружили, что запуск приложения с реального хоста (live web-сервера) работает хорошо. Да, для меня в localhost это не сработало даже после добавления null. Я загрузил флеш-файл и html-файл на свой веб-сервер, и он сработал. Я следовал только двум условиям. Один передает значение null, а другой запускает приложение с веб-сервера. и я не придерживался других предложений. –