差分
ナビゲーションに移動
検索に移動
NSViewには「MouseEntered」「MouseMoved」「MouseExited」というズバリなイベントがある。しかしこれらのイベントは初期状態では発動しないようになっている。<source lang="csharp"aa> public partial class MyView : AppKit __ __ ____ __ ___ _ _ _ __ __ | ll | | ll | | ヽ i´ `′ │/´ `ヽ.NSView! l | | { _ _ |_ _ll_ _| |_ _ll_ _| |_ _ '、l __ l l _ l|_ l |_ _| public override void MouseEntered _ 儿(NSEvent theEvent・ )< ___,, l ││ l l ││ l l l ヽ l | { ヽ_l l ハ l l l l l l { _ ( ・ )ィァ 弋三ー──-- l ││ l l ││ l l l l l ヽ ヽ l l l l | ll l l l base /フ7 ´ ノ:::::ヽ ̄ ̄`` l └┘ l l ││ l l l l l ヽ ヽ l l l l | l.l l .MouseEntered(theEventl l /〃l-‐::´::::::::::::::;ヘ l ┌┐ l l ││ l l l l l ヽ ヽ l l l l l │l l l l / // {:::::::::::::_;;;/ ハ ( );ノ´ l ││ l l ││ l l l l l __ ヽ ヽ l l l l | l ! !l l / / / ヾ ̄ ノ:::ヽ, _ノ _l L 」 l_ l ││ | _l L_ノ l l L_} l | ヽノ ! _| l_ l l l ` ー ''´  ̄´ | ll | l ヽノ j l ,! l | ! l | | l l Console | ll | ヽ.WriteLine("MouseEntered"); ノ | ノ l ,、 ノ ヽ、 ノ | l l |  ̄ ̄  ̄ ̄  ̄  ̄ ̄ ̄  ̄  ̄´  ̄  ̄ ̄  ̄~ }</aa>
public override void MouseMoved(NSEvent theEvent)* 日本のゲーム業界の老舗 {* 日本で初めてPCゲームを発売した会社。 base.MouseMoved(theEvent);* あの有名な[[高橋名人]]が所属する会社。 Console.WriteLine("MouseMoved");* [[ボンバーマン]]や[[桃太郎伝説]]・電鉄を作っている会社。 }* [[ファミコン]]初の[[サードパーティ]]になった会社。* [[ファミコン]]で最後にソフトを出した会社。* [[PCエンジン]]や[[PC-FX]]を開発していた会社。* 世界で初めてのCD-ROMドライブ搭載コンピュータ周辺機器を開発した会社。* 世界で初めてCD-ROMゲームソフトを発売した会社。* 世界で初めての[[メモリーカード]]を開発した会社。* ニセコ号という本物の機関車を運行させて傾いた会社。* でも実は[[コナミ]]の子会社。* デバッグ集団マリオクラブに対抗してボンバーマンクラブ(ボンクラ)があるらしい。
public override void MouseExited(NSEvent theEvent)== 名言 == {* 「ゲームは1日1時間」--高橋名人 base.MouseExited(theEvent);* 「ゲームは1日12時間」--有野晋哉 Console.WriteLine("MouseExited");* 「PS3は除外する。」--社長 }* 「ゲーム機こそマルチメディア機器の地平を拓くものだ。そのためには、PC業界を征す者はゲーム業界も征さなければならない。」--社員 }</source>* 「ポリゴンなんてゲームに要らない。あらゆるパターンをイラスト描写してアニメーションさせることと同じことだ。」--社員
これらのイベントが発動するようにするにはNSViewのUpdateTrackingAreasメソッドをオーバーライドして、AddTrackingAreaメソッドで事前に「どの範囲で取るか」を明示的に指定をする。<source lang="csharp">= その他 == NSTrackingArea _trackingArea;無線オタの弟が経営するアマチュア無線ショップ「CQハドソン」の店番をやらされていた鉄道オタの兄ちゃんが暇だったので[[PC]]買って[[ゲーム]]を作ってみた。 そのゲームをやった無線部品売りの[[シャープ]]の人におだてられて通販で売ってみる。 すると密かに日本最初のPCゲームメーカーとなってしまうわ、競合他社も無いもんだからシェア90%になるわで急成長。
public override void UpdateTrackingAreas() { if (_trackingArea != null) { this.RemoveTrackingArea(_trackingArea); }しかし、鉄オタすぎてリアルSL「C62ニセコ号」に有り金を全て注ぎ込んで気がつけば涙目。 頼みの綱の銀行も吹っ飛んでいためさらに涙目。 [[コナミ]]に買収された挙げ句、[[任天堂]]の下請け仕事([[マリオパーティ]]など)で食いつなぐことに。
_trackingArea = new NSTrackingArea( rect: this.Bounds, options: NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.MouseMoved, owner: this, userInfo: null);その後、任天堂の下請けだったことが幸いし、任天堂商法を身につけることに。 近年は、その免許皆伝の腕前で、任天堂の快進撃に便乗し、過去最高益を記録し続けている。
this.AddTrackingArea(_trackingArea); base.UpdateTrackingAreas(); }</source> 範囲指定やオーナー指定はみたままなので特に問題ないと思う。 オプション(NSTrackingAreaOptions)は以下のような列挙体になっており、大きくわけて「取得したいイベントの種類」と「取得する条件」の3種類を組み合わせて使用する。 ; 取得したいイベントの種類{| class="wikitable"|-| MouseEnteredAndExited || 1uL || EnteredとExitedイベントを発生させる|-| MouseMoved || 2uL || Movedイベントを発生させる|-| CursorUpdate || 4uL || カーソル変化も発生させる|} ; 取得する条件1{| class="wikitable"|-| ActiveWhenFirstResponder || 16uL || ビューにフォーカスのある時のみ取得する|-| ActiveInKeyWindow || 32uL || ウインドウがアクティブな時のみ取得する|-| ActiveInActiveApp || 64uL || アプリがアクティブな時のみ取得する(1アプリ複数ウインドウの場合は非アクティブでも取得)|-| ActiveAlways || 128uL || 常に取得する|} ; 取得する条件2{| class="wikitable"|-| AssumeInside || 256uL || 内側にいる時すべて取得する|-| InVisibleRect || 512uL || 見えている範囲内のみ取得する|-| EnabledDuringMouseDrag || 1024uL || マウスのドラッグ中のみ取得する|} == 関連項目 ==* [[Xamarin.Mac/マウスの中ボタン(ホイール)のクリックを取得する]]* [[Xamarin.Mac/ウインドウ座標をビュー座標に変換する]] == 参考文献 =={{reflist}} {{stub}} [[category: Xamarin.Mac企業]]
ハドソン
,ページの作成:「<aa> __ __ ____ __ ___ _ _ _ __ ...」