Obj.C

obj.C:Keyboard Eventsサンプルプログラム

先のMouse EventsにKeyboard Eventsを追加しました。

Cocoa Programming L28 – Keyboard Eventsは、単純です。このサンプルプログラムの場合という意味で。

  • aを押したときに、四角か、円か変わります。
  • 円のときは青、四角のときは黄になるように色付けしました。
  • Keyboad EventsはkeyDownメソッドで取り出します。
    -(void)keyDown:(NSEvent *)theEvent
    {
        if ([[theEvent characters] isEqualToString:@”a”])
            is0val =!is0val;
        [self setNeedsDisplay:YES];
    }
  • aなら、keyeventBOOLにYESかNOをトグルで入れます。
  • 実行結果は、マウスを置いて円か四角を描画した後、aを押すと、青の円と黄の四角が交互に表示されます。押し続けると、チカチカという感じです。

スクリーンショット 2014-05-24 20.03.51

少し学習できたたことは次の通りです。なんとなくわかったところもあります。とてもボヤーッツとしたところも多いです。

  • マウスイベントの取り出し方は、-(void)keyDown:(NSEvent *)theEvent野用な形式で渡ってくるtheEventをNSPointでsaveすればいい。keyDownとmouseDraggedのいずれも同じようなやり方でよく、そのsaveした形式はx,yになります。
    NSPoint   point            = [theEvent locationInWindow];   
    NSPoint   startPoint    = [self convertPoint:point fromView:nil];
  • キーイベントの場合、押されたキーが何であるか、[theEvent characters] で調べます。この例の場合は、BOOLをトグルで設定しています。
  • 描画する場合、起点(絶対位置)、起点からの相対位置の終点が必要で、起点には先程のmouseDownで取り出したstartPointを使います。
    終点(絶対位置)は、mouseDraggedになるので、w,hを(終点ー起点)で計算します。

サンプルコードはここにあります。

Categories: Obj.C, 技術

Tagged as: ,