5

「ExternalInterface.call()」を使用して、キャンバスの内容を返す JavaScript 関数を呼び出そうとしました。ただし、比較的小さなキャンバス (256x256) の場合、引数/戻り値のマーシャリングが原因のようで、これは非常に遅くなります (約 2 秒)。

Brad Neuberg の古い投稿 (2006 年以降) で提案されているように、キャンバス データを小さなチャンクに分割したとしても: http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash- 8s.html、まだパフォーマンスが低下しています。いずれにせよ、チャンクのサイズは Flash 9 の時点では問題になりません。

パラメータのマーシャリング/評価を行うFlash JavaScript関数を上書きしようとすることはまだ可能だと思いますが、これは非常に複雑なようで、それを試みる前に、もっと単純なものがないかどうかを知りたかったのです。

また、次のようにして、Flash と JavaScript を通信する古い方法を試しました。

var req : URLRequest = new URLRequest("javascript:getImage()"); 
var loader : Loader = new Loader();
loader.load(req);

「getImage()」は、キャンバスの内容を画像として返す JavaScript 関数です。ただし、「Loader.load()」関数ではなく「navigateToURL()」を使用しない限り、ブラウザー スクリプトをターゲット URL として使用することは許可されていないため、これはある種のセキュリティ違反エラーをスローします。残念ながら、前者は値を返しません。

「com.macromedia.javascript.JavaScriptProxy」クラスを使用する古いコードもいくつか見ましたが、テストしていないため、Flash 11 では使用できないようです。

どんな考えでも大歓迎です。ありがとう!

4

1 に答える 1

1

簡単なものと難しいものの 2 つのオプションが考えられます。

1)サーバーへのラウンドトリップ。同じくらい遅いかもしれませんが、Flash をロックしたり、スクリプトのタイムアウトを引き起こしたりする傾向はありません。

2) Flash の LocalConnection に接続できる HTML5 WebSocket を記述できるかどうかを確認します。これは小さな偉業ではありません。この男は、C でそのナットをクラックしたようです。彼は、LocalConnection を「話す」ことができるアプリを作成しました。

于 2012-05-16T15:39:20.970 に答える