終了

テキストボックスのエクスプレッションについて

Community Beginner ,
Oct 12, 2020 Oct 12, 2020

リンクをクリップボードにコピー

コピー完了

お世話になります。

 

テキストを打ち込み、その下にテキストボックスとなる長方形レイヤーを置いています。

その長方形レイヤーは、テキストの文字数に合わせてテキストボックスのサイズも追随するようにしています。

 

具体的に言うと、

長方形パスの

サイズに

s=thisComp.layer(“Text Layer”);
w=s.sourceRectAtTime().width;
h=s.sourceRectAtTime().height;

[w,h]

 

位置に

s=thisComp.layer(“Text Layer”);
w=s.sourceRectAtTime().width/2;
h=s.sourceRectAtTime().height/2;
l=s.sourceRectAtTime().left;
t=s.sourceRectAtTime().top;

[w+l,h+t]

 

というエクスプレッションを入れ込んでいます。

 

これで、テキストに合わせて長方形レイヤーの横の長さも変わるようになっているのですが、

 

同じテキストのポイント(大きさ)で、文字数(長さ)を変えると

長方形レイヤーの高さまで変化してしまいます。

 

この長方形の高さは変える必要がなく一定にしたいのですが、解決法が分かりますでしょうか。

 

エクスプレッションが間違っているのか、

もしかしたら文字数が多いと、テキストレイヤーの赤いバウンディングボックスが、そもそも大きくなっている(?)ので、

それに合わせて長方形も大きくなっているのかと思いました。

その場合、これのサイズを変えればいいのか..?とか思ったのですが..

 

説明ベタで申し訳ございません、わかりましたらよろしくお願いいたします。

 

キーワード
エクスプレッション

表示

3.8K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Oct 13, 2020 Oct 13, 2020

高さのサイズは固定されているので問題ありませんが、テキストとシェイプのアンカーポイントがずれいているために、位置が上下しているようです。

 

テキストのアンカーポイントを中心に配置するエクスプレッションは、下記サイトのエクスプレッションをそのまま追加します。

3RD EYE STUDiOS

 

シェイプレイヤーのトランスフォームのアンカーポイントに下記のエクスプレッションを追加。

s=thisComp.layer(1);      // テキストレイヤー名
textTop = s.sourceRectAtTime().top;
textHeight = s.sourceRectAtTime().height;
textLeft =s.sourceRectAtTime().left;
textWidth =s.sourceRectAtTime().width;
[textLeft + textWidth/2, 0]

 

シェイプレイヤーのトランスフォームの位置をテキストレイヤーの位置とリンクさせる。

 

シェイプレイヤーのトランスフォーム:長方形の位置にあるエクスプレッションは削除。

投票

翻訳

翻訳
Community Expert ,
Oct 12, 2020 Oct 12, 2020

リンクをクリップボードにコピー

コピー完了

フォントを変更しても同じでしょうか?

 

漢字「引」の高さがひらがなより高い様な気がするので、漢字のサイズだけ小さくして変化を確認して下さい。

 

また、全体的に文字に比べてシェイプが大きくなっているので、文字に線幅が設定されていないでしょうか。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Oct 13, 2020 Oct 13, 2020

リンクをクリップボードにコピー

コピー完了

ご確認頂きまして誠にありがとうございます。

 

確かに、漢字「引」の高さがひらがなより高いようでした。

どうやら文字によって高さが変わるので、それに合わせてしまい、

漢字などがない(ひらがな だけの)場合はシェイプの高さも低くなる。ようです。

 

フォントを変えて見たのですが、特に変わらず、どのフォントも高さが文字によって違っているので、

シェイプも変動してしまうようです。

 

文字に線幅は設定していないと思います。

 

シェイプには、パスのオフセットを追加して、少し大きくしてあります。

 

フォントの性質上、シェイプの高さを一定にするのは難しいのでしょうか...?

漢字や高さのあるテキストだけ縮めるのも変ですし、

テロップ毎にオフセットでシェイプの大きさを変えるのも少々面倒なので

なにか解決策があるといいのですが...

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 13, 2020 Oct 13, 2020

リンクをクリップボードにコピー

コピー完了

シェイプの高さは、エクスプレッションの [w,h] のhを数値に変えれば固定できます。
高さの最大サイズを入力すれば良いと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Oct 13, 2020 Oct 13, 2020

リンクをクリップボードにコピー

コピー完了

ご返事頂き、誠にありがとうございます。

当方、エクスプレッションに弱く申し訳ございません。

 

位置はそのまま、サイズを

s=thisComp.layer("02")
w=s.sourceRectAtTime().width;
h=s.sourceRectAtTime().height;

[w,100]

 

としてみましたが、まだ文字によって高さが変わってしまい、固定されません。

ですが、以前よりは変化が小さくなったように思います。

因みに、テキストのサイズを変えてみると、添付のように変わります。

テキスト31pt.jpgテキスト148pt.jpgテキスト214pt.jpg

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 13, 2020 Oct 13, 2020

リンクをクリップボードにコピー

コピー完了

高さのサイズは固定されているので問題ありませんが、テキストとシェイプのアンカーポイントがずれいているために、位置が上下しているようです。

 

テキストのアンカーポイントを中心に配置するエクスプレッションは、下記サイトのエクスプレッションをそのまま追加します。

3RD EYE STUDiOS

 

シェイプレイヤーのトランスフォームのアンカーポイントに下記のエクスプレッションを追加。

s=thisComp.layer(1);      // テキストレイヤー名
textTop = s.sourceRectAtTime().top;
textHeight = s.sourceRectAtTime().height;
textLeft =s.sourceRectAtTime().left;
textWidth =s.sourceRectAtTime().width;
[textLeft + textWidth/2, 0]

 

シェイプレイヤーのトランスフォームの位置をテキストレイヤーの位置とリンクさせる。

 

シェイプレイヤーのトランスフォーム:長方形の位置にあるエクスプレッションは削除。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Oct 14, 2020 Oct 14, 2020

リンクをクリップボードにコピー

コピー完了

ご返信、誠にありがとうございます。お付き合い頂き助かります。

 

こちらで、うまくいったように思います!テキストに関わらず、

高さが一定になったかと存じます。

 

教えていただいたアンカーポイントを中心に配置するエクスプレッションがうまくいかず、

こちらのサイト  

を参考にしてみまして、以下画像のような内容になりました。

スクリーンショット.jpg

 

いかがでしょうか、ご確認いただけますと幸甚にございます。

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Oct 14, 2020 Oct 14, 2020

リンクをクリップボードにコピー

コピー完了

解決してなによりです。

すいません、エクスプレッションについては、確認が怠っていました。


参考にしたサイトのエクスプレッションは、CC2018以前のバージョンで使用されていた Extend Script言語で作成されたもので、CC2019から JavaScript言語に移行したのでエラーが出てしまいました。(旧:this , 新:thisLayer)

 

CC2020でも設定を変更すればエラーは出ないのですが、Java Scriptがこれからの標準になります。

 

参考ですが、過去のバージョンで作成したプロジェクトを開くとエクスプレッションエラーが出る場合があります。
言語の違いによるエラーの場合は、スクリプト「Update Legacy Expression.jsx」を実行すると自動でJava Scriptに変換できます。

ae101.jpg

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Oct 17, 2020 Oct 17, 2020

リンクをクリップボードにコピー

コピー完了

最新

なるほど、奥が深いです..

過去のバージョンの件教えていただきまして、誠にありがとうございました!

 

とても勉強になりました。

またの機会ありましたら、改めてよろしくお願い申し上げます!

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines