私は、アドビや他の多くの例に似た標準のdisplacementMapfilterを使用して拡大鏡クラスを作成しています:
フィルターはアプリケーション レベルで使用されているため、すべてがフィルター処理されます。画面上でドラッグ、回転、拡大縮小できる画像要素が多数あり、このフィルターの下に渡されると、それらが拡大されます。また、フィルターをドラッグできるようにする機能をいくつか追加する予定です。
フィルターは意図したとおりに機能し、通過するすべてのものを拡大します。奇妙なことに、画像が画面の上端または左端の外にドラッグされると、フィルターはその方向に、画像が完全に画面外になるまでの距離だけ浮動します (つまり、画像が 500 ピクセルの場合、フィルターは 500 ピクセル左に浮動します)。ピクセル幅が左に画面外に引き出されます。)
enterFrame リスナーを使用してその位置を常に更新しています。次のように機能します。
private function onEnterFrame(e:Event):void {
dPoint.x = stage.stageWidth - radius;
dPoint.y = stage.stageHeight - radius;
dFilter = new DisplacementMapFilter(map, dPoint, BitmapDataChannel.RED, BitmapDataChannel.BLUE, 100, 100, DisplacementMapFilterMode.IGNORE, 0x000000, 0);
// The application is a displayObject itself, so just apply filters to "this"
this.filters = [dFilter];
}
したがって、このコードはフィルターを画面の右下に固定する必要がありますが、何らかの理由で画像がドラッグされるたびに、フィルターがドリフトします。フィルターがそれを行う理由はありますか?また、それを止める方法はありますか?