リンクをクリップボードにコピー
コピー完了
件名の通りなのですが、リピーターでコピー数を増やした時に自動で間隔が調整されるような仕組みをエクスプレッションで作ることは可能でしょうか。
コピー数の数値を増減させるだけで、トランスフォーム:リピーターの「位置」が画像のように自動で調整されるようにしたいです。(コピー元の初期位置は画面端にくっつかないものとします。)
リンクをクリップボードにコピー
コピー完了
let n = content("長方形 1").content("リピーター 1").copies; //リピーターのコピー数。階層が異なる場合は再設定
if (n > 2){
value / (n - 1);
}else{
value
}
コピー数にキーフレームを設定する場合は、下記コードを追加して値を整数に変換して下さい。
Math.round(value)
リンクをクリップボードにコピー
コピー完了
<追記>
コピー数で小数点の値も反映したい場合は、下記コードを使用して下さい。
let n = content("長方形 1").content("リピーター 1").copies;
let nCeil = Math.ceil(n);
if (n > 2){
value / (nCeil - 1);
}else{
value
}
リンクをクリップボードにコピー
コピー完了
ご回答ありがとうございます。
頂きましたエクスプレッションを試してみたところ、画像1枚目のようなエラーが出てしまったのですが階層の作り方が間違っているのでしょうか?
また、手動で「コピー数」に繋げた場合も画像2,3枚目のように意図しない挙動になってしまったため可能でしたら改善法をご教示願いたいです。
リンクをクリップボードにコピー
コピー完了
先のコードは、長方形を選択した状態でリピーターを追加して、長方形の下の階層にリピーターがある場合です。
コードを変更された内容で大丈夫です。
2・3枚目のスクリーンショットは、両端に配置するシェイプの間隔を設定して下さい。
「位置」の数値が両端にあるシェイプのアンカーポイント間の値になるので、大きな数値を入力して下さい。
<追記>
「位置」の赤色文字の下にある = アイコンをクリックしてエクスプレッションを無効にすると現在の設定値が表示されます。
リンクをクリップボードにコピー
コピー完了
ご回答ありがとうございます。
仕様の解釈を誤っておりました。初めにコピー数2の状態で両端のシェイプの位置を確定させてから均等に増やしていく...というイメージですね。理解いたしました。
追加の質問となり大変恐縮なのですが、これに横長の長方形パスを追加して、このパスの横幅を調整すると連動してシェイプのコピー数が調整される、という仕組みに発展させることは可能なのでしょうか。
以下条件になります。
1.シェイプ間の間隔は基本変わらず、コピー数も小数点以下切り捨てで問題ないです。
2.この仕様にした上で先日ご回答いただいた調整法も使用出来るようにしたいです。
自分でも何度か試してみたのですが、数が小さくなった時に右端のシェイプの位置がずれてしまいどうしても再現出来なかったためご回答いただければ幸いです。
リンクをクリップボードにコピー
コピー完了
>パスの横幅を調整すると連動してシェイプのコピー数が調整される
>1.シェイプ間の間隔は基本変わらず
スクリーンショットのように、常に上のシェイプのサイズと下のシェイプのサイズを同じにするのであれば、成り立たないので数値にできないと思います。
シェイプ間隔を変えずコピー数に合わせて横長の長方形のサイズを調整することならできます。
または、コピーが増える過程で上のシェイプが下のシェイプより長くなっても良いのでしょうか。
リンクをクリップボードにコピー
コピー完了
別のパスの横幅と連動してコピー数が変わるような仕組みは難しいのですね。
コピー数に応じて長方形のサイズが変わるのは意図した動きからは少し外れてしまうため、その辺りは手動で調整しようと思います。ご回答いただきありがとうございました。
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
let ref = content("長方形 2").content("長方形パス 1").size[0];
let s = content("長方形 1").content("長方形パス 1").size[0];
let p = content("長方形 1").content("リピーター 1").transform.position[0];
n = ref / p;
[ Math.floor(n)]
let ref = content("長方形 2").content("長方形パス 1").size[0] - content("長方形 1").content("長方形パス 1").size[0];
let n = content("長方形 1").content("リピーター 1").copies;
let x;
if (n > 1){
x = ref / (n - 1);
}else{
x = value[0]
}
[x,value[1]]
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
リンクをクリップボードにコピー
コピー完了
立て込んでおりまして返信が遅くなり失礼いたしました。
もう一度、今度は長方形のトランスフォームでアンカーポイントと位置を調整してやり直してみたのですが、やはり先日お送りした動画と同じ挙動(横長の長方形が左右両方向に広がり、リピーターのコピー数は変動しない)になってしまいました。
現時点だと、リピーターの対象になっている長方形の横幅をいじった場合に限りコピー数が変動します。
リンクをクリップボードにコピー
コピー完了
すいません。
このエクスプレッションに関しては、先の返信で述べたように間違いがあるため、動作が不安定です。
作り直す気力が今はないので、私からの回答は控えさせて頂きたいと思います。
参考ですが、
左にアンカーポイントを配置するエクスプレッションを追加しておきますので応用して下さい。
長方形:横
let x = -content("長方形 2").content("長方形パス 1").size[0]/2;
[x,value[1]]
長方形:縦
x = -content("長方形 1").content("長方形パス 1").size[0]/2;
[x,value[1]]
また、コピー数の最後の行を下記に書き換えた方が良い場合があります。
[ Math.ceil(n)]
リンクをクリップボードにコピー
コピー完了
<追記>
思いつきで、
コピー数をある程度設定するように変更してみました。
コピー数のエクスプレッションを書き換えて下さい。
let ref = content("長方形 2").content("長方形パス 1").size[0];
n = linear(ref,0,1600,1,6); //サイズとコピー数
[ Math.floor(n)]
リンクをクリップボードにコピー
コピー完了