24
25

More than 5 years have passed since last update.

Flash使いのためのAdobe Animate CC でCanvas作成 JavaScript記述の備忘録

Last updated at Posted at 2016-10-07

概要

FlashからAnimateになって、本格的にcanvasアプリ作っていなかったので、Action Scriptで実現していた基礎的なことをJavaScriptでどう書けばよいのか、作ってみながらメモります。

環境

Windows10 + Adobe Animate CC 2015.2

初期

新規作成で「HTML5 Canvas」を選択する

いろいろやってみる

基本事項

  • JavaScriptはタイムラインスクリプトとして、直にかけばOK。
  • 昔は、/*js */ で囲って書くなど必要だったが、ベタにかけばOK。
  • 実行タイミングも、Flashと同じ。JSをかいたスクリプトのフレームに入ったら実行される。

細かいこと

  • this は省略できない。
  • タイプミスなど全く指摘してくれないので、かなり不便。
  • console.log を多用してデバッグしていくのがよさげ。

フレーム間の変数の取り扱い

1フレーム目で、以下のように書く

var a = "";
b = "";

2フレーム目で、console.log すると、
a は、undefined。
b は、文字列"い"が出力される。
var 宣言をすると、そのフレームのみのローカル変数となるようだ。

play(),stop();

ASとほぼ同じ

this.play();
this.stop();

ボタンクリック

ボタンシンボルのつくりかた、インスタンス名の付け方は、Flashと同じ。アップ、オーバー、ダウン、ヒットも何もせず動作する。
クリック時のJSは以下。(btn1がボタンシンボルにつけたインスタンス名)

this.btn1.addEventListener('click',clickFunc);

function clickFunc(){
    //処理をかく
}
  • ボタン自身のオブジェクト自身を取得したい(ASの Event.target )が、まだその方法がわかっていない。どなかた教えてください。

gotoAndPlay() gotoAndStop()

ASと同様にフレーム番号指定もできるが、ASはフレーム番号1から始まるのに対し、JSは、フレーム番号0から始まる。よって、1つずれる。
分かりらいので、ラベルをつけてジャンプするのがオススメ。ラベルの設定は、ASと同じ。
また、クリックして gotoAndPlay するようなときは、以下のようにroot宣言しておく。

var root = this;
this.btn1.addEventListener('click',clickFunc,this);

function clickFunc(_obj){
    root.gotoAndPlay("page1");
}

MovieClip制御 .x .y .scaleX .scaleY .visible .alpha

以下は動いた

var root = this;
this.btn2.addEventListener('click',clickFunc2);

function clickFunc2(){
    root.mc.x += 10;
    root.mc.y += 10;
    root.mc.scaleX += 0.1;
    root.mc.scaleY += 0.1;
    root.mc.visible = !root.mc.visible;
    root.mc.alpha -= 0.1;
}

以下のプロパティは動かなかった。
.width .height

ローカルで動かす場合の注意

Webサーバーではなくローカルファイルを開いて使う機会は少ないと思いますが…
ローカルで動作させる場合に特有のエラー回避方法です。
特にChromeでエラーがでます。

スプライトシートは使わない

パブリッシュ設定で「スプライトシートに結合」のチェックを外す。これのチェックが入っていると、以下エラーで表示自体ができない。

Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

なお、スプライトシートを使わないと、画像ファイルがライブラリ内のシンボル名どおり出力されます。日本語OSならバグることはないですが、英数字にしておいたほうが無難です。

ボタンは使わない。

ボタンシンボルではなく、ステージに配置した「ボタンインスタンス」は使わない。
正確には、「ビットマップが含まれるファイルでボタンがあるとエラー」になります。「ムービークリップインスタンス」にすればOK。

ボタンの中にビットマップを使わない。

上記の注意事項で「ムービークリップインスタンス」にしても、そのクリックアクションをつけたムービークリップの中にビットマップがあると、クリックアクションが発動したときに以下エラーになる。

Uncaught An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.

解決策は、ボタンの上に、アルファ1のムービークリップ(中身はシェイプだけ)を重ね、そのムービークリップに対してアクションを設定する。
※アルファ0だと、クリックアクションが設定できない(イベントが発生しない)ため、アルファ1にする。

参考サイト

公式
CreateJS http://www.createjs.com/

参考にした記事など
https://github.com/HAKASHUN/manabi/issues/11


徐々に追記していきます。

24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25