Несколько вещей в дополнение к предыдущим рекомендациям:
Вам нужно убедиться, что ваш флэш-фильм имеет
<param name="allowscriptaccess" value="always">
во встроенном коде. Если это не сработает, попробуйте выйти из функции в javascript, чтобы убедиться, что она существует, прежде чем вызывать ее, как в
var x=getFlashMovieObject("flashmovie");
console.log("function", x.Setvariable); // see what you get in your console log here
Если вы видите неопределенное в консоли, скорее всего, у вас есть проблема с секвенированием, и вам нужно будет изменить порядок выполнения, чтобы убедиться, что ваш SWF существует и обратный вызов был добавлен до его вызова. Многое происходит в эти доли секунды при инициализации, и вы хотите, чтобы все происходило в правильном порядке.
наконец, если это все еще не работает, возможно, существует проблема безопасности, которую вы можете быстро исправить, добавив
Security.allowDomain('*');
Прямо под определением вашего класса (или где вы храните код) в ActionScript. Если этот последний элемент устраняет проблему, вы можете заглянуть в Security.allowDomain, особенно если вы используете ExternalInterface и вас могут беспокоить атаки межсайтового скриптинга. В большинстве случаев это нормально, но может оказаться очень плохо, если ваш swf имеет доступ к вашей базе данных, будет загружен другими сайтами или областями вашего собственного сайта, которые должны быть безопасными, поэтому используйте глобальное решение выше только с осторожность.