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

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

system.setScreen(画面モード)

縦画面と横画面を切り替えます。
引数

  • 画面モード: 0 横画面(LANDSCAPE)、1 縦画面(PORTRAIT)

注意事項

  1. 切り替えた画面の向きは、system.setScreen()命令が実行されるまで維持されます。よって、system.setrun()命令を使って、別プログラムを呼び出したとしても、画面の向きは横向きに戻りません。できれば、アプリ内で画面の向きを初期化してください。
  2. 画面の向きを変えても、グラフィック画面サイズは変更されません。当然、ワーク画面サイズも変更されません(これはこういう仕様にしました)。canvas.setMainBmp()命令を使ってグラフィック画面サイズを変更しておかないと、縦画面に扁平したグラフィックが表示されます。必要であれば、canvas.setWorkBmp()命令でワーク画面もサイズ変更してください。
  3. 上記グラフィック画面サイズやワークサイズは、system.setrun()命令で別アプリを起動した場合は、自動的に変更されます。

戻り値なし。

使用例

while(true)do
  canvas.drawCls( color(255,255,255) )
  item.clear()
  item.add("縦向きにする",0)
  item.add("横向きにする",0)
  item.add("プログラム終了",0)
  v = item.radio( "画面の向きを選んでください", v )
  if( v==1 )then
    system.setScreen(1)
  elseif( v==2 )then
    system.setScreen(0)
  else
    break
  end
  --内部グラフィック画面設定の変更
  w,h = canvas.getviewSize()
  canvas.setMainBmp( w, h )
 end

加速度センサを利用して、自動的に画面を切り替える例

------------------------------------------
-- 縦横の自動設定
------------------------------------------
function setDirection()
local i
local ax,ay
 sensor.setdevAccel( 1 )	--加速度センサ起動
 for i=1,32 do --値が落ち着かないので、とりあえず32回目の値を取得しています。
   ax, ay = sensor.getAccel()
 end
 sensor.setdevAccel( 0 )	--加速度センサオフ
 if( ax<5 and ay>5 )then
   system.setScreen(1)   --縦向きに変更
 else
   system.setScreen(0)   --横向きに変更
 end
 --内部グラフィック画面設定の変更
 local w,h = canvas.getviewSize()
 canvas.setMainBmp( w, h )
end