D3.js - การลาก API

การลากและวางเป็นหนึ่งในแนวคิดที่คุ้นเคยมากที่สุดใน d3.js บทนี้อธิบายการลากและวิธีการโดยละเอียด

การติดตั้ง

เราสามารถรวมลาก API ได้โดยตรงโดยใช้สคริปต์ต่อไปนี้

<script src = "https://d3js.org/d3-dispatch.v1.min.js"></script>
<script src = "https://d3js.org/d3-selection.v1.min.js"></script>
<script src = "https://d3js.org/d3-drag.v1.min.js"></script>

วิธีการลาก API

ต่อไปนี้เป็นวิธีการลาก API ที่สำคัญที่สุดใน D3.js

  • d3.drag()
  • drag(selection)
  • drag.container([container])
  • drag.filter([filter])
  • drag.subject([subject])
  • drag.clickDistance([distance])
  • drag.on (ชื่อพิมพ์ [ฟัง])
  • d3.dragDisable(window)
  • d3.dragEnable (หน้าต่าง [, noclick])

ตอนนี้ให้เราเข้าใจรายละเอียดแต่ละข้อ

d3.drag ()

วิธีนี้ใช้เพื่อสร้างการลากใหม่ คุณสามารถเรียกวิธีนี้โดยใช้สคริปต์ต่อไปนี้

<script>
   var drag = d3.drag();
</script>

ลาก (การเลือก)

วิธีนี้ใช้เพื่อใช้การลากกับการเลือกที่ระบุ คุณสามารถเรียกใช้ฟังก์ชันนี้โดยใช้ไฟล์selection.call. ตัวอย่างง่ายๆถูกกำหนดไว้ด้านล่าง

d3.select(".node").call(d3.drag().on("drag", mousemove));

ที่นี่พฤติกรรมการลากที่ใช้กับองค์ประกอบที่เลือกคือผ่าน selection.call

drag.container([container])

ใช้เพื่อตั้งค่าคอนเทนเนอร์ให้เป็นฟังก์ชันที่ระบุสำหรับการลาก หากไม่ได้ระบุคอนเทนเนอร์จะส่งคืนตัวเข้าถึงปัจจุบัน หากต้องการลากองค์ประกอบกราฟิกด้วย Canvas คุณสามารถกำหนดคอนเทนเนอร์ใหม่เป็นของตัวเองได้ มีการกำหนดไว้ด้านล่าง

function container() {
   return this;
}

drag.filter ([ตัวกรอง])

ใช้เพื่อตั้งค่าตัวกรองสำหรับฟังก์ชันที่ระบุ หากไม่ได้ระบุตัวกรองจะส่งกลับตัวกรองปัจจุบันตามที่กำหนดไว้ด้านล่าง

function filter() {
   return !d3.event.button;
}

drag.subject ([หัวเรื่อง])

ใช้เพื่อตั้งค่าเรื่องเป็นฟังก์ชันที่ระบุสำหรับการลากและกำหนดไว้ด้านล่าง

function subject(d) {
   return d = =  null ? {x: d3.event.x, y: d3.event.y} : d;
}

ในที่นี้หัวเรื่องแสดงถึงสิ่งที่ถูกลาก ตัวอย่างเช่นหากคุณต้องการลากองค์ประกอบสี่เหลี่ยมผืนผ้าใน SVG หัวเรื่องเริ่มต้นคือข้อมูลของสี่เหลี่ยมผืนผ้าที่ลาก

drag.clickDistance ([ระยะทาง])

วิธีนี้ใช้เพื่อกำหนดระยะห่างสูงสุดสำหรับการคลิกเหตุการณ์ที่เลื่อนลงและเมาส์อัพ หากไม่ได้ระบุระยะทางจะชี้ไปที่ศูนย์

drag.on (ชื่อพิมพ์ [ฟัง])

วิธีนี้ใช้เพื่อตั้งค่าตัวฟังเหตุการณ์สำหรับชื่อพิมพ์ที่ระบุสำหรับการลาก ชื่อพิมพ์คือสตริงที่มีชื่อพิมพ์อย่างน้อยหนึ่งชื่อคั่นด้วยช่องว่าง ชื่อพิมพ์แต่ละชื่อคือประเภท (ไม่บังคับ) ตามด้วยจุด (.) และชื่อเช่น drag.one และ drag.two ประเภทนี้ควรมาจากข้อใดข้อหนึ่งต่อไปนี้ -

  • start - เริ่มตัวชี้ใหม่

  • drag - ลากตัวชี้ที่ใช้งานอยู่

  • end - ไม่ใช้งานตัวชี้ที่ใช้งานอยู่

d3.dragDisable (หน้าต่าง)

วิธีนี้ใช้เพื่อปิดการใช้งานการเลือกลากและวาง ป้องกันไม่ให้เกิดการเคลื่อนไหวของเหตุการณ์ที่ถูกเลื่อนออกไป เบราว์เซอร์ที่เลือกส่วนใหญ่สนับสนุนการกระทำนี้โดยค่าเริ่มต้น หากไม่รองรับคุณสามารถตั้งค่าคุณสมบัติ CSS เป็นไม่มี

d3.dragEnable (หน้าต่าง [, noclick])

วิธีนี้ใช้เพื่อเปิดใช้งานการลากและวางการเลือกบนตำแหน่งหน้าต่างที่ระบุ ใช้เพื่อเรียก mouseup เหตุการณ์การกระทำ หากคุณกำหนดค่า noclick เป็นจริงเหตุการณ์การคลิกจะหมดอายุการหมดเวลาเป็นศูนย์มิลลิวินาที

ลาก API - ลากเหตุการณ์

วิธี D3.event ใช้เพื่อตั้งค่าเหตุการณ์การลาก ประกอบด้วยฟิลด์ต่อไปนี้ -

  • Target - แสดงถึงพฤติกรรมการลาก

  • Type - เป็นสตริงและอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้ - "start", "drag" หรือ "end"

  • Subject - หัวเรื่องการลากกำหนดโดย drag.subject

event.on (ชื่อพิมพ์ [ฟัง])

อ็อบเจ็กต์เหตุการณ์จะแสดงเมธอด event.on เพื่อทำการลาก มีกำหนดดังนี้

d3.event.on("drag", dragged).on("end", ended);