2011-12-30 21 views
2

外部インターフェイスから呼び出される複数のファイルアップロードフラッシュアプ​​リケーションを作成しようとしていますが、動作していません。AS3/JavaScript ExternalInterfaceとファイルアップロード

AS3:

var fileRef:FileReferenceList; 

ExternalInterface.addCallback('selectFiles', showDialog); 

function showDialog() 
{ 
    fileRef = new FileReferenceList(); 
    fileRef.browse(); 

// ExternalInterface.call('ASalert'); 
} 

のJavaScript/jQueryの:

$(function(){ 
    var uploader = this['_uploader']; 

    $('#selectFiles').click(function(){ 
    uploader.selectFiles(); 
    }) 
}) 

function ASalert() { 
    alert('Fired'); 
} 

私はスクリプトを実行し、fileRef部品をコメントアウトし、アラートコールのコメントを解除し、それは私がコメントするときにも、警告を示しExternalInterface呼び出しを呼び出し、fileRef部分だけを残して、ファイルアップロードダイアログを表示します。意図したとおり、私はそれを実行

、私は次のエラーを取得する:

Error calling method on NPObject 

は、それらを一緒に使用してGoogleは、アップロードファイルまたはAS3でのExternalInterfaceを使用してのいずれかでのチュートリアルの終わることのないリストを振るっ検索ませんが、何も!

アイデア?

+0

'FileReferenceList'はおそらく' FileReferenceList'であるはずですが、あなたの 'ExternalInterface.addCallback()'はおそらく関数への参照であり、無名関数ではないはずです。 – Taurayi

+0

私は知っている、それは私が実際に私の携帯電話でこれを入力しているようにそれを書くのタイプミスと迅速な方法だった...私は言ったように、それの個々の部分はうまく、ちょうど一緒に動作しません。 –

+0

あなたは正確に何をしようとしていますか? – Taurayi

答えて

3

のExternalInterfaceの可用性をチェックした状態でごExternalInterface.addCallback('selectFiles', showDialog);文をラップしてみてください、あなたはこれでトラブルに実行しようとしていることがその問題を解決しても、また

if(ExternalInterface.available) 
{ 
    ExternalInterface.addCallback('selectFiles', showDialog); 

} 

function showDialog() 
{ 
    fileRef = new FileReferenceList(); 
    fileRef.browse(); 

// ExternalInterface.call('ASalert'); 
} 

マウスクリックやキー入力のような何らかのユーザー操作を行わずにFileReferenceList.browse()を呼び出すことはできません。これを回避する方法はありません。

+0

それを明確にしてくれてありがとう!私は、マルチファイルアップロードのためのHTML5フォールバックを作成しようとしていましたが、それはサイトの外観をあまりにも大幅に変更しませんでしたが、私はできないようです。 HTML5のサポートが改善されるまで、Flashのアップロードを使用します。あなたは私の音楽プレーヤーで私を助けてくれました。私がやった理由は変わってHTML5フォールバックとしてもそれを統合することでした! –

+0

''を使用してみませんか?私があなたを正しく理解しているなら、それはHTML5を必要としません。普通のHTMLだけです。そうすれば、あなたはフラッシュするためにフォールバックする必要はありません。また、Flash5がHTML5の代替品となるのは、もっと意味があると思います。 – Taurayi

+0

ああ、あなたは複数のファイルのアップロードを望んでいないので、 'FileRereferenceList'。 – Taurayi

2

ここでは、対話イベントからbrowse()にしかコールできないという問題はありませんか?

Adob​​eは言う:

In Flash Player 10 and Flash Player 9 Update 5, you can only call this method successfully in response to a user event (for example, in an event handler for a mouse click or keypress event). Otherwise, calling this method results in Flash Player throwing an Error exception.

は、フラッシュデバッグプレーヤーをインストールしてみて、あなたがその例外を取得するかどうか、それをキャッチし、エラーメッセージを表示してみてください。

+0

はい、Taurayiはすでに私が正しい答えとして選んだことを彼の答えで指摘しました! –

+0

ああ、申し訳ありませんが、その部分を逃した:) –

関連する問題