コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

Luarida 1.53Betaをリリースしました

Luarida 1.53Bataをリリースしました。今回のバージョンアップでは、グラフィック関連のコマンドを追加しました。直接ダウンロードはこちらから(Luarida153Beta.apk)。
Luarida v1.54Betaがリリースされました(こちら)。

グラフィックコマンドの追加

Luaridaでは携帯画面に表示を行うために、内部にメイン画面とワーク画面の二画面を持っています。メイン画面は基本的に携帯画面と同じものであると考えてください。メイン画面と実際の携帯画面のサイズが違っていても、canvas.setMainBmp(wide,height)コマンドを用いて下図のように自動サイズ変更処理をさせることができます。

今回、この機能の他に画像をスタックさせるために用意しているワーク画面のデータを直接携帯画面に表示(flush)するコマンドを作りました。

canvas.workflush(x0,y0,x1,y1)

canvas.workflushは、ワーク画面の指定領域(x0,y0)-(x1,y1)を携帯画面に表示します。一見便利そうですが使い方はかなり限定されます。基本的にワーク画面は画像が書かれているところ以外は透明です。例えば、透明部分を持つ画像をworkflushすると、携帯画面はSurfaceViewを使っているのでダブルバッファの影響が出て画像が乱れます。そのような時は両バッファを書き換えるためにworkflushを2回連続発行する必要があります。基本的にLuaridaでは一回のフラッシュに1つのバッファしか書き換えていません。

また、メイン画面のような画像合成もやりにくいので、余り変更されないマップのような画像をヌルヌルスクロールさせたい場合に使える程度だと思います。

canvas.putWork(xd0,yd0,xd1,yd1,xs0,ys0,xs1,ys1)

canvas.putWorkは、ワーク画面内の画像をワーク画面の別の位置に表示するコマンドです。ワーク画面(xs0,ys0)-(xs1,ys1)範囲の画像を、(xd0,yd0)-(xd1,yd1)範囲に表示します。エリアサイズが異なる場合は、自動的に拡大縮小されます。引数は表示する座標が先に来るので注意してください。

canvas.getBmpSize( 画像ファイル名 ) 戻り値: 画像幅, 画像高さ

getBmpSizeは、SDカードに保存されている画像ファイルのサイズを取得するコマンドです。下記のようにして画像サイズを取得できます。

wid, hei = canvas.getBmpSize("sdcard/luarida/test.png")

その他変更点

Luaridaを終了させるときに、今までは、System.exit(RESULT_OK);を使っていたのですが、Luarida v1.53Betaから、Process.killProcess(Process.myPid());を使うように変更しました。

以上が、今回のバージョンアップの大きな変更点です。

Luarida v1.53Betaコマンド一覧

最後に、Luarida v1.52Betaのコマンド一覧を書いておきます。

入力関連

editText( タイトル )
touch( [タッチ条件] )

System関連

system.exit()
system.expCall( クラス名 [,データ,タイプ] )
system.getSec()
system.impCallActionSend( データ文字列 [,タイプ] )
system.impCallActionView( データ文字列, タイプ )
system.setrun( Luaridaファイル名 )
system.version()

グラフィック関連

canvas.drawCircle( CX, CY, R, 色 [,塗りつぶし])
canvas.drawCls( 背景色 )
canvas.drawLine( X0, Y0, X1, Y1, 色)
canvas.drawRect( X0, Y0, X1, Y1, 色 [,塗りつぶし])
canvas.getBmpSize( 画像ファイル名 )
canvas.getColor( X, Y )
canvas.getg( GX0,GY0,GX1,GY1,WX0,WY0,WX1,WY1 )
canvas.getviewSize()
canvas.loadBmp( 画像ファイル名, WX0,WY0,WX1,WY1 [, n] )
canvas.putCircle( CX, CY, R, 色 [,塗りつぶし])
canvas.putCls( 背景色 )
canvas.putflush([GX0,GY0,GX,GY1])
canvas.putg( GX0,GY0,GX1,GY1,WX0,WY0,WX1,WY1 )
canvas.putLine( X0, Y0, X1, Y1, 色)
canvas.putRect( X0, Y0, X1, Y1, 色 [,塗りつぶし])
canvas.putrotg( CX,CY,角度,WX0,WY0,WX1,WY1 )
canvas.putWork(xs0,ys0,xs1,ys1,xd0,yd0,xd1,yd1)
canvas.saveBmp( 画像ファイル名, WX0,WY0,WX1,WY1 )
canvas.setMainBmp( Width, Height )
canvas.setWorkBmp( Width, Height )
canvas.workCls([Color])
canvas.workflush(x0,y0,x1,y1)
color( R, G, B [,Alpha] )

文字描画関連

canvas.drawText( 文字列, GX, GY, 文字サイズ, 文字色[,背景色] )
canvas.drawTextBox( 文字列, GX, GY, 文字サイズ, 文字色, 描画幅[,背景色] )
canvas.drawTextCenter( 文字列, CX, GY, 文字サイズ, 文字色[,背景色] )
canvas.drawTextRotate( 文字列, CX, CY, 角度, 文字サイズ, 文字色[,背景色] )
canvas.putText( 文字列, GX, GY, 文字サイズ, 文字色[,背景色] )
canvas.putTextBox( 文字列, GX, GY, 文字サイズ, 文字色, 描画幅[,背景色] )
canvas.putTextRotate( 文字列, CX, CY, 角度, 文字サイズ, 文字色[,背景色] )

http関連

http.addHeader( ヘッダ名, 内容 )
http.get( URL, 取得ファイル名 )
http.status()

ダイアログ関連

dialog( タイトル, 本文[,ボタンの種類] )
item.add( 文字[,フラグ] )
item.check( タイトル )
item.clear()
item.list( タイトル )
item.radio( タイトル,初期選択位置 )
toast( 本文 [,表示時間] )

センサ関連

sensor.getAccel()
sensor.setdevAccel(0|1)
sensor.setdevMagnet(0|1)
sensor.setdevOrient(0|1)
sensor.getGdirection()
sensor.getMagnet()
sensor.getOrient()

サウンド関連

sound.isPlay(サウンド番号(0〜7))
sound.pause(サウンド番号(0〜7) )
sound.restart(サウンド番号(0〜7))
sound.setSoundFile(サウンドファイル名, サウンド番号(0〜7), BGM・効果音フラグ )
sound.start(サウンド番号(0〜7) [, Loop有無] )
sound.stop(サウンド番号(0〜7) )