Help us understand the problem. What is going on with this article?

【DroidScript】スマホでスマホアプリを作る④ 実行ボタン

あらすじ

DroidScriptというアプリを使うと、javascriptベースの記述でスマホアプリが作れるらしいので、練習として「電子レンジワット数で加熱時間を換算するアプリ」を作る。

前回までのおさらい

スピンボタンとシークバーを実装し、計算に必要なデータ入力が揃った。あとは計算するだけ。
Screenshot_20201121-154732.png

スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー

ボタンの設置

btn = app.CreateButton( "EXECUTE", 0.4 ); 
btn.SetMargins( 0, 0.05, 0, 0 ); 
btn.SetOnTouch( btn_OnTouch ); 
lay.AddChild( btn );

app.CreateButtonでボタンを作成。括弧内でボタンに表示する文字と、画面幅に対するサイズを設定。.SetMarginsで直前に設置したシークバーとの間隔を設定。.SetOnTouchでタップしたときに呼び出す関数btn_OnTouchを設定している。

呼び出す関数のコードがコチラ。

function btn_OnTouch() 
{ 
  var my_wave = my.GetText(); 
  var label_wave = label.GetText(); 
  var time = skb.GetValue(); 

  time = Math.round( time * 0.2 ) / 0.2; 

  var ratio = ( label_wave / my_wave ); 
  var after = time * ratio; 

  var remain = after % 60; 
  var newmin = ( after - remain ) / 60; 
  var newsec = Math.round( remain ); 
  newsec = ( "0" + newsec ).slice( -2 ); 

  var ans = newmin + ":" + newsec; 

  app.ShowPopup( "Heat for " + ans ); 
  app.Vibrate( "0,100,30,100,50,300" ); 
}

ついに自分のレンジでの加熱時間を計算。

スピンボタンやシークバーで操作した数字をどうやって拾ってくるのか分からなかったけど、操作後の状態から単純に参照できた。

スピンボタンで選んだ選択肢は.GetText()、シークバーで合わせた数字は.GetValue()で参照。

シークバーを操作した時に表示されるのが5秒間隔なので、計算するためにシークバーから参照した数字も5刻みに丸める。

あとはワット数の比で加熱時間を換算し、m:ss表示に加工して"Heat for " + ansでポップアップ、仕上げにapp.Vivrateでスマホを振動させ達成感を味わう。
20201121_181900.gif

補足

スピンボタンの選択肢を.GetTextで参照しているので、受け取った数字が文字列になっていると考えて、数字型に変更するためにNumber()メソッドを使ったところエラーになってしまった。

結局、そんなことしなくてもそのまま計算できてしまうみたい^^)b

次回

アプリ作成はこれにて終了。

次回はシリーズ目次的なまとめと、コード全文、DroidScriptのちょっとした使い方を紹介。
スマホでスマホアプリを作る シリーズまとめ

つづく

シリーズ

DroidScript電子レンジアプリ作成
スマホでスマホアプリを作る① Hello World!
スマホでスマホアプリを作る② 背景やテキストの追加
スマホでスマホアプリを作る③ スピンボタンとシークバー
スマホでスマホアプリを作る④ 実行ボタン
スマホでスマホアプリを作る シリーズまとめ

外伝
【GAS】電子レンジワット数で加熱時間を換算するwebアプリを作ってみた

YasumiYasumi
非エンジニアのリーマンが、コロナ禍でGoogleAppsScriptに出会い仕事で楽をするため奮闘中!プログラミングの素養ゼロから、ネット検索だけでどこまでやれるのか・・・。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away