Web の事も書きたいと言っていたのに、
まったくそれらしい事が書けていなかったので
ここでねじ込む。

と言っても Web そのものじゃなくて、
Fireworks の話題。

本日は自作のコードを公開します。
題して、「 スライス名入力ウインドウ 」 です。

■ こんな特徴があります。
  1. 単体選択でも複数選択でもOK
  2. 複数なら、座標的に左上から連番を振ります
  3. スライス以外を一緒くたに選択してもOK
  4. 複数選択時、以前の入力を覚えています
※桁あわせ機能 ( 001 とか ) は有りません
※途中の番号からは振れません


僕はもうコレが無いと生きていけない体になってしまいました。

「 コードが汚い 」 とか 「 どこかでみた事ある 」 とか
色々有るかもしれませんが、
素人が色々なサイトのコードを見て、
「 動けばいいや! 」 ってな感じでやってますので、
ご容赦ください。


■ 使い方
  1. 下のコードをコピー
  2. メモ帳に貼り付け
  3. 適当な名前を付けて保存
  4. 拡張子を jsf に変更
  5. このファイルを Fw の Commands フォルダに放り込む
  6. Fw を起動(既に起動していたら再起動は不要です)
  7. スライスを適当に選択
  8. メニュー > コマンド の中に放り込んだファイルが表示されているはず
  9. それをクリックして実行
Commands フォルダのパスは Windows7 で CS6 の場合は以下の通り。
C:\Users\ユーザー名\AppData\Roaming\Adobe\Fireworks CS6\Commands

Commands フォルダの中に分かりやすいように自作専用のフォルダを作っても良いと思う。

もしこの辺りが分からなかったら、
「 Fireworks コマンド インストール 」 でググッタラいいかも。
投げっぱなしで申し訳ない。


■ コード
// スライス数取得
var sLeng = 0;
for(var i = 0 ; i < fw.selection.length ; i++){
     if (fw.selection[i] == "[object SliceHotspot]"){
       sLeng++;
     }
}

if ( 1 == sLeng ){
// ■1つ選択時処理
  var objName = fw.selection[0].baseName;
  var objName2 = prompt("レイヤー名",objName);
  if ( objName2 != null ){
    objName = objName2;
    if (fw.selection[0] != "[object SliceHotspot]"){
      fw.getDocumentDOM().setElementName(objName);
    } else {
      fw.getDocumentDOM().setSliceFilename(objName);
    }
  }
} else if( 1 < sLeng ) {
// ■複数選択時処理
  if( objNames == undefined ){
      var objNames = "slice";
  }
  var newObjName2 = prompt("レイヤー名",objNames);
  if ( newObjName2 != null ){
    objNames = newObjName2;
    var newObjName3 = new Array();
    // スライスを配列に入れる
    for(var i = 0 ; i < fw.selection.length ; i++){
         if (fw.selection[i] == "[object SliceHotspot]"){
           newObjName3[i] = fw.selection[i];
         }
    }
var kkn = 1; // 交換回数(下のループに入る為に1を入れている)
  // 座標の順に交換
    while( kkn > 0 ){
       //alert("交換");
       var kkn = 0; // 交換回数初期化
       for(var i = 0 ; i < ( newObjName3.length - 1 ) ; i++){
         var nexi = i + 1; // 次の変数指定用
           if ( newObjName3[i].top < newObjName3[nexi].top ){ // 上下比較
             //alert("入れ替え");
             var kari = newObjName3[i]; // 一時退避
             newObjName3[i] = newObjName3[nexi];
             newObjName3[nexi] = kari;
             kkn++
           } else if( newObjName3[i].top == newObjName3[nexi].top ) {
               if( newObjName3[i].left < newObjName3[nexi].left ){ // 左右比較
                   //alert("入れ替え");
                   var kari = newObjName3[i]; // 一時退避
                   newObjName3[i] = newObjName3[nexi];
                   newObjName3[nexi] = kari;
                   kkn++
               }
           } else {
             //alert("アクションなし");
           }
       }
       //alert("交換回数" + kkn);
    }

  // 番号割り振り
    for(var i = 0 ; i < newObjName3.length ; i++){
       newObjName = newObjName2;
       n = newObjName3.length - i;
       newObjName = newObjName + "_" + n;
       newObjName3[i].baseName = newObjName;
    }
  }
}