0

このデモのPixelBender部分を介してunitzerooneによる3D投影を使用しようとしています。これは、錬金術のピクセル描画がなくても、それ自体でかなり甘いものです。問題は、FlashPlayer11以降で表示したときに機能しないことです。SWFは、Flash CS4またはCS5から公開された場合は正常にプレビューされますが、 CS5.5からは公開されません。SWFをローカルで開くと、セットアップでFP10デバッグプレーヤーが使用されているように見えます。これはうまく機能しますが、同じSWFを最新のFlash Playerがインストールされているブラウザー(chrome / FF)(11+)にドラッグすると、次のエラーがスローされます。 ByteArray.readFloat()の場合:

Error #2030: End of file was encountered.

... ByteArray.readFLoat()中にスローされます...最初に呼び出されたとき。ByteArray.writeFloatsのループを実行した直後なので、ByteArrayはその時点でデータでいっぱいになっていることがわかります。繰り返しますが、このコードはFP10では完全に機能しますが、FP11では失敗します。エラーをキャッチしようとしましたが、予想どおりにエラーをトレースしますが、FlashPlayer11でこのByteArrayコードを機能させる方法に固執しています。

私はこれを可能な限りグーグルで検索し、#2030エラーとByteArrayへの参照をたくさん見つけましたが、FP10とFP11をそれほど明確に区別しているようには見えません。 これがSWFです。

何か案は?FP11にのみ存在するByteArrayのwrite()またはread()関数に問題はありますか?回避策はありますか?

ありがとう!

-場合

4

1 に答える 1

2

問題が何であるかを完全には理解していませんが、私はそれを理解しました。Flash Player 11 では、ShaderJob を実行した直後に、PixelBender 出力 ByteArray の位置を 0 にリセットする必要があるようです。

var job:ShaderJob = new ShaderJob(shader, MyByteArray, 1024, 1);
job.start(true);
MyByteArray.position = 0

FP10 はこれを必要としませんでした。ShaderJob の後で自動的に位置をリセットしていたのでしょうか? 2 つのフラッシュ プレーヤーのバージョン間で、PixelBender の実装が微妙に異なるためでしょうか?

于 2012-05-10T19:58:12.807 に答える