Enviar pesquisa
Carregar
Cocoa勉強会20140621 macとiosで共通のコード
•
3 gostaram
•
1,026 visualizações
Satoshi Oomori
Seguir
OS XとiOSで動くビューの作成
Leia menos
Leia mais
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 52
Baixar agora
Baixar para ler offline
Recomendados
ぼくはきみの盾 ドキュメントコメント編
ぼくはきみの盾 ドキュメントコメント編
勝成 鈴江
nomad-cliの紹介
nomad-cliの紹介
Kohki Miki
RYUS通信 2011年10月号
RYUS通信 2011年10月号
株式会社RYUS
がんばれガンプ ソルバルウを倒せ
がんばれガンプ ソルバルウを倒せ
Tomohiro Suzuki
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
Syougo Yoshino
ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座
RyousukeItai
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
Yuma Ohgami
エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
Yuma Ohgami
Recomendados
ぼくはきみの盾 ドキュメントコメント編
ぼくはきみの盾 ドキュメントコメント編
勝成 鈴江
nomad-cliの紹介
nomad-cliの紹介
Kohki Miki
RYUS通信 2011年10月号
RYUS通信 2011年10月号
株式会社RYUS
がんばれガンプ ソルバルウを倒せ
がんばれガンプ ソルバルウを倒せ
Tomohiro Suzuki
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
ゲームデータDLとの戦い ~幻塔戦記グリフォン~
Syougo Yoshino
ヴィジュアルエフェクト初級者講座
ヴィジュアルエフェクト初級者講座
RyousukeItai
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
Yuma Ohgami
エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
Yuma Ohgami
ぼくはきみの盾-Redmine編
ぼくはきみの盾-Redmine編
勝成 鈴江
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減
Mikito Yoshiya
Jetpackをざっくり紹介
Jetpackをざっくり紹介
Yuki Kokubo
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
monobit
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
モノビット エンジン
Unity講習会(初級)
Unity講習会(初級)
torisoup
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
Yuma Ohgami
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
Yuma Ohgami
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
Yuuki Ogino
まわーるどが1週するまでのお話
まわーるどが1週するまでのお話
勝成 鈴江
Cocos sharpformsの使用例
Cocos sharpformsの使用例
Tomohiro Suzuki
Unity 5.3 の In-App Purchase を試してみた
Unity 5.3 の In-App Purchase を試してみた
Mori Tetsuya
Ggg用
Ggg用
Sho Okamura
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
Yusuke Shirakawa
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介
tuna cook
UNIBOOK2執筆ガイドライン
UNIBOOK2執筆ガイドライン
Keigo Ando
Unibook3執筆ガイドライン
Unibook3執筆ガイドライン
Keigo Ando
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
Katsumi Mizushima
スマホゲーム企画書
スマホゲーム企画書
naotaro0123
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
GameCreators,CyberAgent
モックアップ共有のススメ
モックアップ共有のススメ
Kazuyoshi Goto
Mais conteúdo relacionado
Mais procurados
ぼくはきみの盾-Redmine編
ぼくはきみの盾-Redmine編
勝成 鈴江
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減
Mikito Yoshiya
Jetpackをざっくり紹介
Jetpackをざっくり紹介
Yuki Kokubo
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
monobit
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
モノビット エンジン
Unity講習会(初級)
Unity講習会(初級)
torisoup
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
Yuma Ohgami
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
Yuma Ohgami
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
Yuuki Ogino
まわーるどが1週するまでのお話
まわーるどが1週するまでのお話
勝成 鈴江
Cocos sharpformsの使用例
Cocos sharpformsの使用例
Tomohiro Suzuki
Unity 5.3 の In-App Purchase を試してみた
Unity 5.3 の In-App Purchase を試してみた
Mori Tetsuya
Ggg用
Ggg用
Sho Okamura
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
Yusuke Shirakawa
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介
tuna cook
UNIBOOK2執筆ガイドライン
UNIBOOK2執筆ガイドライン
Keigo Ando
Unibook3執筆ガイドライン
Unibook3執筆ガイドライン
Keigo Ando
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
Katsumi Mizushima
スマホゲーム企画書
スマホゲーム企画書
naotaro0123
Mais procurados
(20)
ぼくはきみの盾-Redmine編
ぼくはきみの盾-Redmine編
ゆるロボ製作所開発事例 – ドローコール削減
ゆるロボ製作所開発事例 – ドローコール削減
Jetpackをざっくり紹介
Jetpackをざっくり紹介
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
Unity講習会(初級)
Unity講習会(初級)
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
ゲーム開発しくじり先生 「War of Zodiac」 -UNITY初仕事でアウトゲームのUI全て一人で製作した為にやらかした話-
まわーるどが1週するまでのお話
まわーるどが1週するまでのお話
Cocos sharpformsの使用例
Cocos sharpformsの使用例
Unity 5.3 の In-App Purchase を試してみた
Unity 5.3 の In-App Purchase を試してみた
Ggg用
Ggg用
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Jokerscriptを勝手に紹介
Jokerscriptを勝手に紹介
UNIBOOK2執筆ガイドライン
UNIBOOK2執筆ガイドライン
Unibook3執筆ガイドライン
Unibook3執筆ガイドライン
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
スマホゲーム企画書
スマホゲーム企画書
Semelhante a Cocoa勉強会20140621 macとiosで共通のコード
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
GameCreators,CyberAgent
モックアップ共有のススメ
モックアップ共有のススメ
Kazuyoshi Goto
cocos2d ☓ OpenOffice
cocos2d ☓ OpenOffice
Kazunori Nanji
「JPOHC」のロゴ制作の話
「JPOHC」のロゴ制作の話
典子 松本
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
Kenichi Kinoshita
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
1画面1Storyboardのススメ
1画面1Storyboardのススメ
Tomo Ita
Createjs jp study #4 20130726
Createjs jp study #4 20130726
Seigo Tanaka
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
Shin Ise
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える
sasaron 397
“OSCキャラクター大集合”を支えるMODX
“OSCキャラクター大集合”を支えるMODX
Kei Mikage
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
Kazuki Higashiguchi
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
Yuhei Miyazato
ジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwww
今城 善矩
Size class_yucovin_collabotips01
Size class_yucovin_collabotips01
Nino SAKUMA
Visual Studio といえば当然 Visual Studio for Mac だよね!
Visual Studio といえば当然 Visual Studio for Mac だよね!
Tomohiro Suzuki
Mongo db as_a_building_block
Mongo db as_a_building_block
Akinobu Fukuzaki
Time for Xcode Behavior
Time for Xcode Behavior
toyship
はじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用ppt
Taro Takano
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Hiromichi Yamada
Semelhante a Cocoa勉強会20140621 macとiosで共通のコード
(20)
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
モックアップ共有のススメ
モックアップ共有のススメ
cocos2d ☓ OpenOffice
cocos2d ☓ OpenOffice
「JPOHC」のロゴ制作の話
「JPOHC」のロゴ制作の話
20200216 MacBook Proで姿勢検出
20200216 MacBook Proで姿勢検出
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
1画面1Storyboardのススメ
1画面1Storyboardのススメ
Createjs jp study #4 20130726
Createjs jp study #4 20130726
C#でiPhoneアプリ開発 with MonoTouch
C#でiPhoneアプリ開発 with MonoTouch
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える
“OSCキャラクター大集合”を支えるMODX
“OSCキャラクター大集合”を支えるMODX
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
webSocket通信を知らないiOSエンジニアが知っておいて損はしない(経験談的な)軽い話
ジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwww
Size class_yucovin_collabotips01
Size class_yucovin_collabotips01
Visual Studio といえば当然 Visual Studio for Mac だよね!
Visual Studio といえば当然 Visual Studio for Mac だよね!
Mongo db as_a_building_block
Mongo db as_a_building_block
Time for Xcode Behavior
Time for Xcode Behavior
はじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用ppt
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Mais de Satoshi Oomori
Cocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみる
Satoshi Oomori
Word net cocoa勉強会201306
Word net cocoa勉強会201306
Satoshi Oomori
Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306
Satoshi Oomori
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Satoshi Oomori
Cocoa勉強会201302
Cocoa勉強会201302
Satoshi Oomori
Cocoa勉強会201208
Cocoa勉強会201208
Satoshi Oomori
Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月
Satoshi Oomori
Cocoa勉強会201203公開
Cocoa勉強会201203公開
Satoshi Oomori
Cocoa勉強会2011年11月
Cocoa勉強会2011年11月
Satoshi Oomori
Mais de Satoshi Oomori
(9)
Cocoa勉強会20140419ゲームをつくってみる
Cocoa勉強会20140419ゲームをつくってみる
Word net cocoa勉強会201306
Word net cocoa勉強会201306
Scene kit cocoa勉強会201306
Scene kit cocoa勉強会201306
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会ビギナーズramディスクとコマンドファイル
Cocoa勉強会201302
Cocoa勉強会201302
Cocoa勉強会201208
Cocoa勉強会201208
Cocoa勉強会関西2012年5月
Cocoa勉強会関西2012年5月
Cocoa勉強会201203公開
Cocoa勉強会201203公開
Cocoa勉強会2011年11月
Cocoa勉強会2011年11月
Último
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
Último
(6)
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Cocoa勉強会20140621 macとiosで共通のコード
1.
MacとiOSで共通の ビューを使う 2014.6.21 Cocoa勉強会 関西 大森智史 @oogon /
satoshi.oomori
2.
あんた、誰? • と、いうわけで自己紹介。
3.
• 大森智史といいます。 • 某印刷会社勤務。 •
Cocoa勉強会関西は第0回からいます。
4.
• ブログあります。
5.
• こんなのも始めました。
6.
XOJOニュース • まもなく、iOSビルド機能が登場(Mac版の み) • 第53回でご紹介しましたXOJO
7.
今日の話 • 前回、ゲームの話をした時、敵キャラの動き を編集するツールが、わりと好評だったので、 公開することに。
8.
今日の話 • 最初iPad用に作りましたが、途中からMac用 として作り変えました。 • 今日はその際の話を
9.
とりあえず宣伝
10.
motion editor • SpriteKitのSKActionで使えるモーション記述 用のベジェエディタをMacApp
Storeで公開中 (Ver 1.0.1) https://itunes.apple.com/jp/app/motion-editor/id876088092
11.
motion editor • v1.1で追加される機能 •
線のエクスポート、インポート • アンドゥ(リドゥはまだ…)
12.
motion editor • 手書きベジェ •
現在の編集モードを表示 • その他もろもろインターフェースの改善
13.
motion editor • Ver
1.1 リリース TODAY • 発表終了後
14.
motion editor • Swiftコードの書き出し(審査通りました!) •
(サンプル出せないので困ってるけど…) 世界初 たぶん
15.
motion editor • 今はまだ無料です。 •
https://itunes.apple.com/jp/app/motion- editor/id876088092 • http://cocoaapi.hatenablog.com/entry/ motion_editor_Japanese_support_page
16.
motion editor • レビューお待ちしております。
17.
デモ
18.
それでは、本題に
19.
「共通のビュー」
20.
なぜ必要か • 複雑な描画をするビューのコードの共通化 • コード作成量の削減 •
同一の描画を実現
21.
なぜ必要か • ようするに、同じようなものを作るの面倒
22.
どんな場合 • ゲーム ゲーム本体と編集ツール • 電子書籍 表示とエディタ •
グラフィックツール 表示とエディタ
23.
方針 • ボタン、メニューなどはそれぞれのUIパーツ を使う • メインビューのみ共通にする
24.
2つの方式 • CoreGraphicsを使う MacとiOSではY座標が違うので注意 • Spritekitを使う ピクセルのみの描画の場合はこちらかな
25.
iOS 8,OS X
10.10 • Scene KitがついにiOSにも! • OS X版は以前ご紹介しました。 • http://www.slideshare.net/oogon/scene-kit- cocoa201306
26.
CoreGraphics • 今回はCoreGraphicsを使いました。
27.
相違点 • 似たクラスでも微妙に違うものあり • 今回使った中から違うところをピックアップ してみました。
28.
Bezier • NSBezierPathとUIBezierPath • メソッド名が違う
29.
Color • NSColorとUIColor • かなり似通ったメソッド名だけどクラス名が 違う
30.
NSValue • point構造体を得るにもいちいち違う • pointValue
(Mac) • CGPointValue (iOS)
31.
Undo Redo • iOS側もNSUndoManager
! • (iOS側ではまだアンドゥは実装していない けど、エラーは出ない) • まだiOS側で使っていないので、よくわから ない
32.
具体的な方法
33.
プリプロセッサマクロ • 基本パターン #if TARGET_OS_IPHONE /*iOSでのみ行う処理をゴニョゴニョ*/ #elif
TARGET_OS_MAC /*Macでのみ行う処理をゴニョゴニョ*/ #endif
34.
欠点 • コードが読みづらくなる
35.
解決 • それぞれを継承したサブクラスを作り同じメソッ ド名で呼び出せるように。(似たクラスがある 場合) • プリプロセッサマクロでの切り分けはクラス内 で行う。 •
これで、本体処理からはプリプロセッサマクロ を排除
36.
解決 • ただし… • 数回しか出てこないようなところは、特に気 にしない。 •
何回も出てくるところだけ独自のクラスを作 る
37.
• カスタムクラス OOOBezierPath #if
TARGET_OS_IPHONE + (OOOBezierPath *)bezierPathWithOvalInRect:(CGRect)rect { return (OOOBezierPath *)[super bezierPathWithOvalInRect:(CGRect)rect]; } #elif TARGET_OS_MAC + (OOOBezierPath *)bezierPathWithOvalInRect:(NSRect)rect { return (OOOBezierPath *)[super bezierPathWithOvalInRect:NSMakeRect(rect.origin.x, (rect.origin.y), rect.size.width, rect.size.height)]; } #endif
38.
• カスタムクラス OOOColor #if
TARGET_OS_IPHONE @interface OOOColor : UIColor #elif TARGET_OS_MAC @interface OOOColor : NSColor #endif
39.
• 呼び出し側 //フレーム枠描画 OOOBezierPath *framePath
= (OOOBezierPath *) [OOOBezierPath bezierPathWithRect:CGRectMake(OFFSETX,OFFSETY,300.0f, 450.0f)]; ! [[OOOColor lightGrayColor] setFill]; ! [framePath stroke];
40.
OS Xの座標を逆に • iOSに合わせる #if
TARGET_OS_IPHONE #elif TARGET_OS_MAC //Macでは座標が反対になるのでフリップする - (BOOL)isFlipped { return YES; } #endif • 実はすっかり忘れていたのでFBで教えてもらった
41.
画面タッチ処理 • 今回は線の位置を指定できれば良いので、タッ チ開始、ドラッグ、タッチ終了のみ対応
42.
画面タッチ • OS X
mouseDown: • iOS touchesBegan:withEvent: • タッチ・マウスダウンのロケーションは共通 なので、CGPointにして、共通処理のメソッ ドへ
43.
画面ドラッグ • OS X
mouseDrag: • iOS touchesMoved:withEvent: • タッチ・マウスダウンのロケーションは共通 なので、CGPointにして、共通処理のメソッ ドへ
44.
タッチ終了 • OS X
mouseUp: • iOS touchesEnded:withEvent: • タッチ・マウスダウンのロケーションは共通 なので、CGPointにして、共通処理のメソッ ドへ
45.
• プラットフォーム依存部分 今回はタッチ(クリック)のロケーションだけを渡す #if TARGET_OS_IPHONE -
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[event allTouches] enumerateObjectsUsingBlock:^(id obj, BOOL *stop) { [self touchBeganAndMuseDown:CGPointMake([obj locationInView:self].x,[obj locationInView:self].y)]; *stop = YES; }]; } #elif TARGET_OS_MAC - (void)mouseDown:(NSEvent *)theEvent { NSPoint mouseLoc; mouseLoc = [self convertPoint:[theEvent locationInWindow] fromView:nil]; [self touchBeganAndMuseDown:CGPointMake(mouseLoc.x,mouseLoc.y)]; ! } #endif
46.
• 共通処理部分 -(void)touchBeganAndMuseDown:(CGPoint)touchPoint { //マウスダウンやタッチした時の共通処理 NSInteger loopCount
= 0; touchBegin = touchPoint; OOOAppDelegate *appDelegate = [self myDelegate]; NSMutableArray *pathObjects = [appDelegate pathObjects]; ! ! …(共通の処理を行なう) } ! }
47.
needsDisplay ! -(void)needsDisplay { #if TARGET_OS_IPHONE [self setNeedsDisplay]; #elif
TARGET_OS_MAC [self setNeedsDisplay:YES]; #endif }
48.
delegate ! -(OOOAppDelegate *)myDelegate { #if TARGET_OS_IPHONE return
(OOOAppDelegate *)[[UIApplication sharedApplication] delegate]; #elif TARGET_OS_MAC return (OOOAppDelegate *)[[NSApplication sharedApplication] delegate]; #endif }
49.
まとめ • あんまり使わないところはプリプロセッサマ クロ。 • 何度も使うところは共通のメソッドやクラス を作って、そこでプラットフォームの切り分 けをする。
50.
まとめ • iOSで何か作るときの編集ツールは、Macで 動かせると何かと便利です。
51.
いまOS Xアプリがアツい!
52.
ありがとうございました
Baixar agora