RepeatedLayout
ทำซ้ำรูปแบบเป็นระยะๆ ในหน้าต่างการครอบตัด ซึ่งเหมาะสำหรับการเคลื่อนย้ายเครื่องชั่งและวงเวียนอย่างต่อเนื่อง period กำหนดช่วงเวลาการทำซ้ำ value และ anchor กำหนดว่าค่าปัจจุบันจะอยู่ในแนวใด
ตัวอย่าง
function main() {
return (
<RepeatedLayout axis="horizontal" period={120} value={76} anchor={0.5}>
<Text width={120}>N</Text>
</RepeatedLayout>
);
}
การใช้งาน
- children คือลายหนึ่งชุด period คือช่วงซ้ำ value ตรง anchor เมื่อเพิ่มค่าลายเลื่อนกลับทาง และเพิ่ม offset เป็นพอยต์ both ซ้ำสองแกน แยกด้วย {x,y} ได้ ตัดภาพในหน้าต่างเสมอ
- x/y และ transform ทำงานหลังจัดพื้นที่ การเลื่อนลูกไม่ผลักตัวข้างเคียง ใช้ spacing หรือ Spacer เปลี่ยนช่องว่าง การหมุนและย่อขยายมีผลกับภาพทั้งหมด
คุณสมบัติ
children?ViewContentเนื้อหาการวาดของมุมมองลูก
axis?"horizontal" | "vertical" | "both"ซ้ำแบบ horizontal, vertical หรือ both; both เป็นตาราง
"horizontal"period?RepeatAxisValueระยะระหว่างสำเนาเป็นพอยต์ ใช้ x/y แยกแต่ละแกน
360value?RepeatAxisValueพิกัดเนื้อหาที่วางตรง anchor ค่าเพิ่มทำให้สำเนาเลื่อนกลับทิศ ไม่ใช่ความเร็ว
$data.current.heading?.direction ?? 0anchor?RepeatAxisValueตำแหน่งในพื้นที่มองเห็น: 0 เริ่ม 0.5 กลาง 1 จบ
0.5offset?RepeatAxisValueระยะเลื่อนเพิ่มเป็นพอยต์หลังจัด value ตรง anchor
0alignment?"topLeading" | "top" | "topTrailing" | "leading" | "center" | "trailing" | "bottomLeading" | "bottom" | "bottomTrailing"จัดองค์ประกอบซ้อนในเก้าตำแหน่งขอบและกลาง
"topLeading"คุณสมบัติทั่วไป
width?number | "auto" | "fill"ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
100height?number | "auto" | "fill"ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
80padding?numberระยะขอบภายในเนื้อหา หน่วยพอยต์
0x?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0y?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0transform?ViewTransformแปลงทั้ง View โดยไม่เปลี่ยนเลย์เอาต์ ระยะเลื่อนเป็นพอยต์ หมุน/เอียงเป็นองศา สเกล 1 ไม่เปลี่ยน จุดยึด 0–1
{rotation: 0}background?Paintสีหรือไล่สีพื้นหลัง clear คือโปร่งใส
"clear"opacity?numberความทึบทั้ง View: 0 โปร่งใส 1 ทึบ
1cornerRadius?numberรัศมีมุมโค้งเป็นพอยต์
0clip?"rectangle" | "ellipse"รูปทรงตัด rectangle หรือ ellipse; Material ใช้ false เพื่อปิดได้
"rectangle"mask?View | nullView มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์
<Circle width="fill" height="fill" background="white"/>zIndex?numberลำดับวาดระหว่างองค์ประกอบระดับเดียวกัน ค่ายิ่งมากยิ่งอยู่หน้า
0blur?numberรัศมีเบลอเป็นพอยต์ 0 คือปิด
4innerShadow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?Colorสีเงาภายนอก
HDR("black")shadowOpacity?numberความทึบเงา 0–1; 0 ซ่อนเงา
0shadowRadius?numberรัศมีเบลอเงาภายนอกเป็นพอยต์
4shadowX?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
0shadowY?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
2animations?Animation[]แอนิเมชันเมื่อคุณสมบัติเปลี่ยน duration/delay เป็นวินาที from/to เป็นปลายทาง repeat/autoreverse ควบคุมการซ้ำ wrap เป็นคาบ
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน
ตัวอย่างใช้งาน
function main() {
return (
<RepeatedLayout
width={240}
height={140}
axis="both"
period={{ x: 80, y: 50 }}
value={{ x: 40, y: 25 }}
anchor={{ x: 0.5, y: 0.5 }}
alignment="center"
>
<Symbol name="plus" fontSize={20} color={$env.accent} />
</RepeatedLayout>
);
}
ภาพเคลื่อนไหว
widthheightpaddingxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYperiodvalueanchoroffsettransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYperiod.xperiod.yvalue.xvalue.yanchor.xanchor.yoffset.xoffset.yเมื่อไม่ระบุ
ตารางคือพฤติกรรมเมื่อไม่ระบุที่ตรวจจากโค้ด ตัวอย่างไม่ใช่ค่าเริ่มต้น หากต้องการผลแน่นอนให้ระบุค่า ขนาดและสีตามบริบทไม่ใช่ค่าคงที่