技術共有

【国産オープンソース可視化エンジン Meta2d.js】ドラッグ&ドロップ

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Meta2d.js はドラッグ イベントをリッスンし、有効なプリミティブ Json データの受信をサポートし、キャンバス上にプリミティブ オブジェクトを作成します。

グラフィックライブラリのドラッグアンドドロップ

1. グラフィック ライブラリ ツールバーを作成する

グラフィックス ライブラリ ツールバーの HTML 要素を作成し、ドラッグ イベントまたはタッチ イベントをバインドします

  1. <div v-for="item in list" draggable="true"
  2. ondragstart="onDragstart($event, item.data)"
  3. onclick="onTouchstart($event, item.data)"
  4. ontouchstart="onTouchstart($event, item.data)">
  5. <img :src="item.svg" />
  6. </div>

コピー

2. データの転送

  1. // 示例pen
  2. const pen = {
  3. name: "rectangle",
  4. text: "矩形",
  5. width: 100,
  6. height: 100,
  7. };
  8. // 拖拽添加图元
  9. onDragstart = (e, pen) => {
  10. e.dataTransfer.setData("Text", JSON.stringify(pen));
  11. };
  12. // 支持单击添加图元
  13. import { deepClone } from "@meta2d/core";
  14. onTouchstart = (e, pen) => {
  15. meta2d.canvas.addCaches = deepClone([pen]);
  16. };

コピー

デスクトップの画像をドラッグ アンド ドロップします。

方法 1: アップロード URL

フロントエンド構成:meta2d.store.options.uploadUrl。

バックエンド構成:

  1. 受け入れられる formData ファイルの属性名は file でなければなりません
  2. バックエンドによって返される応答では、第 1 レベルの属性に画像プレビュー アドレスとして url が含まれている必要があります。
  1. new Meta2d("meta2d", {
  2. uploadUrl: "/api/image",
  3. uploadHeaders: {
  4. token: "xxx"
  5. },
  6. uploadParams: {
  7. // 参数
  8. public: true,
  9. },
  10. });

コピー

方法 2:uploadFn

meta2d.store.options.uploadFn を設定します。このメソッドはコールバック関数であり、パラメータはファイル、つまり画像ファイルであり、バックエンドにアップロードした後、画像のアクセス可能な URL を返す必要があります。

UploadFn はデフォルトで画像を Base64 に変換します。これにより、ダウンロードされた JSON ファイルのサイズが大きくなり、画像をコピーした後に再利用できなくなります。画像をバックエンドに渡し、URL を使用して画像にアクセスすることをお勧めします。

  1. new Meta2d("meta2d", {
  2. uploadFn: async (file: File) => {
  3. // 伪代码,复制后根据实际情况使用
  4. const formData = new FormData();
  5. formData.append("file", file);
  6. const res = await axios.post(url, file);
  7. return res.url;
  8. },
  9. });

コピー

国内オープンソース

LeWule は研究開発に専念し、独立性と制御性を備え、反復と最適化を継続します。

GitHub:GitHub - le5le-com/meta2d.js: meta2d.js はリアルタイム データ交換であり、開発者は Web SCADA、IoT、デジタル ツインなどを構築できます。データ交換およびインタラクティブ 2D エンジン。Web 構成、モノのインターネット、デジタル ツインなどのシナリオで使用できます。

ギティー: meta2d.js:meta2d.js は、リアルタイム データ交換およびインタラクティブな Web 2D エンジンであり、開発者は Web SCADA、IoT、デジタル ツインなどを構築できます。 Web 構成、モノのインターネット、デジタル ツインなどのシナリオで使用できます。

スター、フォーク、ブログのサポートへようこそ