2010年6月5日土曜日

3. コードの流れ

<pre> <next>
コードの流れは以下のようになります。

1.ファイルの読み込み
  最初に<body onload="loaded()">からloaded()関数を
  経由してMyObject()のコンストラクタが呼び出されます。

2.コンストラクタ
  コンストラクタではcreateElement('div')で<div>タグが
  生成され、classNameで.myCSSのスタイルが指定され
  ます。

3.スタイル
  .myCSのスタイルでは四角の色、高さと幅などが指定され
  ています。

4.イベント登録
  addEventListenerでマウスのボタンが押された時のイベ
  ントをフックしてハンドラとしてmyHandler()関数を非同
  期で呼び出します。

5.メンバ登録
  オブジェクト自身を自分のメンバとして登録します。

6.オブジェクト生成
  最後にappendChildでオブジェクトを生成します。

以上が起動時の動作ですが、その後に四角の上でマウスのボタンが押されると以下のようになります。

7.ハンドラ関数myHandlerが起動します。

8.座標などを表示します。

さて、最初からもう少し詳しく見ていきましょう。オリジナルsticky-notesでは少々違和感のある起動コードが書かれていますが、1では分かりやすくするために良く知られた方法にしています。

2.は6とともに、<div>タグをcreateElement()で生成し、スタイル シートや各種の属性など宣言してappendChild()で生成しています。この方法はJavaScriptから<div>や<table>などのタグをJavaScriptで生成する方法としてあちらこちらのサイトで紹介されてますので、特に問題はないと思います。

3.は画面の好きなところに四角を描く方法です。種明かしされれば「ナンダ」という気が…(笑)ただし、leftとtopは絶対位置で指定しますので、position: absolute;で絶対位置を指定し忘れると四角が左上の隅に張り付いてしまいます。もちろん、この失敗をしたので気付きました(笑)

4.これが難問です。5と7、8とも絡んで理解を阻んでいます。・・・と言う事で項目をあらためましょう。iptで生成する方法としてあちらこちらのサイトで紹介されてますので、特に問題はないと思います。

3.は画面の好きなところに四角を描く方法です。種明かしされれば「ナンダ」という気が…(笑)ただし、leftとtopは絶対位置で指定しますので、position: absolute;で絶対位置を指定し忘れると四角が左上の隅に張り付いてしまいます。もちろん、この失敗をしたので気付きました(笑)

4.これが難問です。5と7、8とも絡んで理解を阻んでいます。・・・と言う事で項目をあらためましょう。
<pre> <next>

0 件のコメント: