AE Expression float型とint型での扱いに注意
ロゴ
「デジタルコンテンツ制作」に関連する記事一覧

AE Expression float型とint型での扱いに注意

2011/06/29
After Effects JavaScript Adobe 

Javascriptでは変数をvarで宣言し(省略可)、明示的に変数の型を宣言しませんが、内部的にはちゃんと変数にも型があります。この型の違いにより計算結果が予想と違うものになってしまう場合があります。

私もある程度いろいろな言語でのプログラミングには慣れているつもりなのですが、それでもこのような型の違いによる間違いに陥って気づかない場合があります。

例えば、After EffectsのExperssionではtimeを使って時間を取得できますが、これはfloat型(浮動小数点数型)になるので剰余などを求める際は型をparseInt()という型変換用の関数を使ってint型(整数型)にキャスト(型の変換)する必要がでてきますので注意が必要です。

この型の違いによる間違いの具体的な例を挙げます。以下の例ではtimeがfloat型なのに型をキャストしなかったために、自動的に変数frameもfloat型になってしまい、剰余の計算が正しく行われなくなってしまいます。

間違いの例
var widthFrame=4;
var frame=time*24;
if(frame%widthFrame==0){
    100;
}else{
    0;
}

上の例を正しくしたもの(frameをint型にキャスト)
var widthFrame=4;
var frame=parseInt(time*24);
if(frame%widthFrame==0){
    100;
}else{
    0;
}

    このエントリーをはてなブックマークに追加  

関連記事


0.0221 sec
にほんブログ村 ゲームブログ ファイアーエムブレムへ にほんブログ村 デザインブログ コンピュータグラフィックスへ

Copyright(C)2006-2018 wsp All Rights Reserved