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

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

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

Luarida 1.50Betaをリリースしました。このバージョンからグラフィックのワーク画面サイズが小さくなりました。広く使っていた方はcanvas.setWorkBmp()コマンドで、ワーク画面サイズを使用サイズに変更してください。ダウンロードはここから(luarida150Beta.apk)。
Luarida1.51Betaをリリースしました。

Ver.1.50Betaの変更点

上記のように、ワーク画面サイズを各自設定できるようになりました。v1.42Beta以前はワーク画面サイズはメイン画面サイズの幅3倍、高さ3倍の9倍サイズでしたが、今回のバージョンから幅2倍、高さ2倍の4倍サイズに変更されました。これに追加して、ワーク画面サイズを変更できるコマンドを用意しました。

canvas.setWorkBmp( Width, Height )

ワーク画面サイズを設定します。引数 Widthは幅、Heightは高さを指定します。
余り大きなサイズを指定すると、メモリを使いすぎてLuaridaが落ちる恐れがあります。使いたいほどほどなサイズを指定してください。

いろいろな画面サイズの端末に対応

Android端末の数が増えてきて、それぞれ画面サイズが違うため、Luaridaのようなグラフィック画面の使い方だと異なる画面サイズの端末に対応することが難しかったので、異なる端末に対応できる仕組みをLuarida内部に実装しました。
v1.50Beta以降のLuaridaでは、グラフィック系の命令を変更することなく全ての画面サイズのAndroid端末に同じような表示を行うことができます。これを実現するために用意したコマンドがcanvas.setMainBmp()です。

canvas.setMainBmp( Width, Height )

canvas.setMainBmpは、メイン画面サイズを変更します。引数 Widthは幅、Heightは高さを指定します。Luaridaのグラフィック描画は全てメイン画面に行います。通常、メイン画面サイズはAndroid端末の画面サイズに合わせています。そして、下図のようにメイン画面に描画した画像をそのままAndroid画面に映す処理をしていました。メイン画面とAndroid画面が同じサイズなのでこの処理に問題はありません。

canvas.setMainBmpはメイン画面のサイズを変更します。例えば、Android画面960×640の端末を考えた場合、Luarida起動時はメイン画面サイズも960×640です。これを600×400サイズに変更したとします。

canvas.setMainBmp(600,400)

このようにすると、当然、Luaridaのプログラムはメイン画面600×400の範囲に対してグラフィック処理を行います。Luarida v1.50Betaからは、canvas.putflush()を行って画像をAndroid画面に映すときに、サイズ縮尺処理が入ります。従って、この場合は、下図のように600×400が1.6倍に拡大されて画面に表示されます。

反対に小さいAndroid画面480×320の端末に対して、600×400に設定したメイン画面を表示するときは、下図のように0.8倍に縮小されて表示されます。

メイン画面サイズ変更の問題点

説明したとおり、canvas.setMainBmpを用いてメイン画面サイズ変更を行うと、Android端末の画面サイズを気にすることなくプログラムを作れますが、設定サイズとAndroid端末画面のアスペクト比が違う場合は、縦横で縮尺率が変るため、画面がひずみます。

  • タッチ座標とグラフィック座標が不一致となる

当然、実画面とメイン画面のピクセル解像度が違うので、タッチ座標がずれます。Luarida内部で調整する考えもありますが、現在は未調整です。よって、Luaridaのプログラムで縮尺比を補正する必要があります。

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

Luarida v1.50Betaコマンド一覧

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

入力関連

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.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.saveBmp( 画像ファイル名, WX0,WY0,WX1,WY1 )
canvas.setMainBmp( Width, Height )
canvas.setWorkBmp( Width, Height )
canvas.workCls([Color])
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, 角度, 文字サイズ, 文字色[,背景色] )

ダイアログ関連

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) )