AIR 3.5 で以下のコードを実行すると、JPEGEncoderOptions が未定義の変数であるというランタイム エラーが発生します。
rawBitmapData.encode(rawBitmapData.rect, new JPEGEncoderOptions(), rawByteArray);
AIR 3.5 で以下のコードを実行すると、JPEGEncoderOptions が未定義の変数であるというランタイム エラーが発生します。
rawBitmapData.encode(rawBitmapData.rect, new JPEGEncoderOptions(), rawByteArray);
SDK の次のファイルがフォルダー \yoursdk\frameworks\ で最新であることを確認してください。
air-config.xml flex-config.xml airmobile-config.xml
これを更新します:
<target-player>11.5</target-player>
<swf-version>18</swf-version>
これにより、ランタイムが最新であることが保証されます。参照: Flash Builder で Adobe Air 3.3 SDK を使用する
パッケージのインポートが欠落しているflash.display.JPEGEncoderOptions
か、以下のようにパッケージをインラインで完全に品質設定している可能性があります。
Adobe Flash Platform Compressing bitmap dataの例:
// Compress a BitmapData object as a JPEG file.
var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00);
var byteArray:ByteArray = new ByteArray();
bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);
実行時エラーが発生した場合、それはインポートの欠落ではありません。古い Flash Player または古い AIR ランタイムで実行している必要があります。
しばらく前にPNGエンコーディングをテストして、これを行いました:
var bitmapData:BitmapData = yourBitmapDataHere;
if("encode" in bitmapData)
{
// use the native encode method
png = bitmapData.encode(bitmapData.rect, new PNGEncoderOptions(false));
}
else
{
// use old png encoder (from AS3CoreLib)
png = PNGEncoder.encode(bitmapData);
}
これは、プレーヤーまたはランタイム環境が BitmapData の.encode()
メソッドをサポートしているかどうかを効果的にテストします。そのテストが失敗した場合は、古すぎるプレーヤーを使用しているに違いありません。
コードの先頭にクラスを確実に含めていますか?
ターゲットにしているバージョンの playerglobal がないか、SDK の player ディレクトリにある playerglobal.swc が正しくない可能性があります。
最新の Apache Flex SDK をダウンロードし、可能であればそれに切り替えて、新しいプロジェクトまたはメイン アプリケーションでクラスのインスタンスを作成してみてください。
正直、コンパイラかプレイヤーグローバルのバグだったと思います。sdk フォルダーを見たとき、playerglobal.swc が間違っていた可能性があると思います (すべてのバージョンの名前は playerglobal.swc です)。または、使用していた SDK にディレクトリが 1 つしかなく、 「/11.2/playerglobal.swc」ですが、他のフォルダーはありません。-swf-version を変更するには、「/11.5/playerglobal.swc」というディレクトリが必要だったと思います。
コンパイル時に swf バージョンの playerglobal が見つからなかったときに、コンパイラがエラーをスローしたとしたら、それは素晴らしいことです。SDK フォルダーに移動し、プレーヤーグローバルをダウンロードして SDK ディレクトリに追加し、このクラスを使用する最小限の対象プレーヤーにします。
私のFlex 4.6.0 SDKプレーヤーディレクトリでは、「$Flash Builder/sdks/4.6.0/frameworks/libs/player/」のswcsは次のとおりです。
Apache Flex 4.14RC のインストールは次のとおりです。
同期していない途中で何かがインストールされた可能性があります。