Hatena::ブログ(Diary)

tail -f bongole.current.log このページをアンテナに追加 RSSフィード

2011-02-11

[] Ti.UI.Viewでパーティクルベンチマーク

Ti.UI.Viewで点を描いて動かすとどれくらいFPSがでるか計測してみた。

以下がソース。

実行すると黒い点が画面上を飛び回ります。

var window = Titanium.UI.createWindow({  
    backgroundColor:'#fff'
});

var view_num = 10;
var points = [];
for( var i = 0; i < view_num; i++){
    var point = Ti.UI.createView({
        backgroundColor : 'red',
        width: 2,
        height: 2,
        center: window.center
    });

    var sign = (parseInt(Math.random()*10)%2) ? 1 : -1;
    point.vx = sign * parseInt(Math.random()*10);
    var sign = (parseInt(Math.random()*10)%2) ? 1 : -1;
    point.vy = sign * parseInt(Math.random()*10);

    points.push( point );
    window.add( point );
}

var fps_text = Ti.UI.createTextField({
    value : '0 fps',
    left : 0,
});

window.add( fps_text );

function render(){
    for( var i = 0; i < points.length; i++){
        var point = points[i];
        var newx = point.center.x + point.vx;
        var newy = point.center.y + point.vy;

        if( newx <= 0 ){
            newx = 0;
            point.vx *= -1;
        }
        else if( window.width <= newx ){
            newx = window.width;
            point.vx *= -1;
        }

        if( newy <= 0 ){
            newy = 0;
            point.vy *= -1;
        }
        else if( window.height <= newy ){
            newy = window.height;
            point.vy *= -1;
        }

        point.center = { x : newx,
                         y : newy };
    }
}

window.open();

var last_time = new Date().getTime();
var elapsed_time = 0;
var framecount = 0;
setInterval( function(){
    render();
    var now = new Date().getTime();
    elapsed_time += (now - last_time);
    last_time = now;
    framecount++;
    if( 990 <= elapsed_time ){
        fps_text.value = '' + framecount + ' fps';
        framecount = 0;
        elapsed_time = 0;
    }
}, 33);

  • iPhone3GSだと8個描いて30fps切る感じ。
  • Ti.UI.Animationを使えばもっと速くなる気がしないでもないが、FPSの測り方が分からない。。。

2010-11-04

[]開発メモ

<uses-library android:name="com.google.android.maps" />

uses-libraryタグはapplicationタグの中に書かないと動かない。外に書いてもエラーはでないので注意。

参考:

http://developer.android.com/resources/tutorials/views/hello-mapview.html

2010-11-02

[]ndkでビルドするときのオプションメモ

$export ANDROID_ROOT=android-ndk-r4b/build
$export PATH=android-ndk-r4b/build/prebuilt/darwin-x86/arm-eabi-4.4.0/bin
$./configure --host=arm-eabi CPP=arm-eabi-cpp CC=arm-eabi-gcc CFLAGS="-mandroid --sysroot=$ANDROID_ROOT/platforms/android-3/arch-arm" CPPFLAGS="-I$ANDROID_ROOT/platforms/android-3/arch-arm/usr/include"

参考:

http://blog.kmckk.com/archives/2918551.html

http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/

2010-10-20

[]jarを追加する

jarを追加する場合はassetsディレクトリに置く

2010-10-19

[]GPSとネットワークと実機デバッグを有効にする

Androidで開発するときはAndroidManifest.xmlにどの機能を有効にするのか書く必要があるっぽい

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example"
      android:versionCode="1"
      android:versionName="1.0">
      
     <!-- debuggable=trueを書かないと実機デバッグができない -->
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    
    <uses-sdk android:minSdkVersion="3" />
    
     <!-- GPSを使用する。 これを書かないとセキュリティ例外になる -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
     <!-- GPSを使用する。 これを書かないとセキュリティ例外になる -->
     <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
     <!-- HTTPで通信する。 これを書かないとセキュリティ例外になる -->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>