1

そのため、CAKeyframeAnimation を使用して簡単なアニメーションを実行しようとしたときに発生した問題に取り組んでいます。私の問題は、NSWindow、NSView、および CALayer がどのように連携するかを完全に理解していないことに関連していると思います。問題の主なオブジェクトが 2 つあります。MyContainerWindow (NSWindow サブクラス) および MyMovableView (NSView サブクラス)。私の目標は、MyMovableView がある場所をクリックしない限り、MyContainerWindow を介して何かをクリックする機能を維持しながら、画面全体で MyMovableView を前後にアニメーション化できるようにすることです。myMovableView.layer で -addAnimation:forKeyPath: を呼び出すことにより、最初の部分をうまく実行できました。MyContainerWindow をクリックできないことを除いて、すべてがうまくいきました。ウィンドウを小さくすることはできますが、アニメーションがウィンドウの境界でクリップされます。

重要なポイント: 1) MyContainerWindow は initWithFrame から [[NSScreen mainScreen] フレーム], NSBorderlessWindowMask, defer no, buffered です 2) WantsLayer:TRUE を MyMovableView に設定します 3) MyContainerWindow はクリアです。すべてですが、それが必要なので、アニメーション化するキャンバスが大きくなります。

NSWindow をクリックしてクリックできるようにするには、何か明らかに欠けているものはありますか?

前もって感謝します!

4

1 に答える 1

0

このシナリオでの私の解決策は、実際に使用することでした:

[self ignoresMouseEvents:YES];

私はもともと、アニメーション化している特定の CALayer でマウス イベントを保持できることを望んでいましたが、さらに調査したところ、これにはすべてを最初からカスタム描画するコストがかかることがわかりました。これは、この特定のプロジェクトには理想的ではありません。

于 2012-05-25T07:06:19.510 に答える