画面を揺らす

画面を揺らすサンプルです。
メインの描画をワークエリアにコピーして、ワークエリアを乱数でずらして、メイン画面にコピーしています。
地震や爆発の表現などに、いかがでしょう?
サンプルを長時間見ると、具合が悪くなる可能性があります。

------------------------------------------
-- 画面を揺らすサンプル shake_sample.lua
------------------------------------------
function main()
 
  -- タッチ
  local x, y, mode
  x, y = 0,0
  -- 画面サイズ
  w,h = canvas.getviewSize()
  ScrXMax, ScrYMax = canvas.getviewSize()
  -- カラー
  C_Black = color( 0, 0, 0)
  C_White = color(255, 255, 255)
  C_Blue = color( 0, 0, 255)
  C_Red = color(255,0,0)
  -- 乱数初期化
  math.randomseed(os.time())
 
  -- 画面描画
  canvas.drawCls(C_White)
  canvas.workCls()
  canvas.drawText("画面を揺らすサンプル", 0, 0, 24, C_Black)
  canvas.drawRect( 50, 50, ScrXMax - 50, ScrYMax - 50, C_Blue)
  canvas.drawRect( w - 52, 0, w + 52 + 24 * 2, 24, C_Red)
  -- メイン画面に画像を作成
  canvas.drawText("地面  揺れ ",(ScrXMax - 7 * 100 + 50) /2, ScrYMax / 2 - 50, 100, C_Black)
  canvas.loadBmp(system.getAppPath() .."/" .. "lua.bmp", 0, 0, 150, 150)
  canvas.putg( ScrXMax / 2 - 150 / 2, ScrYMax / 2 - 150 / 2, ScrXMax / 2 + 150 / 2, ScrYMax / 2 + 150 / 2, 0, 0, 150, 150 )
  canvas.putflush()
 
  -- メイン画面をワーク画面にコピー
  canvas.getg( 51, 51, ScrXMax - 52, ScrYMax - 52, 50, 50, ScrXMax - 52 + 50,ScrYMax - 52 +50)
 
  -- 揺らす
  while not (x >= w-60 and y <= 30) do --終了位置は甘い判定
 
    x,y,mode = touch(0)
    rndX = math.floor(math.random() * 20) + 1 - 10
    rndY = math.floor(math.random() * 20) + 1 - 10
 
  canvas.putg( 51 + rndX, 51 + rndY, ScrXMax - 52 + rndX, ScrYMax - 52 + rndY, 50, 50, ScrXMax - 52 + 50,ScrYMax - 52 + 50) -- ワーク画面の指定範囲をメイン画面の指定範囲にコピー
    canvas.putflush()
 
  end
 
  canvas.drawText("画面タッチで終了します。", 0, ScrYMax - 25, 24, C_Black)
  touch(3)
end
 
main()
 

使用した画像ファイル。画像ファイルは、「lua.bmp」です。

1.画面を揺らすサンプルです。右上の□枠をクリックすると終了します。



コメント(最大10行)
名前:
コメント

すべてのコメントを見る



タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年04月15日 14:20
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。