望月の蠱惑

enchantMOONに魅了されたので、先人の功績を辿って、自分も月へ到達したい。

覚書 日付シールで勉強したこと 2/3

javascriptでpushって何するの?(と検索) A.配列に要素を入れていくんだよ。
この場合、筆跡(strokes)のデータだろうな。冒頭の数字の羅列のことかな。だけど、なんか唐突だなぁ。まだ日付だってでてきてないし。

src_stroke = figure_strokes[ fig ][ i ]ってなんだろう。中の人がわからない。その長さから2を引いた回数だけ繰り返すけど、一回終わるごとに3増やす。このk=k+3っていう増え方。3つずつ増えるときいてピンとくるのは、strokesデータが、x,y,筆圧,x,y.筆圧って3つ一組ってことぐらいだけどね。あとラスト3行は、

one_stroke.date.push ( src_stroke. date[ k ] + base_x );
one_stroke.date.push ( src_stroke. date[ k + 1 ] + base_y );
one_stroke.date.push ( src_stroke. date[ k ] + 2 );

ラスボスだぁ。baseってくらいだから、ここに元の座標位置を足してるんだろうな。3番目は筆圧だから座標とは関係ない。だからbaseとかない。

なんだか解読の材料が足りない気がするね。ワトソン君。じゃ次。

第三段落 function make_date_strokes( d_str)

dateだから、日付のデータをstrokesにするって感じかな。以下、変数と中の人紹介。

var delta_x =16;
var x = 767 - (delta_x * 11);
var y = 3;
var date_strokes = [ ]

で、この関数の最後の方に、ほとんど同じ処理をしている箇所がでてきた。違っているのは、xとyにそれぞれ2を足しているのと、-16777216 が -1になっている点。

x、y、筆圧? encyantMOONに関する資料をいろいろ読んでみると、ここに出てくる数字と合致しそうなデータが見つかった。

767は、画面の横幅768に近い。x=だし、これに決定。-16777216はペンの色で黒。じゃ、-1はっていうと白色。これは、前回の日付シールの流れの④にあった、「少しずらして白と黒とで2回書いてる」って部分じゃないのか。あ、書いたら完成だからまだ書いてないのか。書く準備ってことかな。そのデータの準備が終わったら、x = x + delta_x; x軸に横へ16ずれて、次の文字にいこうって意味だ。16ずれると、ちょうどいい具合に文字間がとれるんだねきっと。var x = 767 - (delta_x * 11); は、画面の横幅から一文字分のスペース16を11文字分引いた場所っていうことは、日付の最初の数字を決めている(それが1週目のxの中の人以下16ずつずれていく)ってことでいいのかな。
 文字数=処理を繰り返す回数だから、2013-10-5なら、9回。最大でも10回まで。11文字分のスペースをとっているのは、右端1文字(または2文字)分スペースをとろうってことでしょうか。

この段落でわからなかったのは、
charAt ( i ) 「文字列内のi文字目の文字を入れる」
concat これはシールの説明にも出てきた単語だけど、「配列の後方に要素を追加する、連結する」とそれぞれ書いてあった。つまりどっちも、筆跡データをきちんと並べていくのに使ってるっぽい。そんなとこ。

とにかく、この部分の仕事は、あらかじめ用意しておいた数字とハイフンを、日付通りにきれいに並べるってことなんだね。

 気になったのは、この段落の途中に、第二段落のタイトルが微妙に変装して出てくるとこ。例の白黒2回通り分のデータを作っている部分なんだけど、

strokes_for_figure ( d_str.charAt ( i ), x, y, -16777216 ) と、二段落目のタイトルの

strokes_for_figure ( fig, base_x, base_y, pen_col )。

んっ!pen_colと、-16777216(白)って、関係ありだ。それぞれ頭から順番に同じデータを持つってことかもしれない。じゃ、そういうことにして、お互いに関連しているっと。 ここで、いまさらながらプログラムの基本を知る!


関数は呼ばれて初めて仕事する。


第三段落が第二段落を呼んで材料渡して、第二段落が材料もらって仕事始める。書いてある順番に上から読んでも、そりゃ、つながらないさ。

(これ本気。初心者って、こういうものですよ。ほんと………)