[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
367(1): (ワッチョイ 0bdb-KKgq [217.178.96.73]) 2022/12/11(日)20:55 ID:q6Npm0tM0(1/2) AAS
>>366
JS最強の秘伝なり。
368(1): (JP 0Ha5-3TNT [126.249.157.89]) 2022/12/11(日)21:46 ID:bBwm/pW5H(2/2) AAS
>>367
語れないんですねw
369: (ワッチョイ 0bdb-KKgq [217.178.96.73]) 2022/12/11(日)22:29 ID:q6Npm0tM0(2/2) AAS
>>368
一子相伝の秘技だからな。
370: (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)01:25 ID:9mOu9R4R0(1/14) AAS
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}
これですが、MOVの配列の末尾に何かを加えようとしてるのはわかるのですが、何を加えようとしてるのでしょうか?
[ , ]の所の意味がわかりません
MOV.push(Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0])ではダメなのでしょうか?
371(1): (ワッチョイ 59da-AjLY [118.18.252.105]) 2022/12/12(月)01:50 ID:N0jzJwvL0(1) AAS
MOV = []
MOV.push([1, 2])
console.log(MOV) // [[1, 2]]
MOV = []
MOV.push(1, 2)
console.log(MOV) // [1, 2]
372(1): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)02:10 ID:9mOu9R4R0(2/14) AAS
>>371
ありがとうございます
うーん
難しいな
[絶対値にしたもの、絶対値にしてないもの]を[ ]でひとまとめにする理由は何なんだろう?
console.logを挟んで値を確認しながら考えないとわかりませんね
373(2): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)02:23 ID:9mOu9R4R0(3/14) AAS
もしかして配列が入れ子になってるんでしょうか?
その後にSx.translate(MOV[0][1], 0)っていうコードが出て来るのですが…
MOV[0][1]の所が意味がわからなかったんですけど、
[[◯,●],[◯,◯],…]の●を指定してるんでしょうか?
374(1): (ワッチョイ abbd-SbnF [49.129.243.33]) 2022/12/12(月)02:45 ID:BD7ZISK00(1/3) AAS
>>373
その認識で合ってる。
MOV は配列で、その各要素も配列(2要素の配列)。
なんでそんな構造にしてるのかは知らん。
375(1): (JP 0Ha5-3TNT [126.249.157.89]) 2022/12/12(月)07:38 ID:u3d467jnH(1/2) AAS
>>373が聞いてるのは
translateがJSのcontextの関数なら
translate(100,50)はコンテキスト自体が右に100、下に50移動する
右移動量を絶対値にして移動させるってことかにゃん
376: (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)11:24 ID:9mOu9R4R0(4/14) AAS
>>374
ありがとうございます
>>375
そうです
全コード載せてみます
geometricBoundsは四角形の2点の座標を得るメソッドで、変数に[左上のx座標、左上のy座標、右下のx座標、右下のy座標]の順に格納されます
377(1): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)11:25 ID:9mOu9R4R0(5/14) AAS
SEL = activeDocument.selection
PAT = activeDocument.pathItems
STB = app.preferences.getBooleanPreference("includeStrokeInBounds")
MAINfn()
function MAINfn(){
if(SEL.length == 0) return
GUI = []
for(p=0; p<PAT.length; p++) PATfn(PAT[p])
if(GUI.length == 0) return
for(s=0; s<SEL.length; s++) SELfn(SEL[s])
省7
378(1): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)11:26 ID:9mOu9R4R0(6/14) AAS
function SELfn(Sx){
Bs = BNDfn(Sx)
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}
MOV2 = SORTfn(MOV)
Sx.translate(MOV2[0][1], 0)
}
省18
379(2): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)11:28 ID:9mOu9R4R0(7/14) AAS
「一番近いガイドに図形を吸着させる」スクリプトです
app.preferences.getBooleanPreferenceは無視してもらっていいです
環境設定の予備的なものなので。
function BNDfn(Bx)以下も環境設定の予備的なものなので無視でいいです
[絶対値と絶対値でないもの]を入れ子にする意味が知りたいです
380(1): (オッペケ Sra5-Aro6 [126.208.225.250]) 2022/12/12(月)12:27 ID:TCDiz++Hr(1/3) AAS
>>379
配列MOVをソートするSORTfnで[◯,●]の◯を利用してるのは読み取れる?
381(1): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)13:06 ID:9mOu9R4R0(8/14) AAS
>>380
ソートで利用するために [ , ] の入れ子にしてるだけですか?
382(1): (オッペケ Sra5-Aro6 [126.208.225.250]) 2022/12/12(月)13:16 ID:TCDiz++Hr(2/3) AAS
>>381
まず聞かれたことに対してYESかNOで答えようよ
383: (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)13:25 ID:9mOu9R4R0(9/14) AAS
>>38
ありがとうございます
わかりました
[◯,●]の◯はソートをするために利用している
絶対値が一番小さい◯を先頭に並べ替えて(距離が一番近い)、それと対になってる●だけtranslateで移動している
ということですね
384: (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)13:25 ID:9mOu9R4R0(10/14) AAS
× >>38
◯ >>382
385: (ワッチョイ abbd-SbnF [49.129.243.33]) 2022/12/12(月)13:29 ID:BD7ZISK00(2/3) AAS
余談だが、>>378
sort の比較関数ってわざわざそういうまどろっこしい実装にしてるのをよく見るけど、数値なら
function(a,b){
return a[0] - b[0];
}
でいいのよ。
順序を見る要素が複数あるなら
function(a,b){
let c = a[0] - b[0];
if (c) return c;
省14
386(1): (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) 2022/12/12(月)13:34 ID:9mOu9R4R0(11/14) AAS
ガイドが、動かしたいオブジェクトの右にあるか左にあるか確定して無いんですよ
だからMath.absで絶対値にして距離を測ってるのか…
そして配列の入れ子にしてソート
勉強になるな
ここだけ他のスクリプトでも使える
上下前次1-新書関写板覧索設栞歴
あと 616 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.012s