連動要素なし、手動式のカウントダウン式タイマーです。
「艦これ支援ツールをつくろう」を見に行く
いきなり大規模な仕様変更か?
残りカウントが0になったら音を鳴らすようにしました。
これで他の作業に夢中になっても大丈夫!
ではカウンターのデフォルト値を入力する機能の制作に入りましょうか。
・・と思った矢先に重大な問題に気がつきました。
この時計は1秒経ったらカウンタを1減らす仕様なのですが、その仕様だと入力画面を開いている間はカウントが止まってしまいます。
入力画面を出している間もカウントさせるには、前回表示した時から何秒経っているから、何秒カウントしようみたいな処理に置き換える必要があります。
バグの温床のようなもの
バールのようなものじゃないよ。
さてHSPで時間の経過を測定するなら、gettime関数を使うことになるのでしょうかね。
数秒の話で済めば良いのですが、時間や分が繰り下がったりする事やらも考えないといけませんし、
元々計画(という名前の妄想)にあった、入力内容の保持を考慮すると、日付や年が変わる事にも対応しないといけません。
一ヶ月の秒数というものは、すべてが同じ値ではないですし、うるう年とかもあるじゃんよ!
カレンダーAPI的なものを引っ張って来る事が出来たら良いのですが、これを自前で計算するのはなかなか大変な気がしてきた。
バグの温床のような気がする(´・ω・)
ますますJavaScriptで作った方が楽な気が(以下略
いやまあ、こういう場面でAPI使えないからできませんとか言っちゃわないで、これこれこういう計算をしたら、API使うのと同じ事だと思いつけると良いですね。
プログラマの為の数学的な本に載っていたりしないですかね。
今度探して買ってみよう。
(買うだけ買って安心して読まないフラグ)
問題を打破する処理案
代替案は2つ
・入力画面の間もカウントダウン処理を続ける
説明不要。以上(何
このやり方だと、セーブ機能を実装した上での復帰作業(セーブして今回起動するまでに何秒経ったか)が一手間かかるのですけどね。
・UNIX TIMEに変換して扱う
なんちゃってでも十分なんで、HSPで特定の時間からの絶対的な時間経過をうまく数値化したい。
そう思っていると、なんか面白そうなHSPモジュール見つけました!
http://d.hatena.ne.jp/tsukaban/20130616/p1 (リンク切れ)
あんたが神か!
これを使えば秒数経過に関する処理が捗る気がするので、使いこなせるように色々試してみようか・・・と意気込んだものの、
通常のHSPで動かすなら何も問題は無いものの、HSPDish環境だとリアルタイムでの時間取得が思うように動かない様子。
せっかくだからHSPDishでスマホアプリも作ってみたい!
・・という事で、HSPDishを断念するのはちょっと避けたい。
(いろいろ欲張って自滅するパターンや!)
やっぱり自前の処理で判定するしかないのか。
バグの恐怖よのう(´・ω・)
とはいえHSPでUNIX TIMEを扱う考えはなかなかヒントになりました。
人間に見せる数字は後で加工すれば良い訳で、内部ではもっと扱いやすい数値にしてしまえば良いのですな!