Rumah >hujung hadapan web >tutorial js >Fabric.js: Lanjutan
Artikel ini menyelidiki ciri -ciri fabrik.js canggih: kumpulan, siri (dan deserialization), dan penciptaan kelas adat.
Konsep Utama:
loadFromJSON
loadFromSVG
Kumpulan dalam fabric.js membenarkan menggabungkan objek ke dalam entiti tunggal. (Lihat Rajah 1). Mana -mana bilangan objek kanvas boleh dikumpulkan, membolehkan manipulasi bersatu. Skala, putaran, dan pengubahsuaian sifat kumpulan (warna, ketelusan, sempadan) semuanya mungkin. Fabrik secara tersirat mencipta kumpulan apabila memilih pelbagai objek.
Rajah 1
Penciptaan kumpulan programatik:
(lihat Rajah 2 untuk hasilnya). Objek individu dalam kumpulan diakses dan diubahsuai menggunakan kaedah
<code class="language-javascript">var text = new fabric.Text('hello world', { fontSize: 30 }); var circle = new fabric.Circle({ radius: 100, fill: '#eef', scaleY: 0.5 }); var group = new fabric.Group([text, circle], { left: 150, top: 100, angle: -10 }); canvas.add(group);</code>.
item
Rajah 2
Mengubah Objek Kumpulan:
(lihat Rajah 3). Objek dalam kumpulan diposisikan berbanding dengan pusat kumpulan kecuali
<code class="language-javascript">group.item(0).set({ text: 'trololo', fill: 'white' }); group.item(1).setFill('red');</code>/
koordinat ditentukan. left
top
Rajah 3
Membuat kumpulan sejajar secara melintang:
(lihat Rajah 4). Bagi kumpulan yang mengandungi imej, pastikan imej dimuatkan sepenuhnya sebelum pengelompokan.
<code class="language-javascript">var circle1 = new fabric.Circle({ radius: 50, fill: 'red', left: 0 }); var circle2 = new fabric.Circle({ radius: 50, fill: 'green', left: 100 }); var circle3 = new fabric.Circle({ radius: 50, fill: 'blue', left: 200 }); var group = new fabric.Group([circle1, circle2, circle3], { left: 200, top: 100 }); canvas.add(group);</code>
Rajah 4
Kaedah kumpulan termasuk
, getObjects
, size
, contains
, item
, dan forEachObject
. add
Menambah objek semasa mengemas kini dimensi kumpulan. Pengklonan objek kanvas sedia ada diperlukan sebelum menambahkannya ke kumpulan baru. remove
addWithUpdate
fabric.js menggunakan Contoh: bersiri kanvas kosong: Menambah objek mengemas kini perwakilan JSON. Contoh: Memperluas SVG Serialization menggunakan kaedah deserialization:
dan subclassing:
untuk subclassing. Harta
). Sifat tersuai harus dikendalikan dalam Soalan Lazim (Soalan Lazim): (Soalan Lazim yang disediakan sudah berstruktur dan komprehensif, jadi tiada perubahan diperlukan di sini.)
Imej -imej itu dimasukkan seperti yang diminta, mengekalkan format dan kedudukan asalnya dalam teks. toObject
dan toJSON
untuk bersiri. toJSON
secara tersirat memanggil toObject
. <code class="language-javascript">var text = new fabric.Text('hello world', { fontSize: 30 });
var circle = new fabric.Circle({ radius: 100, fill: '#eef', scaleY: 0.5 });
var group = new fabric.Group([text, circle], { left: 150, top: 100, angle: -10 });
canvas.add(group);</code>
toObject
Mengembalikan perwakilan objek bukan rentetan. Menyesuaikan Serialization Object dicapai dengan mengatasi atau memperluaskan kaedah toObject
. toObject
: <code class="language-javascript">group.item(0).set({ text: 'trololo', fill: 'white' });
group.item(1).setFill('red');</code>
toSVG
, mewakilkan ke kaedah loadFromJSON
beban kanvas dari JSON. loadFromDatalessJSON
dan loadSVGFromURL
beban dari data SVG. loadSVGFromString
mengendalikan data laluan besar dengan cekap dengan merujuk fail SVG luaran. loadFromDatalessJSON
fabric.util.createClass
bertindak sebagai pembina. initialize
memanggil kaedah kelas induk. callSuper
<code class="language-javascript">var circle1 = new fabric.Circle({ radius: 50, fill: 'red', left: 0 });
var circle2 = new fabric.Circle({ radius: 50, fill: 'green', left: 100 });
var circle3 = new fabric.Circle({ radius: 50, fill: 'blue', left: 200 });
var group = new fabric.Group([circle1, circle2, circle3], { left: 200, top: 100 });
canvas.add(group);</code>
(lihat Rajah 8 dan 9 untuk contoh LabeledRect
dan toObject
. initialize
Atas ialah kandungan terperinci Fabric.js: Lanjutan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!