名前
- Adobe Animate ユーザーガイド
- Animate の概要
- アニメーション
- Animate のアニメーションの基本
- Animate でフレームとキーフレームを使用する方法
- Animate でのフレームアニメーション
- Animate でのクラシックトゥイーンアニメーションの操作方法
- ブラシツール
- モーションガイド
- モーショントゥイーンと ActionScript 3.0
- モーショントゥイーンアニメーションについて
- モーショントゥイーンアニメーション
- モーショントゥイーンアニメーションの作成
- プロパティキーフレームの使用
- トゥイーンを使用した位置のアニメーション化
- モーションエディターを使用したモーショントゥイーンの編集
- トゥイーンアニメーションのモーションパスの編集
- モーショントゥイーンの操作
- カスタムイージングの追加
- モーションプリセットの作成と適用
- アニメーションのトゥイーンスパンの設定
- XML ファイルとして保存したモーショントゥイーンの操作
- モーショントゥイーンとクラシックトゥイーン
- シェイプトゥイーン
- Animate のボーンツールアニメーションの使用
- Animate でのキャラクターリグの操作
- Adobe Animate でのマスクレイヤーの使用
- Animate でのシーンの操作
- インタラクティブ機能
- ワークスペースとワークフロー
- ペイントブラシの作成と管理
- HTML5 Canvas ドキュメントでの Google フォントの使用
- Creative Cloud ライブラリと Adobe Animate の使用
- Animate のステージとツールパネルの使用
- Animate ワークフローとワークスペース
- HTML5 Canvas ドキュメントでの Web フォントの使用
- タイムラインと ActionScript
- 複数のタイムラインの操作
- 環境設定
- Animate オーサリングパネルの使用
- Animate でのタイムラインレイヤーの作成
- モバイルアプリおよびゲームエンジン用アニメーションの書き出し
- オブジェクトの移動とコピー
- テンプレート
- Animate での検索と置換
- 取り消し、やり直し、ヒストリーパネル
- キーボードショートカット
- Animate でのタイムラインの使用
- HTML 拡張機能の作成
- 画像とアニメーション GIF の最適化オプション
- 画像および GIF の書き出し設定
- Animate のアセットパネル
- マルチメディアとビデオ
- Animate のグラフィックオブイジェクトの変形と組み合わせ
- Animate でのシンボルインスタンスの作成と操作
- 画像トレース
- Adobe Animate でのサウンドの使用方法
- SVG ファイルの書き出し
- Animate で使用するビデオファイルの作成
- Animate にビデオを追加する方法
- Animate でのオブジェクトの描画および作成
- 線とシェイプの変更
- Animate CC での線、塗り、グラデーション
- Adobe Premiere Pro と After Effects の使用
- Animate CC のカラーパネル
- Animate で Flash CS6 ファイルを開く
- Animate でのクラシックテキストの操作
- Animate へのアートワークの挿入
- Animate に読み込まれたビットマップ
- 3D グラフィック
- Animate でのシンボルの操作
- Adobe Animate での線とシェイプの描画
- Animate でのライブラリの使用
- サウンドの書き出し
- Animate CC でのオブジェクトの選択
- Animate での Illustrator AI ファイルの操作
- ブレンドモードの適用
- オブジェクトの配置
- コマンドメニューを使用したタスクの自動化
- 多言語テキスト
- Animate でのカメラの使用
- グラフィックフィルター
- サウンドと ActionScript
- 描画の環境設定
- ペンツールを使用した描画
- プラットフォーム
- 他のドキュメントタイプ形式への Animate プロジェクトの変換
- カスタムプラットフォームサポート
- Animate での HTML5 Canvas ドキュメントの作成およびパブリッシュ
- WebGL ドキュメントの作成とパブリッシュ
- AIR for iOS 用アプリケーションのパッケージ化
- AIR for Android アプリケーションのパブリッシュ
- デスクトップ用 Adobe AIR のパブリッシュ
- ActionScript パブリッシュ設定
- ベストプラクティス - アプリケーションでの ActionScript の整理
- Animate での ActionScript の使用
- Animate ワークスペースのアクセシビリティ
- スクリプトの記述と管理
- カスタムプラットフォームサポートの有効化
- カスタムプラットフォームサポートの概要
- カスタムプラットフォームサポートプラグインの操作
- ActionScript 3.0 のデバッグ
- カスタムプラットフォームサポートの有効化
- 書き出しとパブリッシュ
- Animate CC からファイルを書き出す方法
- OAM パブリッシング
- SVG ファイルの書き出し
- Animate によるグラフィックとビデオの書き出し
- AS3 ドキュメントのパブリッシュ
- モバイルアプリおよびゲームエンジン用アニメーションの書き出し
- サウンドの書き出し
- ベストプラクティス - モバイルデバイス向けのコンテンツ作成のヒント
- ベストプラクティス - ビデオ規則
- ベストプラクティス - SWF アプリケーションのオーサリングガイドライン
- ベストプラクティス - FLA ファイルの構造化
- FLA ファイルを Animate 向けに最適化するベストプラクティス
- ActionScript パブリッシュ設定
- Animate のパブリッシュ設定の指定
- プロジェクターファイルの書き出し
- 画像とアニメーション GIF の書き出し
- HTML パブリッシュ用テンプレート
- Adobe Premiere Pro と After Effects の使用
- アニメーションのクイック共有とパブリッシュ
- トラブルシューティング
この記事では、HTML5 Canvas のカスタムコンポーネントの作成方法について説明します。
Animate には一連のデフォルトコンポーネントが付属しています。しかし、それだけでは足りない場合があります。このトピックは、Animate のカスタム HTML5 コンポーネントを作成する方法を理解するのに役立ちます。
コンポーネント定義は次の 3 つの主要部分で構成されます。
- メタデータ:コンポーネントに関する情報(表示名、バージョン、設定可能な一連のプロパティ、アイコンなど)を提供します。これは components.js というファイルに記述されます。複数のコンポーネントをカテゴリーとしてグループ化することができ、その場合は、このファイルによって、カテゴリーに属するすべてのコンポーネントのメタデータを提供できます。
- ソース:実際のコンポーネントソースに関する情報を提供します。これは、コンポーネントを使用するムービーをプレビューまたはパブリッシュする際に、実行時に埋め込まれます。
- アセット:実行時の依存関係に関する情報(JavaScript ライブラリ、CSS、ランタイムアセット、アイコンなど)を提供します。これらのアセットは、Animate オーサリング環境で使用できます。
コンポーネントの定義には、ローカライズ関連のリソースも含まれます。
Animate では、起動時に次のフォルダーを調べてカスタム HTML5 コンポーネントを探し、それらを読み込みます。
• Windows の場合:
<AppData>/Local/Adobe/Adobe Animate 2017/en_US/Configuration/HTML5Components
• MAC の場合:
~/Library/Application Support/Adobe/Animate 2017/en_US/Configuration/HTML5Components/
上記のフォルダーパスは、米国英語に適用されます。Animate を他の言語で使用している場合、en_US を置き換える言語固有のフォルダー名を探してください。
components.js ファイルの格納場所にあるフォルダーごとに、Animate によって、カテゴリーが作成され、その中にすべてのコンポーネントが読み込まれます。
コンポーネントメタデータ
コンポーネントのメタデータは components.js というファイルに記述されます。このファイルは、HTML5Components ディレクトリ内の別個のフォルダーに格納されています。
components.js
components.js
は、次のセクションで構成される JSON ファイルです。
- category:コンポーネントパネルでのこのコンポーネントセットの名前で、ローカライズ可能です。
- components:コンポーネントに関するメタデータを記述するエントリを要素とする配列。上記のサンプルでは、この配列の要素が 1 つだけです。メタデータは次のセクションで構成されます。
|
必須かどうか |
説明 |
---|---|---|
className |
はい |
ソースファイルで 指定されるコンポーネントのクラス名。クラス名では 1 レベルの名前空間をサポートしています。例えば、Video などです。
|
version |
いいえ |
コンポーネントの バージョン番号。これは、コンポーネントの今後のアップグレードに使用されます。ただし、この時点ではアップグレードフローは 定義 されていません。 |
source |
はい |
コンポーネントのメインソースファイルの相対パス。詳しくは、次の節に記載されている ソースの内容を 参照してください。 |
icon |
いいえ |
コンポーネントのアイコンの相対パス。このアイコンは、コンポーネントに対して名前を付けてインスタンスが作成された場合に、 コンポーネントパネルと ステージ上で使用されます。指定されない場合、デフォルトのアイコンが使用されます。 読み込むアイコン(通常 32x32 のサイズ)の PNG ファイル名を指定できます。または、明るい UI と暗い UI 用に異なるアイコンをサポートする場合は、次の命名規則に従う 2 つの .png ファイルを用意し、 custom_icon_N.png – 暗い UI 用のアイコン custom_icon_D.png – 明るい UI 用のアイコン 名前の「custom_icon」の部分をこのフィールドの値として指定します。接尾辞は、現在のユーザー設定に基づいて自動的に付けられます。 |
dimensions |
いいえ |
コンポーネント インスタンスのデフォルトのサイズ。ユーザーがコンポーネントパネルからステージにコンポーネントをドラッグ&ドロップするたびに、新しいインスタンスが作成されます。このフィールドは、そのコンポーネントインスタンスのデフォルトの初期サイズを指定します。値は配列 [幅, 高さ] です。値が指定されない場合は、自動的にデフォルトサイズが設定されます。また、値は [2,2] から [1000, 1000] までの範囲に制限されます。 |
dependencies |
いいえ |
コンポーネントの依存先モジュールの集合。これは、ローカルソースの相対パス(キーが「src」)と CDN パス(キーが「cdn」)を指定するエントリを要素とする配列です。CDN パスは省略可能です。このパスが使用されるのは、パブリッシュ設定でホストのライブラリを使用する場合です。 そうでない場合は、 プレビュー時やパブリッシュ時にローカルソースが使用されます。 上記の例(video)で使用されている相対パスに注意してください。1 レベル上の依存先モジュールを読み込むので、複数のコンポーネントセット間で一部の依存先モジュールを共有できます。 |
properties |
はい |
プロパティの配列。このコンポーネントの インスタンスを ステージに作成すると、ここで設定したプロパティのセットがプロパティインスペクターに自動的に表示されます。このコンポーネントのユーザーはこれらのコンポーネントを Animate で設定でき、設定したプロパティは、実行時にコンポーネントがインスタンス化されるときに使用可能になります。 各プロパティエントリは次のキーで構成されます。
|
コンポーネントのソース
各コンポーネントには、以下を処理するコードを提供するソースファイルが関連付けられている必要があります。
- 設定したプロパティ値セットを割り当てたコンポーネントインスタンスの実行時での作成
- DOM へのアタッチと DOM からのデタッチ
- フレームごとのプロパティの更新
カスタムコンポーネントを開発しやすいように、基底クラスとユーティリティ関数が anwidget.js ファイルに用意されています。このインターフェイスは今後、機能強化される予定ですが、下位互換性は保たれます。現時点では、DOM ベースのコンポーネントのみサポートされていますが、Canvas ベースのコンポーネントもサポートされる予定です。現時点では、ウィジェットのみサポートされていますが、フレームワークが機能強化され、動作の割り当て(非 UI コンポーネント)もサポートされる予定です。
anwidget.js ファイルは First Run フォルダー内の HTML5Components/sdk フォルダーにあります。この中には、カスタムコンポーネントの基底クラス AnWidget と、カスタムコンポーネントを登録するためのユーティリティメソッド $.anwidget(<className>, {Object Prototype}) が用意されています。現在の実装では jQuery を使用しているので、ウィジェットから提供されるサービスを使用するたびに、jQuery が依存先モジュールとして常に追加されます。ただし、jQuery に暗黙に依存しないようにする場合は、ウィジェットと同じインターフェイスを提供するコンポーネントクラスを jQuery を使用せずに実装する必要があります。
HTML には、デフォルトで以下のセクション($PRELOADER_DIV を除く)が含まれます。
上の図が DOM へのエレメントの追加順序を示していることに注意してください。したがって、dom_overlay_container div は canvas の上に示されています。
最初のリリースでは、コードスニペットのように、dom_overlay_container div のID に依存している機能がいくつかあるので、この ID を変更しないでください。
上図からわかるように、dom_overlay_container div は canvas の上にオーバーレイとして示されています。ベースとなる canvas にもマウスイベントが必ず適切に伝達されるように、この div に CSS プロパティ {pointer-events: none} を使用しています。プロジェクトにおいて Animate で設定するすべてのコンポーネントインスタンスは、この dom_overlay_container div の子としてインスタンス化されアタッチされます。コンポーネントインスタンスの相対的順序は実行時に維持されますが、現時点では、コンポーネントインスタンスはすべて、常にオーバーレイとして表示されます。マウスイベントも受信するように、実行時のすべてのコンポーネントインスタンスに {pointer-events: all} を設定しています。
コンポーネントのライフサイクル
-
コンポーネントインスタンスが作成されるのは、コンテナの DOM が作成されるときです。
-
インスタンスはその後、コンポーネントインスタンスが使用されるフレームに再生ヘッドが達したときに DOM にアタッチされます。その次に、実行時に Tick イベントが発生するたびに呼び出される更新ハンドラーがアタッチされます。このとき、イベントデータ {id: id_of_the_instance} を持つ「attached」イベントが親エレメントで発生します。
-
更新コールバックが呼び出されるたびに、プロパティが更新されます。プロパティ更新はすべてキャッシュされ、Tick イベントハンドラーの呼び出し時に 1 回適用されます。現時点では、カスタムプロパティに対するトゥイーンはサポートされていません。変形や可視性などの基本プロパティのみ更新されます。
-
コンポーネントインスタンスが削除されるフレームに再生ヘッドが達したときに、インスタンスが DOM からデタッチされます。このとき、「detached」イベントが親エレメントで発生します。
基本クラスは $.AnWidget と呼ばれ、以下のオーバーライドを提供します。
名前 |
必須かどうか |
説明 |
---|---|---|
getCreateOptions() |
いいえ |
コンポーネントがインスタンス化されるときに適用されるオプションを返します。典型的なオーバーライドでは、通常、これを使用して、すべてのインスタンスに一意な ID を割り当てます(グローバル変数 _widgetID を利用)。次の節で示す例では、この使用法をわかりやすく説明します。 |
getCreateString() |
はい |
DOM インスタンス作成の文字列を返します。この文字列が jQuery に渡されて、実際の DOM エレメントが作成されます。それは後で、ベースとなる DOM にアタッチされます。
例えば、画像コンポーネントの場合、これは「<image>」を返します。
実行時にそのエレメントが作成され、jQuery ラッパーへの参照がコンポーネントインスタンスに次のように格納されます。
this._element = $(this.getCreateElement())
// this._element – 作成されたベース DOM エレメントの jQuery ラッパー
コンポジットエレメントも作成できます。詳しくは、例の節を参照してください。 |
getProperties() |
いいえ |
設定可能な CSS プロパティ名の配列を返します。通常、これは components.json で設定したすべてのプロパティと一致します。
例えば、ビデオコンポーネントの場合、この配列には次のようなエントリが含まれています。
["left", "top", "width", "height", "position", "transform-origin", "transform"] |
getAttributes() |
いいえ |
設定可能な属性の配列を返します。通常、これは、components.json で設定可能なすべての属性と一致します。
例えば、ビデオコンポーネントの場合、この配列には次のようなエントリが含まれています。
["id", "src", "controls", "autoplay", "loop", "class"] |
attach(parent) |
いいえ |
この関数は、「親」となる DOM エレメントにコンポーネントインスタンスがアタッチされようとするたびに呼び出されます。
デフォルトの実装では、主に以下の処理を実行します。
// 親となる DOM にエレメントを追加 $(parent).append(this._element);
//参照をthis._$this this._$this = $(this._element);
//強制的に update を呼び出してすべてのプロパティを適用 this.update(true); this._attached = true;
//親で attached イベントをトリガー $(parent).trigger("attached", this.getEventData("attached"))
この関数をオーバーライドする必要はありません。ただし、コンポジットエレメントの場合は、オーバーライドしなければならない可能性があります。詳しくは、例の節を参照してください。
メモ:this._superApply(arguments) を使用すると、任意のオーバーライドから基底クラスの任意のメソッドを呼び出すことができます。 |
detach() |
いいえ |
この関数は、DOM からコンポーネントインスタンスが削除されようとするたびに呼び出されます。デフォルトの実装では、以下の処理を実行します。
//エレメントを DOM から削除 this._$this.remove(); //親で detached イベントをトリガー $(parent).trigger("detached", this.getEventData("detached")); |
setProperty(k,v) |
いいえ |
この関数は、インスタンスに任意のプロパティを設定するのに使用します。これらの変更はキャッシュされ、プロパティが変更されるたびにすべてのフレームに対して update() が呼び出されるときに一度に適用されます。 |
update(force) |
いいえ |
この関数は、コンポーネントが DOM の一部でかつ表示されるときに、すべてのフレームで呼び出されます。デフォルトの実装では、変更されたすべての CSS プロパティおよび属性を適用します。または、force パラメーターが true の場合に適用します。 |
show() |
いいえ |
エレメントインスタンスを表示します。通常は、これをオーバーライドする必要はありませんが、コンポジットエレメントの場合は、オーバーライドしなければならない可能性があります。 |
hide() |
いいえ |
エレメントインスタンスを非表示にします。通常は、これをオーバーライドする必要はありませんが、コンポジットエレメントの場合は、オーバーライドしなければならない可能性があります。 |
getEventData(e) |
いいえ |
「e」という名前のイベントのカスタムデータを返します。デフォルトの実装では、attached イベントと detached イベントの「{id: instance_id}」データを渡します。 |
destroy() |
いいえ |
コンポーネントインスタンスが DOM からデタッチされると、メモリを解放します。通常は、これをオーバーライドする必要はありません。 |
applyProperties(e) |
いいえ |
CSS プロパティを jQuery ラッパー e に適用するためのヘルパー API |
applyAttributes(e) |
いいえ |
属性を jQuery ラッパー e に適用するためのヘルパー API |
ローカライゼーション
カテゴリー文字列、コンポーネント表示名およびプロパティ名はローカライズできます。components フォルダー下にある locale という名前のフォルダー内に strings.json という名前のファイルを作成します。ローカライズするすべての文字列にキーと値のペアを提供し、components.js 内のキーを使用します。他のロケールについては、locale フォルダー下の対応するフォルダー内のファイルに文字列を記述する必要があります。
HTML5 のカスタムコンポーネントのパッケージ化と配布
Animate 開発者またはデザイナーは、パッケージ化されたすぐに利用できるコンポーネントを提供することにより、アニメーターがコードを書かなくてもカスタムコンポーネントをインストールして使用できるようにすることができます。以前は、アニメーターが HTML5 エクステンションを有効にするには、ファイル構造を理解し、プログラミングを行い、特定のフォルダーにファイルを手動で移動する必要がありました。
前提条件
- 開発者が作成したコンポーネント。コンポーネントの作成手順については、ここをクリックしてください。
- CC エクステンション署名ツールキット。
コンポーネントをパッケージ化する前に、コンポーネントのソースパスと出力先パスのメタデータを含む MXI ファイルを作成します。例えば、次のように指定します。
<file source="jquery-ui-1.12.0" destination="$FLASH\HTML5Components\jQueryUI\" file-type="ordinary" />
このソースと出力先ファイル情報は、エクステンションユーティリティがコンポーネントを正しくインストールするために必要となります。
コンポーネントのパッケージ化
HTML5 カスタムコンポーネントをパッケージ化するには、次の手順を実行します。
-
MXI ファイルを作成するには、テキストエディターを使用してサンプルの abc.mxi ファイルと同様の内容を入力し、MXI 拡張子を付けてファイルを保存します。
ダウンロード
-
MXI コンポーネントファイルとその他の関連ファイルをフォルダーに追加します。
-
CC エクステンション署名ツール(ZXPSignCmd.exe)を使用して ZXP エクステンションの zip ファイルを作成します。ZXP 署名コマンドツールで次のコマンドを使用して ZXP ファイルを作成します。
1. -selfSignedCert オプションを使用して自己署名証明書を作成します。
既に証明書がある場合は、この手順をスキップできます。
ZXPSignCmd -selfSignedCert US NY MyCompany MyCommonName password FileName.p12
FileName.p12 ファイルがカレントフォルダーに生成されます。
2. 次のコマンドを使用してエクステンションに署名します。
ZXPSignCmd -sign projectName projectName.zxp FileName.p12 password
projectName はエクステンションプロジェクトの名前です。カレントフォルダーに projectName.zxp という名前のファイルが生成されます。
コンポーネントの配布
パッケージ化されたこの projectName.zxp コンポーネントファイルは任意の Animate ユーザーに配布できます。
アドビでは、Adobe Add-ons Web サイトを介して製品を配布することを推奨しています。アドオンは一般に(無料または有料で)配布することも、個人的に(特定のユーザーに無償で)配布することもできます。
配布されたコンポーネントのインストール
Animate デザイナーまたは開発者は、エクステンションの管理ユーティリティを使用して、配布された ZXP ファイルのコンポーネントをインストールできます。