私はユーザーがビューの周りにオブジェクトを移動することができるカスタムビューでアプリケーションを開発しています。彼らはそれらを拾い上げて別の場所に置くことができ、どのオブジェクトを持ち上げることができ、どこに置くことができるかによってカーソルを変えたいと思う。[NSCursor set]を呼び出すと、パフォーマンスが低下しますか?
私はtracking areasを使用していますが、正確なカーソルを維持するために、私は追跡エリア通知を使用して、のいずれかのマウス移動のカーソルを設定しています。
これはうまくいっていますが、私は解決策がありますが、[NSCursor set]
を頻繁に呼び出したり、これを問題なく処理することができるかどうかを知りたかったのですか? :Rob Kenigerの忠告により、私はアプリケーションのプロファイルを作成しましたが、カーソルの変更に費やされた実際の時間は見られませんでした。ただ、安全のために、私は現在のカーソルの状態を保つ簡単なマクロを実装しているし、必要に応じて、ここで定義されているだけで、それを設定します。
// Values for _currentCursor
#define CURRENT_CURSOR_UNKNOWN 0
#define CURRENT_CURSOR_ARROW 1
#define CURRENT_CURSOR_POINTINGHAND 2
#define CURRENT_CURSOR_OPENHAND 3
#define CURRENT_CURSOR_CLOSEDHAND 4
#define CURRENT_CURSOR_NOENTRY 5
#define CURRENT_CURSOR_HIDDEN 0x80
#define SET_CURSOR(current, cursor) \
if ((_currentCursor & CURRENT_CURSOR_HIDDEN) == 0 && _currentCursor != current) \
{ \
[cursor set]; \
_currentCursor = current; \
}
あなたは、このようにコードでこれを呼び出します:
SET_CURSOR(CURRENT_CURSOR_CLOSEDHAND, [NSCursor closedHandCursor]);
ありがとうございます。私はあなたが答えたい人であることを知っていました。私はプロファイルを作成する必要がありますが、現在はそうしていますが、追跡領域に入る/出るときにカーソルを変更するだけで間違っているカーソルは、ユーザーにできることとできないことのフィードバックを与えるために使用されるので、これには、ビュー内の* object *がピックアップ可能で、ビュー内で* object *をドロップできる場所が含まれます。 – trojanfoe
@trojanfoe:トラッキングエリアを増やして、より小さくするべきですか? –
@PeterHosey私はそうでしたが、簡単に管理するには余りにも多くの分野があります。現在の解決策はOKと思われます - 私は本当に '' [NSCursor set]をオーバーするとAppKitと違いがないかどうか知りたかったのです。 – trojanfoe