No.16 Cookieからの情報読込
03 動作ルーチン
 
読み込み対象の判定  「Line861〜868 , 894」



 このスクリプトは、データの読込対象を受け渡された変数によって決定する機能を持っているため、この判定式が組み込まれています。
 指定されたレイヤー番号から対象となる読込のCookie番号を算出(書き込み字と同等のルーチン)した後、読み込みコードによって動作させる部分を決定させます。
 数値=0の場合はX、Y座標と表示状態の取得
 数値=1の場合は、zIndex数値の取得
 数値=2の場合は、上記2つの全てを取得

による動作を

「Line 866 / 894」


	if (r_cmd == 0 || r_cmd == 2){
if (r_cmd == 1 || r_cmd == 2){

 によって行っています。

X座標、Y座標 表示状態の呼び出し  「Line867〜889」



「Line 867〜868」


  if ( !isNaN(OriginalData) ){
    rCx = -1; rCy =-1;rCd = -1

 呼び出されたCookieの値が不正であった場合、計算ルーチンを通さずに、データ値を「−1」として出力します。



 データの呼び出しルーチンは、 ヘッダー識別子判別用と、情報取り出し用の2つの「 for 」ステートメントによって動作しています。

「Line 870〜873」


  var rCount =0;
  for (Reading = 0 ; Reading < 
                OriginalData.length ; Reading ++){
    if (OriginalData.charAt(Reading) == "/"){
      if ( parseInt(OriginalData.substr
                 ( Reading+1 , 2) ,10) == Count ){

 ヘッダー識別子「/」を検索するために、 [ for ]で回されている「 Reading 」変数を、「 charAt 」メソッドへ代入し、順に文字列を検索しています。
 文字列「/」を検索した場合、その後ろの値、即ちレイヤー番号が、呼び出し要求のあったレイヤー番号と一致しているかどうかをチェックする必要があります。
  parseInt(OriginalData.substr( Reading+1 , 2) ,10)
 は、「/」の次の文字列から2文字を検索しています



 呼び出し要求のあったレイヤー番号と値が一致していた場合、その中に格納されているデータを変数に代入していくルーチンが動作します。

「Line 874〜886」


  for (InputData = Reading + 1 ; InputData <
                      OriginalData.length ; InputData ++){
    if (OriginalData.charAt(InputData) == "_"){
      var ReadingNum =  parseInt(OriginalData.
                             substr( InputData+1 , 4) ,10)
      switch (rCount){
        case 0: rCx = ReadingNum ;break;
        case 1: rCy = ReadingNum ;break;
        case 2: rCd = ReadingNum ;break;
      }
      rCount ++;
    } else if (OriginalData.charAt(InputData) == "/"){
      break;
    }
  }

 データの識別子は「_」によって行われているため、データの呼び出しの検索文字列も変更されています。
  if (OriginalData.charAt(InputData) == "_")
の条件が合致した場合、その都度識別子の後ろにある4桁分を、データとして数値変換します。
 4桁なのは、X座標、Y座標がそれぞれ最大9999までの座標値を記録しているからですが、4桁未満であっても、 parseIntによって変換すると、正常な数値として取り出し可能であるため、4桁固定で読込を行っています。

 データの記録順は、「レイヤー番号,X座標,Y座標,表示状態」の4つですが、うち最初のレイヤー番号は読込時には必要が無いため、X座標からの呼び出しになります。
 データの読み出しを完了すると、rCount ++ を通すことで、対象となる変数への格納位置を変更しています。

 データの読込数に関わらず、識別子として「/」を読み取った場合、即ち、データが次のレイヤーの情報であることを示す識別子を認識した場合は、[ for ]を抜け出ししてループを終了します。

zIndex情報の呼び出し  「Line894〜906」



 読み込み対象の数値が「1」「2」であった場合、 zIndex値の取り出しを行うためのルーチンが動作します。
 この条件文に合致しなかった場合、直接的にファンクションから抜け出ることは無いのですが、他にスクリプトが存在しないため、実際はこの条件文に合致しなかった場合はファンクションは終了します。

 zIndexの情報に関しては、条件文合致後に、「getCookie」によって情報の呼び出しを行います。 データの呼び出しが完了し、そのデータが正常であると確認された場合、読込ルーチンが動作します。

「Line 897〜904」


  for (Reading = 0 ; Reading <
                   OriginalData.length ; Reading ++){
    if (OriginalData.charAt(Reading) == "_"){
      if (cCount == rCount){
        rCz = parseInt(OriginalData.substr
                              ( Reading + 1 , 2) ,10)
        break;
      }; rCount ++;
    }
  }

 読込ルーチンでは、
  if (OriginalData.charAt(Reading) == "_")
 によって識別子が検索され、
  if (cCount == rCount){
 によって、読込対象の zIndexであることを確認された場合に、
  rCz = parseInt(OriginalData.substr( Reading + 1 , 2) ,10)
 rCzへ、対象の zIndex読み込みを行って、ファンクションを終了します。
 



ページの最上段へ移動します