CreateJSの勉強をはじめました①

#前置き
canvasタグ案件に関わっていたこともあり、現在はフロントエンドエンジニアとして、Angular案件に関わることが多いです。
ふとCreateJSを使ってみようと思いました。おそらくp5.jsと同じようなことは大抵できるんだろうと思います。
まずは公式に沿って勉強をしてみます。また、自分用メモみたいなものだけど、初歩の初歩から記述していこうと思います。
#導入
まず最初に公式サイトにアクセスして、インストール手順通りにhtmlにcreateJSを追加します。

```test.html
<script src="https://code.createjs.com/1.0.0/createjs.min.js"></script>
```

とっても簡単！　コピーアンドペーストでインストールは完了です！

次にbody内にcanvasを用意。

```test.html
<canvas id="canvas_01" width="800" height="600"></canvas>
```

createJSのGetting Startedでは、bodyタグに直接onloadされていましたが、ここはjQueryを使用したいので、createJSの上にjQueryを設置し、下にtest.jsを設置。

```test.html
<script src="js/jquery-3.4.1.min.js"></script>
<script src="https://code.createjs.com/1.0.0/createjs.min.js"></script>
<script src="js/test.js"></script>
```

test.jsの中に以下のコードを記述。

```test.js
$(window).on("load", function() {
    console.log("code here");
});
```

無事にchromeの開発モードで確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/3a24fd09-718b-b631-2e00-d2e953428b30.png)
この段階ではまだ画面は真っ白。
何もありません。

#stageの作成
次にstageを作成する。()の中には上で用意したcanvasのidを記述します。
このstageという概念は、createJSではじめて聞く概念ですが、公式によると全ての表示オブジェクトを保持する視覚的コンテナとのことです。

```test.js
$(window).on("load", function() {
    var stage = new createjs.Stage("canvas_01");
    console.log(stage);
});
```
console.logで見た中身はこのようになっていて、確かにあらゆる情報が格納されるよう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/860e26be-a110-d0fe-5a27-0bfce6a9aa7e.png)

#shapeの作成
図形を作成します。
公式通りに記述しますが、この時点では画面はまだ真っ白です。
また、console.logで中身を見てみます。

```test.js
var circle = new createjs.Shape();
circle.graphics.beginFill("DeepSkyBlue").drawCircle(0, 0, 50);
circle.x = 100;
circle.y = 100;
stage.addChild(circle);
console.log(circle);
```

graphicsの中に記述した内容の多くが含まれている。
beginFillは皆さんご存知かもですが、塗りつぶす色です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/febca109-48bd-45ee-f640-8203a3aa4962.png)
またaddChild()をしたのでparentの中に親であるstageの情報が含まれる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/de1afdd6-d7d4-a35d-ef2e-c71513f33d10.png)

描画をするために、updateを行う。

```test.js
stage.update();
console.log(circle);
```

すると以下のように、xが100,yが100の位置に円が描画されます。
ここでの距離は、左上から考えての距離になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/4bf4a3dd-eb32-af72-70c4-bbb0d3752c7f.png)

ここで、色々な改造を追加してみます。
まずはstageを黒くしたいが、どうすればできるのかわからなかったので、長方形を作成してみました。widthとheightをcanvasと揃えたかったので、stage.canvas.widthとstage.canvas.heightを指定。色指定はRGBで行いたかったのでbeginFill("0, 0, 0")を設定。

```test.js
var background = new createjs.Shape();
background.graphics.beginFill("0, 0, 0").rect(0, 0, stage.canvas.width, stage.canvas.height);
stage.addChild(background);
stage.update();
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/c4031174-513a-06e4-e6a0-209297f93651.png)

そこに先ほどの円を表示させたい。
x、yの代入はせずにひとまとめに記述を行う。

```test.js
var stage = new createjs.Stage("canvas_01");

var background = new createjs.Shape();
background.graphics.beginFill("0, 0, 0").rect(0, 0, stage.canvas.width, stage.canvas.height);
stage.addChild(background);
var circle = new createjs.Shape();
circle.graphics.beginFill("DeepSkyBlue").drawCircle(100, 100, 50);
stage.addChild(circle);

stage.update();
console.log(stage);
```

黒い背景の中に円が現れました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/526fa6ed-0343-c4d3-313b-2a6b9633c4d9.png)
console.logの中身を見ると、childrenの中に追加した順番で長方形と円が格納されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491400/11dd2739-fd5a-73c8-461a-3a79759e2741.png)

今回はここまでです！

#参考URL
https://createjs.com/
https://ics.media/
https://api.jquery.com/
https://qiita.com/AkihikoIkeda/items/9dda2dda70b77c8eeca4