0

Flash ActionScript は初めてです。オーディオを WAV 形式で録音するフラッシュ オーディオ レコーダー (変更されたjRecorder ) があり、MP3 エンコーディングのサポートを追加しました。レコーダーは、ExternalInterface.callback() を使用して JS のいくつかのパブリック関数をエクスポートし、Flash コンテナー (Web サイト) から ExternalInterface.call() を使用して JS コールバックも呼び出します。フラッシュ エクスポート関数が JS から呼び出されて記録/エンコード/その他を開始する場合、フラッシュからのその関数は、recording_started、recording_stopped、encoding_started、encoding_ended などのイベントの JS コールバック イベント ハンドラも呼び出します。IE、FF、Chrome では正常に動作しますが、動作しません。オペラで。

次のようにWebプロジェクトで使用しました-

-> 記録時間は最大 2 分で、ユーザーが停止 (ボタン) するか、時間制限に達すると記録が停止します。また、両方の条件で、「recording_stopped」イベントがトリガーされ、そのイベント ハンドラー内で mp3 エンコード関数が呼び出されます (フラッシュ エクスポート関数)。

-> ここでは、JS イベント ハンドラーがフラッシュによって呼び出され、フラッシュによってエクスポートされた関数を呼び出します。

問題は、オペラでは、エクスポートされたフラッシュ関数がハンドラー内で呼び出されないことです。関数がハンドラーの最後で呼び出されると、関数の上のすべてのコードが実行されますが、その関数は実行されず、関数をハンドラーの先頭に配置すると、その下のコードは実行されません。また、コンソールに JS エラーは表示されません。しかし、Flash のコールバック イベント ハンドラではない JS 関数から呼び出すと、関数は正常に実行されます。

Opera バージョン 11.51 & 12.15 と Flash Player バージョン 11.3、11.6 & 11.7 を搭載した 2 台の異なるコンピューターでテストしました。

Opera のバージョンは 12.15 で、Flash Player のバージョンは 11.7 です (すべてのブラウザで)。

なぜそれが起こっているのですか?

4

1 に答える 1