【はじめてのmo.js】(3)咲き誇る”図形” - Shapeクラス 応用編

この記事は約4分で読めます。

どーも、ご無沙汰しています。

新入社員に「本舘さんはアニオタだよ」と紹介されているらしく、何の反論もできないものの複雑な感情を想起された本舘です。

記事前の挨拶にアニメネタを振る……と言うのも考えたのですが、差し止めされそうなので、無難に我が家のお庭のメンバー紹介です。

……冬になったらどうしよう?

写真は我が家が誇るバラです。品種は忘れましたが、とても鮮やかな花を付けます。

ちなみにこれは、10月現在の写真。世間は秋色に染まり、気温も低くなってきたというのに、このヤロウ(?)は今年3度目の花期を迎えました

こいつは我が家の庭でトップクラスの生命力を誇り、枝葉を伸ばしては片っ端から蕾を付けまくる怪物。怪獣映画『ゴジラ』シリーズの、バラから生まれた怪獣ビオランテを彷彿とさせます。トゲは怪獣の名に相応しく強靭で、金属かと思う程に堅く、鋭いです。
草むしり中、何度こやつに引っかかれたことか……

……と、時節の挨拶(?)が終わったところで、今回の本題。mo.jsの基本である「Shape」クラスの応用編を見ていきましょう。

「ポワ~ン」と波紋を広げるサンプル

前回の記事で、「図形の動作は、Shapeのコンストラクタへ渡すパラメータで決まる」という事を解説しました。

Animoconデモにある「波紋」のような動作を設定するのも、その例外ではありません。所詮はコンストラクタへ渡すパラメータが違うというだけです。

早速、簡単な波紋を作るサンプルを用意しましょう。

<body>
    <input id="btnTgt" type="button" value="波紋を出すよ!" onclick="doShape();">

    <script src="mo.min.js"></script>
    <script>
    // 波紋のタネ
    var objShape = new mojs.Shape({
        shape : 'circle',
        scale: {
            0 : 1
        },
        radius: 300,
        stroke: 'pink',
        strokeWidth: {
            50 : 0
        },
        fill: 'transparent',
        duration: 1000
    });

    // 波紋を出すよ!
    function doShape() {
        objShape.replay();
    }
    </script>
</body>

?のサンプルのお試しはこちら(jsFiddleのページに飛びます)

上記サンプルを実行して、左上端にあるボタンをポチッ?と押した結果が……。

?の図の通りです。ピンク色の波紋が「ポワ~ン」と広がり、消えていきます。

波紋のサンプルを解説しますと……

サンプルのコードを眺めると、前回の記事で紹介したパラメータがチラホラと見えます。紹介済のパラメータの部分だけ抜き出して、動作を説明すると……。

「半径300ピクセルの透明色(=transparent)の円を1秒間(=1000ミリ秒)かけて、縮尺0(=半径0ピクセル、すなわち何も表示されていない)から縮尺1(=半径300ピクセル)まで大きくする」

という事になりますね。

これって、前回のサンプルの色違いなだけです。円の色を青ではなく、透明に指定しているだけです。

とすると……勘の良い方は既に「ああ、なるほど」と気付いてしまっているかと思いますが……波紋の部分とは、円(=図形)の輪郭である、ということが言えます。

つまり、今回のサンプルで新しく追加したパラメータは、「輪郭」に関する設定というワケです。早速、その内訳を見ていきましょう。

■stroke
「一撃」とか「羽ばたき」という意味の言葉ですが、mo.jsでは「輪郭」と解釈してOKです。このパラメータでは「輪郭の色」を設定します。

■strokeWidth
「輪郭」「Width(=幅)」という言葉が付いたもので、そのままズバリ「輪郭の幅」を設定するパラメータです。
このサンプルでは「scale」パラメータと同様の形式で指定していますが、これは{[動作開始時の幅] : [動作終了時の幅]}を表しています。

これらのパラメータを踏まえて、改めてサンプルの動作を解説すると。

「半径300ピクセルの透明色(=transparent)で、輪郭の色がピンクの円を1秒間(=1000ミリ秒)かけて、縮尺0(=半径0ピクセル、すなわち何も表示されていない)から縮尺1(=半径300ピクセル)まで大きくする。この時、輪郭の幅を50ピクセルから0ピクセルへと変化させる」

ということになります。

新しい事は少ないので簡単ですよね♪ ……ですよね?

さて、次回は……

第一回の記事で紹介した「花火」を実装するための「輪」の部分は、今回の「波紋」の解説によって実装方法をご理解いただけたと思います。

次回は、「花火」を構成するもう一つの要素。パッと弾けて広がる「飛沫」の部分の実装方法を解説したいと思います。

次回はmo.jsのクラス「Burst」を新たにご紹介することになりますので、心の準備をしておいてください……!

それでは、またお会いしましょう。

シムネットで私たちと一緒に働きませんか?

多様なスキルや個性を持った社員それぞれが、自分の持ち味を活かし、切磋琢磨しながら、ユーザーファーストの良質なサービスを提供している会社、それがシムネットです。

お客さまに喜んでもらえる「ものづくり」を大切にし、「つくるよろこび」を味わうことができる環境。

そして、社員全員が“主役”として輝ける場所、これからもそんな企業であり続けます。

技術
この記事をシェアする
SIMLOG
タイトルとURLをコピーしました