wie kann man javascript für die Kommunikation mit flash (Objekt #<HTMLObjectElement> hat keine Methode

Ich bin versucht, senden Sie eine einfache test-message aus javascript an flash, aber ich bin immer der Fehler:

Object #<HTMLObjectElement> has no method "listenToJS"

Ich gelesen habe, eine Reihe von Fragen auf, diese auf den stack, aber ich fühle mich wie entweder der browser ist nicht immer die richtige Referenz zu meinem flash-Objekt, oder in meinem actionscript-ich bin nicht putting meine flash-Funktion an der richtigen Stelle.

Also in html bin ich die Einbettung von flash mit SWFObj:

<div id="flash_content">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1280" height="800" id="tourFlash" name="pano" class="pano">
        <param name="movie" value="VRDemo.swf" />
        <param name="menu" value="false" />
        <param name="wmode" value="transparent" />
        <param name="allowscriptaccess" value="always" />
        <!--[if !IE]>-->
        <object type="application/x-shockwave-flash" data="VRDemo.swf" width="1280" height="800" class="pano">
            <param name="menu" value="false" />
            <param name="wmode" value="transparent" />
            <param name="allowscriptaccess" value="always" />
            <param name="allownetworking" value="all" />
            <param name="flashvars" value="zoom=null&amp;pan=null&amp;sound=null" />
        <!--<![endif]-->
            <a href="http://www.adobe.com/go/getflashplayer">
                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
            </a>
        <!--[if !IE]>-->
        </object>
        <!--<![endif]-->
    </object>
</div>

<script>

var flashObj; 

$(document).ready(function(){

    flashObj = document.getElementById('tourFlash');

    $('#interface').click(function(){
        console.log('click');
        talkToFlash();
    });
});

function talkToFlash(){
    flashObj.listenToJS('hello from js');
}

function listenFromFlash(flashMessage){
    console.log(message);
}
</script>

Den click-handler ausgelöst wird, aber hier bekomme ich die Fehlermeldung. Meine flash-Datei verwendet eine Dokument-Klasse, und in der Dokument-Klasse ist die öffentliche Funktion. Flash ist wie folgt aufgebaut:

package com.company.vr {

    import flash.display.*;
    import flash.events.*; 
    import com.greensock.*;
    import com.greensock.easing.*;
    import flash.external.ExternalInterface;
    import flash.system.Security;

    Security.allowDomain("*");

     public class VR_TestDocument extends MovieClip {
            public function VR_TestDocument() {
              ExternalInterface.addCallback("talkToFlash", listenToJS);
            }


            public function listenToJS(message){
              trace ("from js: " + message);
              var flashMessage = message + " flash";
              ExternalInterface.call("listenFromFlash", flashMessage);
            }
     }
}

- - - - UPDATE---

Sieht es aus wie Externe Interface nicht so wie SWFObject aus irgendeinem Grund. Wenn ich auf die Methode der Einbettung von Flash in diesem Beispiel verwendet:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback()

funktioniert es, aber ich fühle mich wie swfobject ist der beste Weg, um flash einbetten. Hat jemand irgendwelche Ideen?

haben Sie dies erlebt? blago.net/coding/snippets/...

InformationsquelleAutor mheavers | 2013-01-15

Schreibe einen Kommentar