[雑記] 2011.05.24 Titanium Mobile 詰まったら消す?
なかなか上手くいかない。
今月はもう少し頑張りたい。でも例え毎日やってもせいぜい2h * 30day 程度、仕事しながら勉強するのは大変だ。実際には半分もしてないし。
なんかシュミレーターの挙動が変なので困る。
怪しい時には
build 以下を消してしまう。これが一番有効の気がします。または必要なソースだけ別の場所に移して置いてTitanium Desktopからプロジェクトを消してしまう、とか。
なかなか上手くいかない。
今月はもう少し頑張りたい。でも例え毎日やってもせいぜい2h * 30day 程度、仕事しながら勉強するのは大変だ。実際には半分もしてないし。
なんかシュミレーターの挙動が変なので困る。
build 以下を消してしまう。これが一番有効の気がします。または必要なソースだけ別の場所に移して置いてTitanium Desktopからプロジェクトを消してしまう、とか。
さて、前回作成したアプリはそのままでもいいのですがもう少しアプリらしくしたいと思います。
main.js の方に以下の項目を追記します。
[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
// 起動時にフォーカスを与える
// http://developer.appcelerator.com/question/17351/start-with-focus-on-a-textarea
win.addEventListener(“open”, function(event, type) {
ta1.focus();
});
win.open({
modal:true,
modalStyle: Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET
});
[/cc]
このaddEventListenner()を利用するのがよいみたいです。
まだきちんと動きとか分かっていないでですがフォーラムに出ていましたので使わせてもらいます。
main.js に以下の小目を追記します。
[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
var label1 = Titanium.UI.createLabel({
color:’#fff’,
text:’0′,
font:{fontSize:16,fontFamily:’Helvetica Neue’},
textAlign:’center’,
width: 64
});
Ti.UI.currentWindow.rightNavButton = label1;
[/cc]
NavBarですがButtonの箇所になんでもおけるみたいですね。Button以外にもこの例のように label でも可能です。
[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
ta1.addEventListener(‘change’,function(e){
label1.text = jstrlen(ta1.value);
Ti.UI.currentWindow.rightNavButton = label1;
});
[/cc]
さて、文字の変化をみて値を更新するためにはこのようにして ta1の’change’イベントで制御をします。文字数を疲労感数はここでは jstrlen() で行っています。
[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
// 文字をバイトで数えるための関数
// http://www.tohoho-web.com/js/string.htm
function jstrlen(str, len, i) {
len = 0;
str = escape(str);
for (i = 0; i < str.length; i++, len++) {
if (str.charAt(i) == "%") {
if (str.charAt(++i) == "u") {
i += 3;
len++;
}
i++;
}
}
return len;
}
[/cc]
でも実際にはこの関数では半角の文字も全角の文字も2文字で計算してしまいます。なのであまり意味が・・・後で修正することにしましょう。
上記以外にも、「ひらがな→半角カナ」ボタンを追加。また起動時にクリップボードに入っているものをテキストエリアの中に表示させるなどの修正を加えています。他にも少しづつあるかとお思いますがこれで大分使えるようになってきたような気がします。
次回以降で、アプリの登録やiPhoneへの転送などをしてみたいと思います。
結構簡単にツール系であればできそうですね。
勉強不足でよくわかっていないところもありますが・・資料見ながらでもある程度作れそうです。またJavascript自体はサンプルがたくさんありますのでそれらの移植は結構簡単に行えると思います。
何が簡単なのか考えてみて Objective-C とかだと日本語の変換とか面倒な感じですがJavascriptだとそのへんに沢山サンプルが落ちているのでカナを全角→半角に変更するアプリを作成してみます。
まずは、導入したTitatium Mobile の管理画面から「New Project」で新しいプロジェクトを作成します。このあたりは前回Android版のサンプルで実施したのと同様に行います。
今回はこの初期のプロジェクトの内容を変更して作成します。
app.js ファイルを拡張します。
サンプルなどであるようにWindowの描写は別のJsファイルに移します。10行目にある「url : ‘main.js’,」にて呼び出しを定義しています。今回はAndoridのコンパイルは行いませんがiPhone要の部分については一応制御しておきます。
[cc lang=”javascript” tab_size=”2″ lines=”30″ width=”512″]
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor(‘#000’);
// create tab group
var tabGroup = Titanium.UI.createTabGroup();
// create base UI tab and root window
var win1 = Titanium.UI.createWindow({
url : ‘main.js’,
title:’半角カナ変換’,
backgroundColor:’#fff’
});
var tab1 = Titanium.UI.createTab({
window:win1
});
// iPhoneのステータスバーなどの変更
if (Titanium.Platform.osname == ‘iphone’ ){
// ステータスバー
Ti.UI.iPhone.setStatusBarStyle(Ti.UI.iPhone.StatusBar.TRANSLUCENT_BLACK);
}
win1.hideTabBar();
tabGroup.addTab(tab1);
tabGroup.open();
[/cc]
次に今回のメインのJSとなる main.js を載せておきます。
[cc lang=”javascript” tab_size=”2″ lines=”122″ width=”512″]
// メイン処理
var win = Ti.UI.currentWindow;
var view = Ti.UI.createView();
// 全角カナを半角カナに変換する関数 toHankaku()
// http://www.openspc2.org/reibun/javascript/business/004/
function toHankaku(motoText)
{
han = “アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゙゚”;
txt = “アイウエオカキクケコサシスセソタチツテトナニヌネノ”;
txt+= “ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」 ”;
str = “”;
for (i=0; i
str += c;
}
return str;
}
var label1 = Titanium.UI.createLabel({
color:’#999′,
text:’半角カナの表示’,
font:{fontSize:20,fontFamily:’Helvetica Neue’},
textAlign:’center’,
width:’auto’
});
var button1 = Ti.UI.createButton({
title: ‘半角’,
height: 32,
width: 80
});
var button2 = Ti.UI.createButton({
title: ‘コピー’,
height: 32,
width: 80
});
var button3 = Ti.UI.createButton({
title: ‘クリア’,
height: 32,
width: 80
});
var ta1 = Ti.UI.createTextArea({
value: ‘アイウエオ’,
height: 150,
width: 300,
top: 5,
font:{fontSize:20,fontFamily:’Marker Felt’, fontWeight:’bold’},
color:’#888′,
textAlign:’left’,
appearance:Titanium.UI.KEYBOARD_APPEARANCE_ALERT,
keyboardType: Titanium.UI.KEYBOARD_DEFAULT,
returnKeyType:Titanium.UI.RETURNKEY_DEFAULT,
borderWidth:2,
borderColor:’#bbb’,
borderRadius:5,
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED,
keyboardToolbar:[button3,button1,button2],
keyboardToolbarColor: ‘#999’,
keyboardToolbarHeight: 40
});
view.add(ta1);
view.add(label1);
win.add(view);
ta1.focus();
// イベントの定義
button1.addEventListener(‘click’, function(){
ta1.value = toHankaku(ta1.value);
});
// クリップボードにコピー
// http://code.google.com/p/titanium-mobile-doc-ja/wiki/guides_platform_clipboard
button2.addEventListener(‘click’, function(){
Ti.UI.Clipboard.setText(ta1.value);
if (Ti.UI.Clipboard.hasText()){
Ti.UI.createAlertDialog({
title: ‘クリップボード’,
message: Ti.UI.Clipboard.getText(),
buttonNames: [‘OK’],
cancel: 0
}).show();
} else {
alert(‘Hey there was no text.’);
}
});
button3.addEventListener(‘click’, function(){
ta1.value = “”;
});
// Text area events
ta1.addEventListener(‘change’,function(e){
label1.text = ‘change fired, value = ‘ + e.value + ‘\nfield value = ‘ + ta1.value;
});
ta1.addEventListener(‘return’,function(e){
label1.text = ‘return fired, value = ‘ + e.value;
});
ta1.addEventListener(‘blur’,function(e){
label1.text = ‘blur fired, value = ‘ + e.value;
});
ta1.addEventListener(‘focus’,function(e){
label1.text = ‘focus fired, value = ‘ + e.value;
});
[/cc]
全ての解説は行いませんがざっと見ていきます。
まず、最初に別だししたmain.jsの先頭では var win = Ti.UI.currentWindow; として操作を行うWindowsを手に入れています。これによりapp.js側での情報を引き継いで動くことになります。
function to Hankaku(motoText) については、http://www.openspc2.org/reibun/javascript/business/004/ を参考にそのまま頂きました。このようにJavascriptは過去の遺産が色々あると思うので開発が楽になるかと思います。使われ方は通常の javascript同様に使うことが出来ます。
その後、ボタンの定義があり、テキストエリアの定義があります。各々そのなかでプロパティを定義しておくことでデザインを行うことが出来ます。今回は、キーボードと連動して動くToolbarの定義を行っています。これはテキストエリア(ta1)のプロパティで定義されています(行65-68)
各種のイベントは addEventListener() 関数を記述します。これは各コンポーネントにメソッドとして定義していきます。今回はボタンを押すとクリップボードに内容を入れたり、先程の Hankaku() 関数により半角にしたりと行った動作をそれぞれのボタンに記述していきます。1
さてどうでしょう?実際にはほとんどコードを書くことなしに使えるアプリを作ることが出来ました。実際には起動画面を変更したりアイコンを作ったりと色々しないといけないと思うので後ほど変更していきたいと思います。
勉強不足で今回は出来ていませんが次のことはどこかでしたいと思います。
まだ他にもたくさん出てきそうですが次回以降少しづつ行っていきたいと思います。ただこのアプリは完全に被っているアプリがAppStoreにありますので(^^; このままではリジェクトされそうなのでなにか機能を付ける必要がありますね。
0から始めるTitanium Mobile開発環境
というわけで興味津々なTitanium MobileなのですがWindowsでも利用出来るようにセットアップしたいと思います。Macの場合にはiOSのSDK環境がサイトからあったので気楽だったのですがWinodowsの場合には何も無いのでAndroidSDKの準備からしないといけません。いちおう次にはTitanium mobileで簡単なアプリを作ってアップしてみたいと思います。
▼ 【初心者向け】Android SDKインストール手順 2011年1月版!(windows版) – smartgoods.me
http://smartgoods.me/2011/01/android_sdk_install/
コチラの記事を参考に導入を行いたいと思います。簡単簡単とおもったら意外な罠があり時間をつかいました。
▼ Android SDK 3.0(R10)インストーラーバグ対応版
http://www.hlplus.jp/php/blog/index.php?UID=1298718926#
”JDKが認識できない画面を一度Backで戻って、再度同画面に進む”とJDKが何故か認識されるようです。
というわけでJavaのJDKをなんども入れなおして痛い目を見ました。
次に本命のTitanium SDKを導入してみます。ダウンロードサイトからイメージを落とします(http://www.appcelerator.com/products/download/)にアクセスすると自動的にダウンロードが始まります。Titanium Developer.msi
サンプルアプリケーションをいじりながら作りたいものを作っていきたいと思います。しかしながら正直Androidの端末を触ったことがないからさっぱり使い方がわからないという罠w
ダウンロードのぞけばここまで文章かいて2時間程度。眠いので続きはまた今度。
今回はただの列挙ですがリンク先のサイトには数々の整理された情報があります。
…………………………………………………………………………………………………
▼ 連載:Titanium Mobileで作る! iPhone/Androidアプリ|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/titanium
…………………………………………………………………………………………………
▼ 無料で読めるTitanium Mobileの書籍風PDF「Titanium MobileではじめるiPhoneアプリケーション開発」 | ke-tai.org
http://ke-tai.org/blog/2011/04/21/titanium-mobile-iphone-pdf/
…………………………………………………………………………………………………
▼ 「Titanium Mobileで始めるiPhone / Androidアプリ開発」のメモ – sub usuilog;
http://d.hatena.ne.jp/usuihiro1978/20110225/p1
…………………………………………………………………………………………………
▼ Windowsで環境変数をいじらないでTitanium mobileを使う « kwLog
http://blog.makotokw.com/2011/03/10/windows%E3%81%A7%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E3%81%84%E3%81%98%E3%82%89%E3%81%AA%E3%81%84%E3%81%A7titanium-mobile%E3%82%92%E4%BD%BF%E3%81%86/
…………………………………………………………………………………………………
▼ 何がなんでもTitanium MobileでKitchenSinkを起動したい人の覚書(Windows) – Cherenkovの暗中模索にっき
http://d.hatena.ne.jp/Cherenkov/20110112/p1
…………………………………………………………………………………………………
▼ Titanium MobileでAndroid向けの「Run Emulator」に失敗したときに見るまとめ – CH3COOH(酢酸)の実験室
http://ch3cooh.jp/index.php/tips/titanium-mobile/run-emulator-for-android/
…………………………………………………………………………………………………
▼ Titanium BBS(JP unofficial)
http://ti.masuidrive.jp/
…………………………………………………………………………………………………
▼ Titanium mobile で開発を始める時に役立つ情報のまとめ » astronaughts.net
http://astronaughts.net/?p=204