第四段落 StickerPuppet.create(”シール”,{
これ、見たことある。MOONBlockとかいじって、codeとかみると出てくる部分のやつ。シールをタップしたとき stickertap: 貼ったとき stickerattach: はがしたとき stickerdetach: の挙動をかく場所だ。みると、貼ったときにたくさん書いてあるから、このシールは貼ったときに仕事するんだな。で、関数は呼ばれたら仕事する。シールを貼るってことが、この関数が働くきっかけだ。となれば、これが、第一章なんだね。
ここで、とうとう日付を取得している場面にでくわした。
var d = new Date(); これ。
イヌでもわかるJavaScript講座 Step.3 現在の日付と時間を表示してみましょう
これで、秒までの取り出し方がわかりました。2013年10月5日午前2時5分20秒と表記させる方法ものっていました。
オリジナルのシールでの表記方法 var date_str = d.getFullYear()・・・以下略、と違って、上記HPでの紹介だと年月日時分秒それぞれに変数を用意してそれを整形しています。おそらく、それだと実行により時間がかかるのかもしれません。さて、それでは、桁合わせをする方法は?
Liquidfunc 様 2010-05-23 JavaScriptで日付取得と桁合わせ
にありました。1桁の数字を0で埋めて桁あわせするための関数です。これを、うまいぐあいに、つぎはぎすればよさそうだぞ。
つぎはぎの絶対条件とは? 中の人はかわっても、登場人物を変えないこと。
ここで出荷すべきは、整形済みの日時データです。これは改変しています。でも、変数名はそのままにしておかねばなりません。そうしないと納入先からクレームがはいる。つまり、ここでつくった日時データは、var date_srt へ代入する。
さて、オリジナルでは、整形即代入でした。改変後は作業工程が増えていますから、直接代入できないのかもしれない。0を加えないサンプルによると、日付取得後の表示のときにdocument.write(変数);で表示できてたけど、0を加える関数の結果の表示のときは、document.writeln(関数名());で、表示してた。(メモ帳に書いてブラウザで日付が出るかを確認してた)で、var date_srt = (関数名())にしてみました。たぶん、関数タイトルの次の( )に、うまく書いとけば無駄がないんだろうなぁ。そんな感じで、とりあえず、日付データはできました。
var toDoubleDigits = function(num) {
num += "";
if (num.length === 1) {
num = "0" + num;
}
return num;
};
var yyyymmddhhmiss = function() {
var myD = new Date();
var yyyy = myD.getFullYear();
var mm = toDoubleDigits(myD.getMonth() + 1);
var dd = toDoubleDigits(myD.getDate());
var hh = toDoubleDigits(myD.getHours());
var mi = toDoubleDigits(myD.getMinutes());
var ss = toDoubleDigits(myD.getSeconds());
return yyyy + mm + dd + '-' + hh + mi + ss;
};
var date_str = yyyymmddhhmiss();
最後の1行以外はLiquidfunc 様のサンプルコードそのまんま。感謝いたします。
あとは、文字数がふえるので、make_date_strokes(d_str)メソッドで、位置合わせをしている部分
var x = 767 - ( delta_x * 11 );の11を、16に変更。
新表記 20131005-140520 だと、15文字+末尾スペース=16 でおさまると考えたから。
これで、インストールして実行したところ、ちょっと考える時間が増えた気がしますが、思い通りの表示となりました。
まとめ
今回のことは、初心者にとっては暗号解読の楽しみがありました。
未解決の部分は多いままですが、いちおう使えています。自力では到底及ばないところへ、先達の皆様の足跡をたどって、のろのろとついていきたいと思います。
くるのはるみ様。本当にありがとうございました。
今後の野望としては
PoICマークも同じようにかけて、日付いっしょに表記できるといいね。
画面上のタップした場所に、日付を出してみよう。
ページを双方向リンクする方法。複数リンクをシールではなく、EBT Lightのように、index.htmlを作って管理できるかも。
eMで初めてこういうことをしようと思いました。eMの威力ですね。それでは。