2

AIR 3.5 で以下のコードを実行すると、JPEGEncoderOptions が未定義の変数であるというランタイム エラーが発生します。

rawBitmapData.encode(rawBitmapData.rect, new JPEGEncoderOptions(), rawByteArray);
4

6 に答える 6

5

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 で Adob​​e Air 3.3 SDK を使用する

于 2012-12-13T11:00:02.400 に答える
1

パッケージのインポートが欠落している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);
于 2012-11-13T15:55:43.503 に答える
1

実行時エラーが発生した場合、それはインポートの欠落ではありません。古い 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()メソッドをサポートしているかどうかを効果的にテストします。そのテストが失敗した場合は、古すぎるプレーヤーを使用しているに違いありません。

于 2012-11-14T10:37:06.313 に答える
0

コードの先頭にクラスを確実に含めていますか?

于 2012-11-13T15:37:59.117 に答える
0

ターゲットにしているバージョンの 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は次のとおりです。

  • 11.1 日付 2012 年 10 月 30 日 351kb
  • 11.2 日付 2013 年 1 月 27 日 352kb
  • 11.5 日付 2014 年 11 月 23 日 351kb
  • 11.6 日付 2013 年 1 月 27 日 352kb
  • 15.0 日付 2014 年 11 月 20 日 388kb

Apache Flex 4.14RC のインストールは次のとおりです。

  • 11.1 日付 2012 年 10 月 30 日 351kb
  • 11.2 日付 2013 年 1 月 27 日 352kb
  • 11.5 日付 2014 年 11 月 23 日 351kb
  • 11.6 日付 2013 年 1 月 27 日 352kb
  • 15.0 日付 01/12/2015 388kb

同期していない途中で何かがインストールされた可能性があります。

于 2015-07-07T12:54:49.137 に答える