2015年4月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« enchantMOON : 双方向リンクシール : 一応公開 | トップページ | 配置換え支援「定着シール」、修正:付箋と併用できます »

2013年10月31日 (木)

手書き要素の配置換えを「ちょっとだけ」便利にするシール

画面に文字や図を手書きした後で、それらの配置を入れ替えたり並べ直したりしたいことがあります。

こういう場合は、手書きしたものを Link シールにして、画面上でドラッグするという(とりあえずの)ノウハウがあります。これはこれでよいのですが、動かした手書き要素がいつまでもシールに張り付いていて、上から線を重ね書きするときに邪魔になったり、と、時々困ることもあります。

Link シールのドラッグで配置換えした手書き要素を、もう一度ページの上に書き戻して、シールは剥がしてしまいたい。書き戻せば、また、他のシールで処理することもできるだろうし。ということで作ったシールです。

名前は一応「定着シール」とします。

(2014/8/24 : MOONPhase v.2.10.0 対応済み)

Download : [定着シール]

使い方

  • まず、普通に画面にいろいろ手書きします。
  • 配置を変えたいパーツがあれば、指で囲んで、"Link" でシールにします。
    • Link 先はどこでもよいですが、この目的の場合は、「自分のページ」への Link がお勧めです。これだと間違って tap 操作をしてしまっても、他所のページに移動しないのでストレスになりません。
  • 配置が決まったら「定着シール」を実行します。シールのストロークをベースのページに書き出します。
    • このとき、web からの切り取りなど、背景画像を持っているシールのストロークは無視しますが、手書きだけのシールは Link シールと MOONBlock などのシールの区別がつきませんので、全て書き出してしまいます。手書きラベルのシールは先に剥がしておく方がいいと思います。
    • 一旦上記の仕様で作りましたが、背景画像のあるものだけを対象外にしても、あまりメリットがありません。手書きラベルのストロークの「定着」を回避できるならよいのですが。結局意味がないので区別しないことにしました。すべてのシールのストロークが「定着」されて、「ふやけ」ますので、定着させたくないシールは先に剥がしてから使用してください。
    • 背景画像に拘らないようにしたので、付箋シールと併用できるようになりました。詳細は明日か明後日の記事に書きます。
  • 残念ながら、Link シールは手作業で剥がさなければなりません(後述)。
    • 無事に書き出されたシールは、ストロークが「ぶわっと」ふやけますので直ぐ分ります。一つ一つ手作業で剥がしてください。
  • 更に配置を変えたければ、以上を繰り返します。

以上のように、「ちょっとだけ便利にする」程度の代物です。

注意:やっぱり動作が安定しません。ロジックとしては、Link シールが何枚あっても大丈夫なはずなのですが、枚数が多いか、一枚でも大きくてストロークがたくさん含まれているシールだとシステムの負荷が大きいらしく、止まったりします。

小さ目のシールを 1-2 枚ずつ動かして、こまめに「定着」させていった方が安全です。

…実はあんまり便利になってないかも。

ホントはやりたかったのに、できなかったこと

配置調整を Link シールでやるのは、現状では許容します。バッド・ノウハウだけれども現実的。

「定着シール」では、シールのストロークをページに書き出した上で、元のシールを自動的に剥がしたかった。でも、他所のシールから勝手に別のシールが剥がせるというのはユーザーレベルからでは特権過ぎるので、当然不可能でした。

こっちは可能じゃないかと考えたのは、ページのストロークデータと、シールのストロークデータをまとめて、別のページに貼りこむこと。白紙のページか、新規ページに張り込めば、元のページでまた配置調整をやり直すのも簡単だし、実はこちらの方が有用かもしれない。

で、まず実験的に以下のようなコードを書きました。

    sticker.ontap = function(event) {
        // 移動元のページの storage.json に {"before":1} を書き出す
        localStorage[ "before" ] = 1;

        // ノート選択画面から別のページを選んで
        MOON.openNotebook( function( pageID ) {

            // そのページに移動し
            MOON.openPage( pageID );

            // storage.json に {"after":2} を書き出す
            localStorage[ "after" ] = 2;
            MOON.finish();
        });

    };

「双方向リンクシール」の時に、ページを移動してから peel() するとうまくいかないことを経験していましたから、今度はこれで、移動前のページの storage.json と、移動後のページの storage.json にそれぞれデータが書き込まれるはずです…。

…できませんでした。

実際には移動元ページの storage.json が {"after":2,"before":1} になります。他所のページに移動したからといって、そのページの情報にはアクセスできないのです。まあ、セキュリティを考えると、自ページに張り付けていないシールから、自ページのデータを改変されてしまってはかなわないので正しい仕様なのですが。

・・・というわけで、シールも剥がせない、他所のページにデータを張り込むこともできない。だったら、せめて剥がすべきシールが視認しやすくなるように、見た目を変えるくらいの工夫はしよう・・・、と考えた結果、現在のような仕様になりました。

このシールもまた、「ないよりマシ」くらいには役に立ってくれれば幸いですが。

« enchantMOON : 双方向リンクシール : 一応公開 | トップページ | 配置換え支援「定着シール」、修正:付箋と併用できます »

enchantMOON」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1527616/53779673

この記事へのトラックバック一覧です: 手書き要素の配置換えを「ちょっとだけ」便利にするシール:

« enchantMOON : 双方向リンクシール : 一応公開 | トップページ | 配置換え支援「定着シール」、修正:付箋と併用できます »