externe Schnittstelle und swfobject.js Problem

Vor einigen Monaten für ein Projekt bei der Arbeit entwickelte ich einen video-player mit flash, externe Schnittstelle und swfobject.js. Ich verwendete externe Schnittstelle für die Kommunikation zwischen javascript und actionscript. Dies funktioniert Super. Derzeit arbeite ich an einer Erweiterung dieser, die mich verpflichtet zu extrapolieren Logik von dem, was ich bereits geschrieben. Ich bin mit die gleiche swf-Datei in beiden Anwendungen, aber in der Verlängerung, die ich nicht bekommen kann das flash-Objekt zu erkennen, auf meine Anrufe. Da ich die gleiche swf-Objekt, ich weiß, dass mein problem liegt in javascript, ich weiß nur nicht wo. Ich bin mit der JQuery-Bibliothek. Ohne weitere adieu, hier mein code.

Unten in meiner js-Datei habe ich Folgendes stehen:

$(function(){
     //the video player shouldn't be built until the user presses the div with 'video-btn' class
    $('.video-btn').click(function(){
         var videoplayer = new VideoPlayer();
         videoplayer.addVideoPlayer();
         //external interface function
         videoplayer.player.loadVideo();
    });
});

Hier ist die definition für VideoPlayer.addVideoPlayer() - und es ist relevant, helper-Funktionen:

//inside of VideoPlayer object definition
this.addVideoPlayer = function(){
     var that = this;
     $('body').append('<div id="no-flash"></div>');

     //uses swfobject.js to replace the div i just appended with the flash object
     //This works fine.  the flash object replaces the div as intended
     that.embedFlashObject();
     //that.player is (supposed to be) a reference to flash object
     that.player = that.getFlashObject();
};

this.embedFlashObject = function(){
     var that = this;

     //set up all the variables to pass to swfobject.embedSWF

     //this method removes my div and replaces it with an object element that contains the swf file
     //the object tag gets an id which is specified.  Let's assume it's 'vp'
     swfobject.embedSWF(swfFile, 'no-flash', width, hieght, '9.0.0', ... );
};

this.getFlashObject = function(){
     var that = this;

     //this method returns the flash object to make external interface calls on
     //this the method prescribed by swfobject api  
     var videoObj = swfobject.getObjectById('vp');
     if(typeOf videoObj == 'undefined')
     {
          //check if useragent string is IE
          var isIE = navigator.userAgent.match(/MSIE/i);
          videoObj = isIE ? window['vp'] : document['vp'];
     }
     return videoObj;
};

In meinem $(function(){..}); block, wenn der Befehl 'videoplayer.player.loadMedia();' bekomme ich eine Fehlermeldung, die liest

.loadMedia ist nicht eine Funktion.

In der vorherigen version des Projektes (in dem ich die genau die gleiche swf-Datei), erhalte ich nicht diesen Fehler.

Ich nicht glaube, ich bin fehlen alle schweren logischen Fehler, und ich weiß, das ist schwer zu sagen, definitiv 'das ist dein Problem....' bei der Betrachtung abgekürzt und geschrubbt code. Statt eine eindeutige Antwort nehme ich Vorschläge, wie man diese debug-Ausgabe. Ich habe das Spiel aorund in die browser-Konsole und ich habe festgestellt, dass die 'Spieler' - Attribut des VideoPlayer-Objekts null ist. Bei mir lief die gleiche Konsole Abfrage gegen die funktionierende version von diesem Projekt-es spuckt wieder das object-tag. Ich kann nicht direkt auf das Objekt-tag, denn es bricht mit den Konventionen, die in der vorherigen version die ich brauche, um zu warten.

HELFEN!!!!!!!!!!!!!!!

InformationsquelleAutor aamiri | 2011-12-15
Schreibe einen Kommentar