ExternalInterface не связывает JavaScript и ActionScript 3 - PullRequest
0 голосов
/ 26 января 2011

Ни один из похожих вопросов не ответил на мою проблему, так что вот и все.Я хочу вызвать функцию actionscript 3 из JavaScript, но в консоли ошибок FF говорится, что функции, которую я вызываю из JS, не существует.Он говорит, что функции mover и mout не определены.

Вот функции JS в файле JS

function getFlashMovieObject(movieName) {
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}
function playF() {
getFlashMovieObject("Button2").mover();
}
function playB() {
getFlashMovieObject("Button2").mout();
}

Вот код в HTML

<object style="width: 413px; height: 76px;" id="Button2" onMouseOver="playF()"  onMouseOut="playB()">
    <param name="movie" value="homepage/flash/Button2.swf">
    <param value="transparent" name="wmode"/>
    <param value="false" name="loop"/>          
    <embed wmode="transparent" play=false src="homepage/flash/Button2.swf" width="413" height="76" loop="false" swliveconnect="true" name="Button2"></embed>
</object>

И кодв Actionscript 3

ran.stop();
function mover() {
    stopPlayReverse();
this.addEventListener(Event.ENTER_FRAME, playForward, false, 0, true);
}
function mout() {
stopPlayForward();
    this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
}
function playReverse(e:Event):void {
    if (ran.currentFrame == 1) {
        stopPlayReverse();
    } else {
        ran.prevFrame();
    }
}
function playForward(e:Event):void {
    if (ran.currentFrame == ran.totalFrames) {
    stopPlayForward();
} else {
    ran.nextFrame();
}
}
function stopPlayForward():void {
if (this.hasEventListener(Event.ENTER_FRAME)) {
    ran.removeEventListener(Event.ENTER_FRAME, playForward);
}
}
function stopPlayReverse():void {
    if (this.hasEventListener(Event.ENTER_FRAME)) {
        ran.removeEventListener(Event.ENTER_FRAME, playReverse);
    }
}
ExternalInterface.addCallback("mover", mover);
ExternalInterface.addCallback("mout", mout);

Идея заключается в том, что я хочу управлять парением мыши с помощью javascript, и при наведении курсора на объект фильм воспроизводится нормально, но когда я выхожу, фильм воспроизводится в обратном направлении.У меня есть видеоклип на одном слое, а на другом слое у меня есть код actionrcript.Может кто-нибудь сказать мне, что я делаю не так?Спасибо

1 Ответ

2 голосов
/ 26 января 2011

Коды AS3 и JS выглядят нормально, но вам нужно установить флаг allowScriptAccess в коде HTML.

...