No.11 zIndex値の調整作業
02 ソートのための値「maxIndex」を取得する
 
 このアルゴリズムも、つきつめていけばまだまだ改良の余地はありますが、とりあえず動作するという意味で公開していますので、今回はこれで行きます。
 基本的には、 数値の昇順をチェックして、その番号を 「 zIndexChannel[] 」配列に格納、最後に、その降順の情報をzIndexDataへ適応するという形になります。

ソート前の準備  「Line 750〜776」



 ソートを行う前の段階として、数値の取得を行う必要があります。 ここでは、zIndex値の最大値である、「 maxIndex 」値を算出する一連のアルゴリズムまでを解説します。

ソートの必要性の検出  「Line 750」



「line 750」


  if ( ( parseInt(getCookie("LAYNUM")) == LayerCount ) &&
         ( parseInt(getCookie("LAYTTL")) == LayerTotal ) ) return

 このアルゴリズムは、製作者がレイヤーを変更させた場合に限って必要となる為、ステータスを読み込んで、レイヤーの変更が認められた場合にのみ、発動する条件文を最初に持っています。
 クッキーに記録されている「LAYNUM」「LAYTTL」は、それぞれ「LayerCount」と「layerTotal」の、前回起動した段階での値として取り出され、現在の値と照合して変更が認めら無かった場合、つまり、レイヤーに変更が無かった場合には、「 return 」、つまり、ファンクションから抜ける処理が組み込まれています。

Cookie上のレイヤー最終番号を取得  「Line 752〜766」



 Cookie上のレイヤー最終番号、すなわち FileCount の Cookie データは、OldFileCount に代入されます。 初期段階ではこの互いの値はイコールで宣言されており、値は同一です。

「Line 755」


    var OldFileCount = FileCount

 OldFileCount は、Cookie上に情報が記録されているかどうかを確認した後、TRUEであれば、その値が代入されます。

「Line 759〜766」


  var CheckLAYNUM = getCookie("LAYNUM")
  if (CheckLAYNUM){
    for (check = 0 ; check ≤ CheckLAYNUM.length ; check ++){
      if (CheckLAYNUM.charAt(check) == "_"){
        OldFileCount =  parseInt(Check_LAYNUM.substr( 
                                      check+1 , 2) ,10); break;
      }
    }
  }

 CheckLAYNUM に格納されたCookieのレイヤー情報(格納名:LAYNUM)は、書き込まれていた場合、「値A_値B」の形で取り出されます。 「値B」が格納されているレイヤーの最終番号ですので、読み取りは、
 if (CheckLAYNUM.charAt(check) == "_"){
 で「_」文字列を検出した後、
 OldFileCount = parseInt(Check_LAYNUM.substr( check+1 , 2) ,10); break;
 によって、「OldFileCount」に値を代入することになります。

 尚、Cookieに情報が存在していなかった場合、即ち、
 CheckLAYNUM = FALSE
 であった場合、このルーチンは動作しないので、OldFileCount値は宣言された当初の、FileCount値が代入されているということになります。

zIndexの最大値を検出  「Line 768〜776」



「line 768〜776」


  if (FileCount >= OldFileCount) OldFileCount = FileCount

  for (count=0 ; count ≤ OldFileCount; count ++){
    if (maxIndex ≤ zIndexData[count]) 
                       maxIndex = zIndexData[count];
  }
  if (maxIndex+1 <= OldFileCount) maxIndex = OldFileCount +1

 最終的な出力は、maxIndexに、現状存在しうる最大値のzIndex値を代入することですので、まずは、前回の数値を代入してzIndexの最大値を取得します。
 このスクリプトは何らかの形でzIndexへデータが残されている場合を想定して動いているので、通常の検索であれば、zIndexの最終記録番号は「 FileCount 」となります。 あくまで安全措置と考えてください。

 さて、maxIndex値は、
 for (count=0 ; count ≤ OldFileCount; count ++)
 によって導くことが可能ですが、これも稀に、数値データよりもOldFileCount値のほうが大きい場合があります。 このため、最終結果の maxIndexよりも、OldFileCount値のほうが大きかった場合は、
  if (maxIndex+1 <= OldFileCount) maxIndex = OldFileCount +1
 によって、OldFileCountの値を代入しています。



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