Я просмотрел каждый ресурс, который мог найти, чтобы создать обтекаемый способ сделать это, но каждый раз, когда я пытаюсь, я получаю одну из основных ошибок. Я просто не могу заставить его работать!Запустить функцию флэш-объектов, встроенную в swfobject's embedSWF?
Вот мой флэш-тест ActionScript от первого ключевого кадра моего фильма:
import flash.external.*; //THIS...
System.security.allowDomain("http://localhost", "*"); //...AND THIS ALSO REQUIRED!
if (ExternalInterface.available) {
trace("ExternalInterface= " + ExternalInterface.available);
flash.external.ExternalInterface.addCallback("myExternalMethod", null, myFunction);
}
function myFunction() {
gotoAndStop(2);
}
А вот мой JavaScript/немного JQuery:
<script type="text/javascript">
var flashvars = {};
var params = {
wmode: "transparent",
allowscriptaccess: "always"
};
var attributes = { //The addition of these attributes make it work!
id: "number-input",
name: "number-input"
};
var embedHandler = function (e){
mySWF = e.ref;
};
swfobject.embedSWF("images/flash-form.swf", "number-input", "800", "320", "9.0.0", "expressInstall.swf", flashvars, params, attributes, embedHandler);
function executeFlash() {
getObjectById("number-input").myExternalMethod();
}
function getObjectById(objectIdStr) {
var r = null;
var o = document.getElementById(objectIdStr);
if (o && o.nodeName == "OBJECT") {
if (typeof o.SetVariable != undefined) {
r = o;
} else {
var n = o.getElementsByTagName(OBJECT)[0];
if (n) {
r = n;
}
}
}
return r;
}
$(function() {
$('#main-button-big').click(function(event){
event.preventDefault();
executeFlash();
});
});
</script>
Вспышка, кажется, успешно внедрить, если я сделаю что-то глупое как ...
$(mySWF).hide();
... он скрывается, поэтому я уверен, что скрипт t может видеть объект. не
Независимо от того, какие методы я пытался сделать, я всегда (тестирование в светлячок) получаю сообщение об ошибке, как:
Ошибка: Ошибка типа: mySWF.myExternalMethod не является функцией.
В сафари:
TypeError: 'не определено' не является функцией (оценка 'mySWF.myExternalMethod()')
Если я пытаюсь версию JQuery из getElementById (обогнуть embedHandler) я получаю:
Ошибка: TypeError: $ (...). MyExternalMethod не является функцией. или TypeError: «undefined» не является функцией (оценка «$ ('# number-plate-input»). myExternalMethod()')
Мне нужно, чтобы этот проект был завершен быстро и я в конце моего троса , Любая помощь будет очень благодарна.
ОБНОВЛЕНО: Обратите внимание, что embedHandler больше не нужен и не используется для запуска каких-либо событий. Это полезный кусок кода, хотя, так что я решил оставить его в
Я тестирую на своем сервере Apache Macs. не просматривая страницу через файловую систему, я также установил корень папок apache как надежное место в настройках глобальной безопасности Flash. – adamg2000
Вы действительно вызываете метод на фактическом экземпляре Flash Player, а не, например, на элемент, содержащий Flash? Другими словами, можете ли вы подтвердить, что mySWF ссылается на правильную вещь, когда вы вызываете mySWF.myExternalMethod()? –