Skip to main content
Lively_image15A8
Inspiring
April 23, 2018
Answered

Animate CC createjs Rotationの回転方向を指定したいです。

  • April 23, 2018
  • 1 reply
  • 1261 views

Animate CCとjavascriptの初心者です。宜しくお願いいたします。

検証してみたのですが、createjsのrotationは、0度から270度に回転する場合、時計回りに270度回転するわけではなく、負の整数でもないのに反時計回りに90度回転します。

rotationは距離の近い方向に回ってしまうのが仕様みたいですが、回転方向を指定したいため以下の方法を検討しています。

①OSとそのバージョン   Windows7 Pro SP1 64bit

②製品とそのバージョン Animate CC 2018 (18.0.1(ビルド115))

③トラブルの内容

createjsのホームページには、tweenjsのプラグイン「RotationPlugin.js」は以下がサンプルなのですが、

TweenJS v1.0.0 API Documentation : RotationPlugin

TweenJS v1.0.0 API Documentation : tweenjs/plugins/RotationPlugin.js

こちらをAnimate CCで読み込ませて使いたいため、以下の手順で作業したのですがうまくいきません。

1. グローバルインクルードで、RotationPlugin.jsを読み込ませる。

2. グローバルスクリプトで、createjs.RotationPlugin.install();を実行。

3. インクルードの並びを、RotationPlugin.js、グローバルスクリプトの順に変更。

4. フレームスクリプトに以下を記入

createjs.Tween.get(arrow_mc)

.to({rotation: 270, rotationDir: 1}, 1000).wait(500)

.to({rotation: 0, rotationDir: -1}, 1000).wait(500)

④エラーメッセージ

Uncaught TypeError: createjs.Tween._installPlugin is not a function

関数が無いと出ます。

ちなみに書き出されたhtmlに読み込んでいるcreatejsのバージョンも上げてみましたがダメなようです。

<script src="https://code.createjs.com/createjs-2015.11.26.min.js"></script>

↓↓↓↓↓↓↓↓↓

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

どうにか回転方向を指定したいです。

何卒、よろしくお願いいたします。

This topic has been closed for replies.
Correct answer Fumio Nonaka

初心者とのことですが、ご質問は的確に情報が整理されています。でも、なぜできないのかわかりません(苦笑)。

Animate CCでモーショントゥイーンをつくるとき、回転角270度を勝手に-90度にしてしまうことはあります。けれども、TweenJS(CreateJS)では、270度の回転はプラグインなしにできると思います。フレームアクションはつぎのとおりです(インスタンス名arrow_mc)。

const arrow_mc = this.arrow_mc;

createjs.Tween.get(arrow_mc, {loop: true})

.to({rotation: 270}, 1000)

.wait(500)

.to({rotation: 0}, 1000)

.wait(500);

なお、プラグインをグローバルスクリプトで加えるのは適切ではありません。グローバルの定めは、CreateJSの初期化より前に実行されるからです(「グローバルスクリプトに変数でインスタンスを代入することはできますか?」参照)。

もうひとつ、前掲コードについて注意していただきたいのは、TweenJS 1.0からTween.loopプロパティのデータ型が、ブール値からループ回数を示す整数に変わったことです。

1 reply

Fumio Nonaka
Community Expert
Fumio NonakaCommunity ExpertCorrect answer
Community Expert
April 24, 2018

初心者とのことですが、ご質問は的確に情報が整理されています。でも、なぜできないのかわかりません(苦笑)。

Animate CCでモーショントゥイーンをつくるとき、回転角270度を勝手に-90度にしてしまうことはあります。けれども、TweenJS(CreateJS)では、270度の回転はプラグインなしにできると思います。フレームアクションはつぎのとおりです(インスタンス名arrow_mc)。

const arrow_mc = this.arrow_mc;

createjs.Tween.get(arrow_mc, {loop: true})

.to({rotation: 270}, 1000)

.wait(500)

.to({rotation: 0}, 1000)

.wait(500);

なお、プラグインをグローバルスクリプトで加えるのは適切ではありません。グローバルの定めは、CreateJSの初期化より前に実行されるからです(「グローバルスクリプトに変数でインスタンスを代入することはできますか?」参照)。

もうひとつ、前掲コードについて注意していただきたいのは、TweenJS 1.0からTween.loopプロパティのデータ型が、ブール値からループ回数を示す整数に変わったことです。

Lively_image15A8
Inspiring
April 25, 2018

Fumio Nonaka様

たびたびのご回答をいただきまして、大変助かります。

前回自分から質問させていただきました(グローバルスクリプトに変数でインスタンスを代入することはできますか? )についての理解もあまりうまくできていません。失礼しました。

普段はExcel vbaやFilemakerスクリプトあたりをちょろちょろとやっているだけなので、

javascriptの基礎が無い、

英語が読めないのでgoogle翻訳で余計に理解できない、

オブジェクトをスクリプトで扱うのに慣れていないので、基本的な算数も忘れていて進まない、

Animate CCの日本語サンプルの存在が薄いこと、

一つの言語が少しできると周りからは他言語でもスクリプトかけると思われる、

などに少々疲れてきました。。

サンプル作成いただきありがとうございます。

(現時点ではペンギンがソースコードのどこにあるかも読み取れませんので。。)

後でじっくり読ませていただきます。

頂きましたソースコードから動きがおかしい理由がなんとなくわかりました。

const arrow_mc = this.arrow_mc;

createjs.Tween.get(arrow_mc, {loop: true}) 

.to({rotation: 0}, 1000).wait(500)

.to({rotation: 270}, 1000).wait(500) //時計回り

.to({rotation: 0}, 1000).wait(500) //反時計回り

.to({rotation: 270}, 1000).wait(500) //時計回り

.to({rotation: 360}, 1000).wait(1500); //時計回り

この処理を行う前のキーフレーム処理が360度になっていたのだと思います。後で調べてみます。

それを0度と理解していたのが原因みたいです。。。

ケアレスミスでした。失礼しました。