|
HMDT - Special Issue / Sketch BP / ドローオブジェクトに編集モードを追加 |
- Modification -
ドローオブジェクトに編集モードを追加
■ ドローオブジェクトの編集モードドローオブジェクトのルートクラスである SKTGraphic に編集モードを追加しよう。とはいっても、実はすでに編集モードは組み込まれている。それを強化するいくつかのメソッドを追加してみよう。 基本的に、ドローオブジェクトをダブルクリックすると、編集モードに突入するんだ。そのためのメソッドが、現時点では以下のようなものがある。
isEditable はそのドローオブジェクトが編集可能かどうか示すもの。startEditingWithEvent:inView: と endEditingInView: は、それぞれ編集モードの始めと終わりに呼ばれるんだ。 で、ここに以下のようなインスタンス変数と、メソッドを追加する。
インスタンス変数 editing は、いま編集モードにいるかどうかを示すフラグ。startEditingWithEvent:inView: と endEditingInView: で更新される。 editingWithEvent:inView: は、編集モード中のイベントを受け取るもの。isEditing は、いま編集モードかどうか調べるもの。最後の deleteForEditingInView: は、編集モード中に delete キーが押されたときに、delete 要求を送るものだ。 これらのメソッドは、ポリゴンツールとか、ベジエ曲線ツールとかで使われるよ。 ■ メソッドの追加上で追加しようとしているメソッドのうち、editWithEvent:inView: と deleteForEditingInVew: は、サブクラスでオーバーライドされて使われるものなんだ。だから、SKTGraphic では、メソッドそのものの実装はほとんどない。実装する必要があるのは、それを呼び出すところだ。 isEditing は、追加されたインスタンス変数 editing を返すだけだ。 ◆ editWithEvent:inView: のための実装editWithEvent:inView: のための実装を見てみよう。SKTGraphicView の mouseDown: を使う。
moouseDown: で、編集中のドローオブジェクトがあるなら、そいつにマウスイベントを投げてやる。YES が返ってきたら、そのまま return。編集モード続行。NO だったら、編集モード終了。 ◆ deleteForEditingInVew: のための実装deleteForEditingInVew: は、delete キーが押されたことを、編集中のドローオブジェクトに送るもの。これも SKTGraphicView を使う。delete: の中だ。
delete の処理で、選択中のドローオブジェクトがあったら、そっちに送ってやる。このメソッドは、ポリゴンオブジェクトとかで、編集中のアンカーポイントを消したりするのに使われるよ。 |
|
- ソースコードのダウンロード - HMDT - Download / Sketch BP |
|
Home | Link | Download | Back Number | Speciall Issue
|