Amazon

2012年6月16日土曜日

Titaniumのバージョンを上げたらエラー

TitaniumのSDKのバージョンを1.8.2に上げたところ
これまで動いていたKitchen Sinkを動かそうとしたところ以下のエラーがでてしまった。


[ERROR] xcodebuild: error: The project 'Kitchen Sink.xcodeproj' does not contain a target named 'KitchenSink-universal'.
[ERROR] 
[ERROR] Error: Traceback (most recent call last):
  File "/Users/shingo/Library/Application Support/Titanium/mobilesdk/osx/1.8.0.1/iphone/builder.py", line 1274, in main
    execute_xcode("iphonesimulator%s" % link_version,["GCC_PREPROCESSOR_DEFINITIONS=__LOG__ID__=%s DEPLOYTYPE=development TI_DEVELOPMENT=1 DEBUG=1 TI_VERSION=%s %s %s" % (log_id,sdk_version,debugstr,kroll_coverage)],False)
  File "/Users/shingo/Library/Application Support/Titanium/mobilesdk/osx/1.8.0.1/iphone/builder.py", line 1180, in execute_xcode
    output = run.run(args,False,False,o)
  File "/Users/shingo/Library/Application Support/Titanium/mobilesdk/osx/1.8.0.1/iphone/run.py", line 39, in run
    sys.exit(rc)
SystemExit: 65


そんなわけで、project -> cleanで解決

Titaniumで使用できるモジュール一覧

Titaniumでグラフを描写

Titaniumでグラフを書く際の実現方法は2つ

1. Titaniumのグラフモジュールを使う
- Titanium Plus+ Charts Module Plus (有料)
使用にあたってはModuleの月額使用料を払う必要がある

- PrettyChartSample (無料)
[使い方]
http://gndo.blogspot.jp/2011/12/titanium-advent-calendar-201122module.html

2. WebViewでjQueryやPrototype.jsのグラフモジュールを使う
JavaScriptのグラフモジュールはこちらを参照

Titaniumで使えるCalendarモジュール

Titaniumで自分のアプリ用のカレンダーを作りたい場合に使えそうなモジュール

Appcelerator-Calendar-Module
http://www.mountposition.co.jp/blog/?p=227

AGCalendar

https://github.com/Appgutta/AGCalendar
[document]
https://github.com/Appgutta/AGCalendar/blob/master/documentation/index.md

- 頑張って書いてみる
http://qiita.com/items/1398

var win = Ti.UI.currentWindow;

//今日という日
var now = new Date();
now.setHours(12);
var Y = now.getYear()+1900;
var M = now.getMonth()+1;

//表示している画面の年と月
var whenLabel = Ti.UI.createLabel({
    font:{
        fontFamily:'Helvetica Neue',
        fontSize:25
    },
    textAlign:'center',
    text:Y+"年"+M+"月",
    top:5, left:'auto', height:25, width:'auto'
});
win.add(whenLabel);

//月を戻すボタン
var backMonthButton = Ti.UI.createLabel({
    backgroundColor:"green",
    top:35, left:30, height:25, width:120,
    textAlign:'center',
    text:'back'
});
backMonthButton.addEventListener('click', function(){
    var date = new Date(Y,parseInt(M)-1-1)
    var Y_ = date.getYear()+1900;
    var M_ = date.getMonth()+1;
    whenLabel.text = Y_+"年"+M_+"月";
    cal(date);
});
win.add(backMonthButton);

//月を進めるボタン
var forwardMonthButton = Ti.UI.createLabel({
    backgroundColor:"green",
    top:35, left:170, height:25, width:120,
    textAlign:'center',
    text:'forward'
});
forwardMonthButton.addEventListener('click', function(){
    var date = new Date(Y,parseInt(M)-1+1)
    var Y_ = date.getYear()+1900;
    var M_ = date.getMonth()+1;
    whenLabel.text = Y_+"年"+M_+"月";
    cal(date);
});
win.add(forwardMonthButton);

//ここにカレンダーの各日付を表示。スクロールさせる。
var scrollView = Titanium.UI.createScrollView({
    contentWidth:'auto',
    contentHeight:'auto',
    top:70,
    height:300,
    width:320,
    backgroundColor:'#fff'
});
win.add(scrollView);

//カレンダー表示関数
var cal = function(date){
    var year = date.getFullYear();
    var month = date.getMonth();

    var leap_year=false;
    if ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) leap_year=true;
    var lom = new Array(31,28+leap_year,31,30,31,30,31,31,30,31,30,31);
    var w = new Array("red","gray","gray","gray","gray","gray","blue"); //曜日の見分けは色のみ
    var days=0;
    for (var i=0; i < month; i++) days+=lom[i];
    var week=Math.floor((year*365.2425+days)%7); //その月の開始曜日を取得
    var cols = 0;
    var rows = 0;
    var width = 80;
    var height = 80;
    for(var i=0; i<lom[month]; i++){
        var top = 0 + height * rows;  //各日付の表示位置制御
        var left = 0 + width * cols;
        var calLabel = Ti.UI.createLabel({
            backgroundColor:w[week],
            borderColor:"black",
            top:top, left:left, height:height, width:width
        });
        scrollView.add(calLabel);
        var dayLabel = Ti.UI.createLabel({
            color:'white',
            font:{fontSize:20},
            width:'auto',
            textAlign:'center',
            height:'auto',
            text:i+1
        });
        calLabel.add(dayLabel);
        if(cols != 3){  //各日付は横4列まで
            cols++;
        } else {
            cols = 0;
            rows++;
        }
        if(week != 6){
            week++;
        } else {
            week = 0;
        }
    }
}

cal(now);

Amazon3