enchantMOON 2.9.1 ストローク検証その2

MOONPhase version 2.9.1

前回の続き、enchantMOON 2.9.0以降のストロークの編集について検証してみた。

言葉がわかりづらいので、勝手に以下のように呼ぶことにする。

  • ストロークグループ:externalStrokesのstroke1.json, , のファイル単位の塊
  • ストローク:一本の線でつながってる線。strokesオブジェクト。(幅や色の情報を持つ)
  • 点:ストロークを構成する点。strokesオブジェクトの中のdata配列に格納。

A.既存ストロークの点を削除

例)0番目のストロークグループの0番目のストロークの最後から10点を削除するコード。

var paper_ID = MOON.getCurrentPage().backing;
var paper_strokes = MOON.getStrokeJSON(paper_ID);
var No_Group = 0;
var No_Stroke = 0:
var cnt_delete_point = 10;

for (var i=0; i<3*cnt_delete_point; i++){
    paper_strokes[No_Group].strokes[No_Stroke].data.pop();
}
MOON.setStrokeJSON(paper_ID, paper_strokes);

B.既存ストロークに点を追加

例)0番目のストロークグループの1番目のストロークの最後に点を追加するコード。

var paper_ID = MOON.getCurrentPage().backing;
var paper_strokes = MOON.getStrokeJSON(paper_ID);
var No_Group = 0;
var No_Stroke = 1:
var add_point_x = 300;
var add_point_y = 300;
var add_point_p = 1.0;
        
paper_strokes[No_Group].strokes[No_Stroke].data.push(add_point_x);
paper_strokes[No_Group].strokes[No_Stroke].data.push(add_point_y);
paper_strokes[No_Group].strokes[No_Stroke].data.push(add_point_p);
MOON.setStrokeJSON(paper_ID, paper_strokes);

C.既存ストロークの削除

例)0番目のストロークグループの2番目のストロークを削除。

var paper_ID = MOON.getCurrentPage().backing;
var paper_strokes = MOON.getStrokeJSON(paper_ID);
var No_Group = 0;
var No_Stroke = 2:
        
paper_strokes[No_Group].strokes.splice(No_Stroke,1);
MOON.setStrokeJSON(paper_ID, paper_strokes);

D.新規ストロークの追加

例)0番目のストロークグループの0番目のストロークと同じスタイルの直線を0番目のストロークグループの最後に追加するコード。

var paper_ID = MOON.getCurrentPage().backing;
var paper_strokes = MOON.getStrokeJSON(paper_ID);
var No_Group = 0;
var No_Stroke = 0:
        
var add_stroke = JSON.parse(JSON.stringify(paper_strokes[No_Group].strokes[No_Stroke]));    //スタイルのコピー
add_stroke.data =[100,500,1.0,600,500,1.0];                             //データの作成        
paper_strokes[No_Group].strokes.push(add_stroke);
MOON.setStrokeJSON(paper_ID, paper_strokes);

おまけ.新規ストロークグループの追加

これまで使用した範囲ではstroke2.jsonを見たことがないで想像の範囲です。
一応動きましたが、挙動は怪しいです。
例)0番目のストロークグループの0番目のストロークと同じスタイルの直線を新たに追加したストロークグループに追加するコード。

var paper_ID = MOON.getCurrentPage().backing;
var paper_info = MOON.getPaperJSON(paper_ID);
var paper_strokes = MOON.getStrokeJSON(paper_ID);
var No_Group = 0;
var No_Stroke = 0:
        
var next_Group = paper_info.externalStrokes.length;
paper_info.externalStrokes[next_Group] = JSON.parse(JSON.stringify(paper_info.externalStrokes[next_Group -1]));
paper_info.externalStrokes[next_Group].name =  'stroke' + (next_Group +1) +'.json';
MOON.setPaperJSON(paper_ID, paper_info);
        
paper_strokes = MOON.getStrokeJSON(paper_ID);
var add_stroke = JSON.parse(JSON.stringify(paper_strokes[No_Group].strokes[No_Stroke]));    //スタイルのコピー
add_stroke.data =[100,600,1.0,600,600,1.0];                             //データの作成        
paper_strokes[No_Group+1].strokes.push(add_stroke);

MOON.setStrokeJSON(paper_ID, paper_strokes);

ひとまずこれで終了。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です