2013年8月6日火曜日

enchanMOONでの線の色の変え方

enchantMOONにはペンの色を赤に変えるシールが標準で存在します。
ですが他の色は存在しません。白に戻すためのシールも存在しません。

では他の色を変えるにはどうすればいいでしょう?

方法1.既にあるシールをhackする

 赤いインクのシールをhackしてブロックを[ペン][色]みたいに編集すると青い色の線が描けます。(もしかして新たにシールを作ってブロック追加すればいいだけ?MOONBlockをあまり触ってないのでよくわかってないです)

方法2.シールのhack.jsを編集する

 USB接続してシールのhack.jsを編集します。
ストレージの直下にDataフォルダが存在するのでその中にMyNotebook1というのがあると思います。その中にヘンテコな名前のフォルダがあると思うのですが、ページ毎にフォルダが存在するみたいです。
 ルートフォルダの下にあるDCIMフォルダの100MOONの画像のファイル名を見ながらどれがどのページかを判別してください。画像のファイル名とページのフォルダ名が一部一致するはずです。
シールがあるページにはhack.jsというファイルが入ってるフォルダがあるはずです。
以下のソースをコピペすればシールをタップした時に青い線が描けるようになるはずです。
importJS(["lib/MOON.js", "lib/enchant.js", "lib/ui.enchant.js", "lib/color.enchant.js", "lib/stylus.enchant.js", "lib/puppet.enchant.js", "lib/moon.puppet.enchant.js"], function() {
    enchant();
    enchant.puppet.prepareTheatre({
        assets: []
    });
    StickerPuppet.create("シール", {
        behavior: [{
            stickertap: function(event) {
                MOON.setPenColor(0, 0, 255, 255);
                enchant.puppet.stopTheatre();
            },
            stickerattach: function(event) {
                enchant.puppet.stopTheatre();
            },
            stickerdetach: function(event) {
                enchant.puppet.stopTheatre();
            }
        }]
    });
});
これの3つ目の引数を255にすれば青になります。MOON.setPenColor(0, 0, 255, 255);
1つ目は赤で2つ目は緑の値を設定します。4つ目は透明度ですかね?試してないのでわかりません。僕は1つ目の引数が透明度だと思ってしばらく思い通りの色が出せませんでした。

方法3.JSONを直接編集する

既に描き終わってしまった絵の色を変えたい場合はinfo.jsonを編集するしかないんじゃないですかね?
JSONを開いてcolorプロパティの値が-1だったら白です。この-1を-65536に変えると赤になるはずです。緑は-16711936で、青は-16776961らしいです。僕もさっき知りました。
この方法を使えば「赤いインクのシール」の赤く塗りつぶされた部分だけを青くできるはずです。あの赤は-65536の赤ではないと思うので色の特定が必要ですが。

 まとめ

enchantMOONの出荷報告が増えてきているので手元に届く人も増えてくる頃でしょう。
少しでも皆様のハックのお役に立てたらと思います。

0 件のコメント:

コメントを投稿