Skip to main content
Participating Frequently
January 30, 2023
質問

エクスプレッション関数について

  • January 30, 2023
  • 返信数 2.
  • 369 ビュー

画像のように現在スライダー制御の数字をテキストレイヤーに表示させようとしています。

表示させるだけなら問題ないのですが、それぞれの桁を独立して表示させる場合、どのようなエクスプレッションをそれぞれのレイヤーに表記すればいいのか悩んでいます。

よくありそうな形として

(例)1の位の場合

var n=スライダー制御の数値

var m

 

m=n%10

m.toFixed(0)

 

のような関数をそれぞれのテキストレイヤーに入れている状況です

ここでの問題点としては

1.1の位以外の位が0のときは10の位に何も表示させたくない

2.1の位がまれに「10」と2桁で表記されてしまう

3.スライダー制御側最大数値は60だが2つの桁を合わせた場合69などそれ以上の数字として画面上に出てしまう(おそらく少数表記から整数表記に直す際の関数で値が上昇してる)

の3点です

 

Youtube上に近い状況を説明していた動画があったはずなのですがどうしても見つかりませんでした。

長文説明申し訳ありません。よろしくお願いします。

    このトピックへの返信は締め切られました。

    返信数 2

    Community Expert
    January 31, 2023

    下記のエクスプレッションはどうでしょう。

     

    var n = effect("スライダー制御")("スライダー") ;
    var m = String(n);
     if(n <10){
    	 m.slice(0 ,1);
     }else{
    m.slice(0 ,1) + m.slice(1,2) ;
     }

     

    <追記>

    エクスプレッションを修正しました。

     

    Community Expert
    February 1, 2023
    先のエクスプレッションは、1個のレイヤーで分離させる方法ですが、レイヤーを分ける場合は下記になります。
    1の位:
    let n = effect("スライダー制御")("スライダー") ;
    let m = String(n);
     if(n <10){
    m.slice(0 ,1);
     }else{
     m.slice(1,2) ;
     }
     
    10の位:
    let n = thisComp.layer("1の位").effect("スライダー制御")("スライダー") ;
    let m = String(n);
     if(n  >= 10){
    m.slice( 0,1);
     } 
    Hayabusa0324作成者
    Participating Frequently
    January 30, 2023

    追記です。

    この後色々試して事故解決しました。

    ただこのスライダー制御にはMath.sinを用いて数値を入力し、テキストレイヤーにはMath.floorを使った関係上どうしてもうまく最大値を画面上にだすことが出来ません。

    数値のみならスライダー制御の数値を少し上げればいいのですが、ほかのレイヤーにもつながっている関係上それをしてしまうと他の動きが少しぶれてしまいます。

    現在は他のレイヤーの方に少し手直しをして同じ動きをさせていますがこれをテキストレイヤーのエクスプレッションのみで完結する方法はあるのでしょうか。

    よろしくお願いします。