Corona SDKで、Google画像検索+Jsonパース+画像取得+アニメーションさせてみた
Corona SDKのサンプルソースを見ながら、コードを書いてみた。
たった、数十行でこれだけの事ができるなんて、感動しちゃいます。
内容)
HTTPのリクエストで、Google 画像サーチAPIをたたいて、Jsonの結果をデコード
require("json") http = require("socket.http") data = json.decode(http.request("http://ajax.googleapis.com/ajax/services/search/images?q=KARA&v=1.0"))
画像のURLから、画像の取得したオブジェクトをつくる
function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.x = math.random(300) event.target.y = - 100 - math.random(600) physics.addBody( event.target, { density=0.9, friction=0.2, bounce=0.3} ) end end display.loadRemoteImage(value.tbUrl, "GET", networkListener, value.imageId, system.TemporaryDirectory)
出来上がった、全ソース
physics = require("physics") --重力設定 physics.start() --重力開始 require("json") http = require("socket.http") -- HTTPのRequest display.setStatusBar( display.HiddenStatusBar ) --ステータスバーを消す data = json.decode(http.request("http://ajax.googleapis.com/ajax/services/search/images?q=KARA&v=1.0")) function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.x = math.random(300) -- 画像の位置をランダムに散らす event.target.y = - 100 - math.random(600) -- 画像の位置をランダムに散らす physics.addBody( event.target, { density=0.9, friction=0.2, bounce=0.3} ) end end local function onTilt( event ) physics.setGravity( 10 * event.xGravity, -10 * event.yGravity ) -- 加速度センサーで、重力の設定を変える end Runtime:addEventListener( "accelerometer", onTilt ) -- 加速度センサーのイベント追加 for key, value in pairs(data.responseData.results) do -- ネットの画像を取得する display.loadRemoteImage(value.tbUrl, "GET", networkListener, value.imageId, system.TemporaryDirectory) end
ただ、実機確認しようとするとコンパイルするのに、ソースをサーバーに送らないとコンパイルしてくれないので、1分弱待たされます。シュミレーターもあるんですが、ジャイロセンサーなどを使おうとなると、すぐにデバッグできないので結構イライラしました。