スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iOSでボタンの同時押しを禁止する方法

iOSのアプリを開発しているときにハマったので、書いておく。

iOSってデフォルトでボタンの同時押しが可能なのね。知らなかったのでハマったよ…。いろいろボタンを同時押しして、テストしてみたら、おかしな動きをしてしまう箇所が結構あったよ。とほほ…

で、要はボタン(View)のタップなどのイベントを同時に発生させたくないわけだ。

ボタンの単純なシングルタップイベントの場合

タップイベントに対する同時発生を抑制するのは簡単だ。以下のように、ボタンに対して、UIViewのexclusiveTouchプロパティに「YES」を設定するばいい。

button.exclusiveTouch = YES;

このようにすれば、他のボタンを押している間、このボタンは反応しなくなる。
スポンサーサイト

JCIFSを使ってWindows共有フォルダをandroidから参照する

案件で、Windowsの共有ファイルをAndroidから読み書きする必要が出てきたので、実現方法を調べてみた。

どうやら、JCIFSというライブラリを使えば簡単にWindowsの共有ファイルにアクセスできることがわかった。

CIFSとは

そもそもJCIFSの「CIFS(Common Internet File System)」ってのは、もともとWindowsのファイル共有サービスで利用されているプロトコル「SMB」を拡張して、Windows以外のOSやアプリケーションソフトでも利用できるようにものだそうだ。知らんかったわ…、勉強になりやす。


JCIFSを使ってみる

JCIFSのライブラリはhttp://jcifs.samba.org/からダウンロードできる。
jcifs00.png

今回は、上記サイトからjcifs-1.3.17.zipをダウンロードした。ダウンロードしたZipファイルを解凍した中にある「jcifs-1.3.17.jar」をEclipseのAndroidプロジェクトのlibフォルダにをコピー。

とりあえず、今回は、Windowsの共有ファイルを読むところまでを書いてみた。
public void loadShareFile() {

SmbFile dir;
String host = "host name";
String user = "user name";
String password = "pass";

try {
//最後にバックスラッシュが必要
String path = "smb://" + user + ":" + password + "@" + host + "/test/";
dir = new SmbFile(path);

//ファイル一覧セット
SmbFile[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {

//ファイルパスを取得
String filePath = files[i].getPath();
Log.i(TAG, "File name: " + filePath);

//ファイル取得
SmbFileInputStream sfis = new SmbFileInputStream(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(sfis, "sjis"));

String str;
while ((str = br.readLine()) != null) {
Log.i(TAG, "data: " + str);
}

br.close();
sfis.close();
}

} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.toString());
}
}

必要なパーミッションは
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.ADD_SYSTEM_SERVICE

クローズや例外処理の部分が適当なのは勘弁してね。上の例では、「test」という共有フォルダ内のテキストファイルの内容をすべて表示している。指定するパスの最後にバックスラッシュが必要なところに気をつけたい。

Cocos2d-x 3.0をつかってAndroid/iOSで2Dゲームをつくる

そろそろ2Dゲームとかもまともに作れないといけないなと思い、Android/iOSで、今、主流となっている2D用のフレームワークを調べてみると、Cocos2d-xが利用されることが多くなってきていることがわかったので、Cocos2d-xを使う方法を調べてみたのよ。

default_download.jpg
で、どうやら、つい最近Cocos2d-x3.0finalがリリースされたようで、調べてみると2.x系からだいぶ使い勝手が変わったみたいだ。日本語で解説しているサイトもあまりなかったので、とりあえず Android向けの環境を整えて、サンプルを実行するところまでを書いてみた。


Cocos2d-xとは

Cocos2d-xはiOS用のCocos2dというオープンソースの2Dゲーム用のフレームワークをもとにC++で書かれたマルチプラットフォームなフレームワーク。Android、iOSはもちろん、Windows、Linuxなど、あらゆるプラットフォームに対応している、ということだ。


開発環境を整える

まずAndroid向けの開発環境を整える。Windowsで、Android SDK+Eclipse+ADTの環境が整っている前提に進めていくからね。
Androidの基本開発環境以外に、必要なものは以下のものが必要
・Android NDK
・Python
・Cocos2d-x 3.0


https://developer.android.com/tools/sdk/ndk/index.html
上記サイトから自分の環境にあったものをダウンロード。今回はandroid-ndk-r9dを使用した。解凍して、適当なディレクトリに展開してくれ。本記事ではCドライブ直下に展開している。


http://python.org/download/
Pythonは、Cocos2d-xのセットアップやCocos2d-x用のプロジェクトの生成など自動で行うためのスクリプトを実装するために必要だ。2.x系のほうをダウンロードして、インストール。本記事ではC:\Python27。

あと、各環境に合わせてパスを通しておくこと。
Windowsであれば、環境変数のPathにC:\Python27を追加しておく。



http://www.cocos2d-x.org/downloadからCocos2d-x 3.0をダウンロード。Android NDKと同様、解凍して、適当なディレクトリに展開してくれ、本記事ではCドライブ直下に展開している。

展開したディレクトリ直下にsetup.pyというPythonのスクリプトファイルがあるので、コマンドプロンプトからsetup.pyを実行。これを実行することで、一通りの設定を行ってくれるの楽チンだ。

C:\Users\basara>cd c:\cocos2d-x-3.0

c:\cocos2d-x-3.0>setup.py

実行するとNDK_ROOT(Android NDKの場所)とANDROID_SDK_ROOT(Android SDK)の場所を聞かれるので、本記事では、
NDK_ROOTはC:\android-ndk-r9dを
ANDROID_SDK_ROOTは、Android SDKのルートディレクトリパスを指定する。

最後にANT_ROOTのパスも聞かれるが、これはそのままEnterでスキップしてOK。


Eclipse設定

・「ウィンドウ -> 設定 -> 一般 -> ワークスペース -> リンクされたリソース」にCocos2d-xルートパスを追加する。
[新規(N)...]ボタンを押して、
名前(N):COCOS2DX
ロケーション(L):Cocos2d-xルートパス(本記事では、c:\cocos2d-x-3.0)
を指定する。
cocos2dx_eclipse_setting00.png


サンプルのプロジェクトを実行する

cocosコマンドを使い、Cocos2d-xのプロジェクトを自動生成する。cocosコマンドは、先のsetup.pyの実行によって、コマンドプロンプトから実行できるようになっている。任意のディレクトリで、以下のコマンドを実行して、プロジェクトを作成する
cocos new Cocos2dxTestProject -p com.hoge.cocos2dx.TestProject -l cpp -d 好きなディレクトリ

各パラメータの意味
Cocos2dxTestProject:プロジェクト名
com.hoge.cocos2dx.TestProject:パッケージ名
cpp:使用言語

これで、指定のディレクトリにCocos2dxTestProjectというプロジェクトが作成される。

作成されたディレクトリ内のproj.androidフォルダ直下のbuild_native.pyをコマンドプロンプトから実行して(たぶん直接、ダブルクリックで起動してもいける)、ビルドする。ビルドに少々時間がかかるが、コーヒーでも飲んで待とう。


EclipseにCocos2d-xライブラリ「libcocos2dx」ライブラリをインポートする
1. ファイル -> 新規 -> プロジェクト -> Android -> 既存コードからのAndroid プロジェクト
2. [ルート・ディレクトリ:]に「Cocos2d-xルート\cocos\2d\platform\android\java」を選択
cocos2dx_eclipse_setting01.png


Cocos2d-xライブラリプロジェクトをインポートしたときと同様に
1. ファイル -> 新規 -> プロジェクト -> Android -> 既存コードからのAndroid プロジェクト
2. [ルート・ディレクトリ:]に先ほど作成したCocos2dxTestProjectのプロジェクトのパスを指定する。
cocos2dx_eclipse_setting03.png

インポート完了後にプロジェクトにエラーが出る場合は、「libcocos2dx」のライブラリのパスが合っていない場合だと思われる。その場合は、プロジェクトの[プロパティ(R)]→「Android」の[ライブラリ]に設定されている「libcocos2dx」のライブラリのパスを正しいものに修正する。
cocos2dx_eclipse_setting02.png

あとは、いつも通りにAndroidアプリを実行する。
エミュレータで実行する場合は、[エミュレータ・オプション:]で、[ホストGPUを使用する]にチェックをいれる。

cocos2dx_eclipse_setting04.png


プロフィール

basarafire

Author:basarafire
IT関連会社で情報処理の基礎やプログラミング(主にC・Java)を教えています。最近はAndroidの教育や開発なども行ったりしています。

basarafireの開発したアプリに関する内容はこちらから
http://basarafire.jugem.jp/

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
お気に入り
[プレスブログ]価値あるブログに換金可能なポイントを差し上げます。 アクセストレードレビュー
提携
ゲーム
QRコード
QR
リンク
RSSリンクの表示
お気に入り商品
カウンター
おすすめAndroid書籍
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。