私はMacアプリケーションをXcode(cocos2dを使用)で使用してカーソルを設定しようとしていますが、 "set"メソッドはいくつかのケースでは効果がないようです。NSCursor: "set"メソッドは効果がありません
私はアプリケーションの起動時にカーソルを設定するのに苦労しました(アプリケーションが実際に起動した後にNSTimerを設定することができました)。これで、ユーザーがクリックすると別の画像が表示されるようになりました。私はそのためにNSNotificationを使用します。私のカーソルクラスは通知を受け取り、新しいイメージを設定するはずです。初期設定で
-(void) click
{
CCLOG(@"Click");
NSString *path = [[NSBundle mainBundle] pathForResource:@"point_pressed" ofType:@"png"];
NSImage *cursorImage = [[[NSImage alloc] initByReferencingFile:path] autorelease];
NSCursor *cursor = [[NSCursor alloc] initWithImage:cursorImage hotSpot:[[NSCursor currentCursor] hotSpot]];
[cursor set];
}
:
[NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(updateCursor:) userInfo:nil repeats:NO];
と方法:
-(void) updateCursor:(id)sender
{
CCLOG(@"Update cursor");
[[self.cursorsDict objectForKey:@"point"] set];
}
"updateCursor" 方式とも呼ばれる。ここ
は助けるかもしれないいくつかのコードですアプリケーションがアクティブになり、正常に動作すると、正しいカーソルが表示されます。
多くのもの、ポップ、プッシュメソッド "setOnMouseEnter"(私はまだrectを使用していませんが)を試しましたが、結果はありません...
誰かがこれについて手掛かりを持っていますか?
編集:
ストレンジャー、私はappWake方法を書いた:
通知によって呼び出される-(void) appWake
{
int i = rand()%3;
if(i==0)
[[self.cursorsDict objectForKey:@"point"] set];
else if(i==1)
[[self.cursorsDict objectForKey:@"point_pressed"] set];
else if(i==2)
[[self.cursorsDict objectForKey:@"open"] set];
self.state = ECursorState_Point;
[NSTimer scheduledTimerWithTimeInterval:0.5f target:self selector:@selector(appWake) userInfo:nil repeats:NO];
}
:
-(void) applicationDidBecomeActive:(NSNotification *)notification
{
[[NSNotificationCenter defaultCenter] postNotificationName:EVENT_APPLICATION_DID_BECOME_ACTIVE object:nil];
}
:によってappDelegateに設定し
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWake) name:EVENT_APPLICATION_DID_BECOME_ACTIVE object:nil];
そして、この通知によって呼び出されると、うまく動作し、カーソルがランダムに変化します。私はapplicationDidBecomeActiveで通知を削除し、私のコードのどこかで呼び出す場合、それは何もしない(私はそれが呼び出されたことを確認したが)...
まあ、それはすべてのことで私は驚かないだろうこれが答えです!私は実際にそれを試してみたいという動機がありません。これは古いコードなので(カーソルの代わりにスプライトを使って別の方法を見つけましたが)、ほとんどのグラフィカル関数はイベントから呼び出されたときに動作します。だから私は答えとしてマークし、私はそれを試してみる機会があればこれを編集します。 – Grhyll
この 'doChangeCursor'は' NSImage'と 'NSCursor'のインスタンスを漏らしているようです。 – JWWalker
JWWalker、あなたはしばらくの間ARCを持っていたことに気付いていますか? –