2016-10-31 3 views
1

私はここに何かが欠けているように感じるので、うまくいけば、この質問はすぐに答えられるでしょう。AS3ビットマップとフィルタ

私は画面上を移動するオブジェクトの数のために私のプログラムをより効率的にするためにblittingを使い始めています。そして、今私は違ったやり方を試しています。私はフィルターにかかっています。

私は、applyFilter()を使用して単純なグローフィルタを適用しようとしています。 問題は、次のとおり

A)それだけ私が

B以外問題ないbitmapData.generateFilterRect())のような矩形を定義する場合は、これを無視して画像全体をトリミングしながら、フィルタを適用する動作します。あなたが気付くと、左上隅だけが実際に輝いていて、残りはちょうど途切れている。グローフィルタ付き

オリジナルグラスタイル
Original Grass Tile

草タイルは
Grass Tile with Glow Filter applied

を適用し、私はここで何をしないのですか?

public function applyFilter(filter:*):void{ 
    bitmapData.applyFilter(bitmapData, bitmapData.generateFilterRect(new Rectangle(0,0, 100, 100), filter), new Point(0,0), filter); 
} 

grass.applyFilter(new GlowFilter(0x000000)); 
+1

好奇心の高まりから、パフォーマンスを得るために[Starling](http://gamua.com/starling/)を使用してみませんか? – Marty

+1

私はもっと自分のエンジンを書くことが好きです。 –

+0

Starlingを使うことはあなた自身のエンジンを書く能力を失うことはありませんが、基本的に同じネイティブの 'flash.display。*' APIを使うことと同じ量のものを扱います(レンダリング部分のみ)。 – Marty

答えて

1

これはあなたの問題かもしれません:

フィルタを適用した後、結果の画像は、入力画像よりも大きくすることができます。たとえば、BlurFilterクラスを使用して(50,50,100,100)のソース矩形と(10,10)のデスティネーションポイントをぼかすと、宛先イメージで変更される領域は(10,10,60,60 )ぼかしのために。これは、applyFilter()呼び出し中に内部的に発生します。

Source

新しい画像サイズを計算して、元のサイズではなく画面に描画する必要があるようです。

+0

はい、私はBitmapData.generateFilterRect()を使用しています。私はさらに余分な部屋を与えるためにRectangleパラメータを拡張しようとしましたが、それはまだ作物です。 –

+0

結果イメージを描画するために使用するコードを画面に追加できますか?それはあなたがちょうど欠けているように見えるので、切り取った部分を含む新しい大きなサイズを説明するためです。あなたの質問の例は同じサイズです。 – Marty

+0

すべてのデータは別の場所に置かれます。これがフィルタの適用対象です。 –

関連する問題