2009-09-13 18 views
11

Javascript'ten Flash (AS3) işlevini çağırmaya çalışıyorum. Kod çalıştığında, "Hata: yakalanmamış özel durum: NPObject üzerinde hata çağrı yöntemi!" Hatası alıyorum. Günlüğümün etrafındaki gezintiden, bu bir güvenlik meselesi gibi görünüyor ve bulabildiğim her şeyi yaptım, ama hata hala ortaya çıkıyor.Javascript -> Flash atıyor "NPObject'de hata arama yöntemi"

Bazı ayrıntılar:
* Hem Flash 9 hem de Flash 10 oynatıcılar ile olur.
* swf, onu yükleyen ve Flash işlevini çağırmaya çalışan javascript'i içeren php dosyasıyla aynı etki alanındadır.
Ben, swf dosyasını yüklemek şöyle etmek sfwobject2.2 kullanıyorum * :

var flashvars = {};
var params = {};
var params = {menu: false, bgcolor: "#ffffff", allowScriptAccess: "always"};
swfobject.embedSWF("/path/to/swf", "id", "480", "310", "9.0.0", null, flashvars, params, attributes);


My Flaş film doğru bildiğim kadarıyla söyleyebilirim, allowDomain şeyi yapıyor:

Security.allowDomain("www.mydomain.com");

* ExternalInterface.addCallback'in düzgün şekilde ayarlandığını biliyorum - devre dışı bıraktığımda, NPObject şikayetinin yerine "böyle bir işlev yok" hatası alıyorum.

Bu beni tamamen çıldırtıyor ve nasıl düzeltileceğini anlayamıyorum. Orada herhangi bir tavsiye var mı?

+0

Hiç bir cevap buldunuz mu? Bende aynı sorun var. – UltimateBrent

cevap

10

Bulduğum cevap, bu hatayı birçok nedenden dolayı atmasıydı. Benimki, çağırdığı işlev için doğru sayıda argüman göndermiyordum.

+2

Çeşitli nedenleri açıklayan iyi bir belge buldunuz mu? Paylaşmak ister misiniz? – Fiid

+2

Önemli olan, tüm hataların bu çıktıya neden olmasıdır. Yanlış işlevi çağırabilir, yanlış sayıda param olabilir, güvenlik olabilir. – UltimateBrent

+0

Bu hatanın neden aralıklı olarak ortaya çıkabileceğine dair herhangi bir fikir var mı? Çalıştığım kod bazen ve başkalarıyla değil, aynı veri kümesiyle, vb. Çalışıyor. – Fiid

3

Flash Player'ın Debugging sürümünü Adobe'nin sitesinden yükleyerek, NPObject hatası yerine gerçek flaş istisnası olan bir iletişim kutusu alacağımı, bu nedenle bu, bu, bulmakta yararlı bir ilk adım olabilir. aslında neler oluyor.

Benim durumumda, bir şekilde, yanlış bir argüman sayısı geçiyor gibi görünüyor ve bunun nasıl gerçekleştiğinden emin değilim (aralıklı olarak), ama bu başka bir soru için. :)