QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2539|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

1198

主题

4

听众

2977

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    + n; H% [5 V8 S
  2. <html lang="en">
    6 q) y# E; {: [, ?  A
  3. <head>
      \0 n* {1 n0 q4 Y
  4.   <meta charset="UTF-8">) k8 S, s/ a$ z, s\" H
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    . u; F$ n0 |# `- H* @4 y' X
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    - B4 Z  l( T/ p! V) N# e
  7.   <link rel="stylesheet" >
    - m* N2 @# {' L, r4 X\" E! W7 B
  8.   <title>vector examples Keyboard</title>
    ) [7 M3 f9 ^! G- R9 a0 u  M1 Q, D
  9. </head># A4 L1 D/ }, }
  10. <body>
    ; T; |4 I: [. H8 f: X% ~/ @
  11.   <div id="keyboard"></div>+ x$ k4 U5 i0 L0 t  J; g
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->  a\" S8 {& W# N6 n2 f
  13.   <script type="module" src="./temp.js"></script>' y- R* w% ~4 r
  14. </body>
    $ J0 C  ]# J0 D9 S! y# M* E5 [
  15. </html>) E3 y1 R: X: ?% ]. ^+ L9 H\" ^
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    $ `, o  A4 B8 Q0 Y4 |; r! p% N% e
  2. console.log("Interactive", Interactive);# K, O, o9 o6 R6 a
复制代码
  1. /**
    ) d3 k% e! r* A/ p# @\" s
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard! b+ N# {/ L6 [/ {
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    # l1 p/ W5 J$ T$ s1 a; D, |; G
  4. * @tags [input]& [3 c8 t4 G3 W9 |6 B) ?4 H4 q
  5. */( e, R+ O+ K6 q, u
  6. // import { Interactive, getScriptName } from "../../index.js";
    4 B! |' t( H: ~# \+ R\" d9 X- s! c0 h
  7. // let interactive = new Interactive(getScriptName());
    1 {& C0 M& ?( b6 |
  8. import Interactive from "https://vectorjs.org/interactive.js";+ d7 Y- p' u* x' [
  9. let interactive = new Interactive("keyboard");0 N2 d9 g9 s* P
  10. interactive.width = 768;
    & T& g* f6 D: c( A0 r
  11. interactive.height = 300;
    3 y% B/ F( j3 D9 J$ U
  12. interactive.border = true;
    . n& m& {, i\" d# K( l/ X0 H5 y
  13. let buffer = "";
    . E/ U9 g% k! _# W3 ?2 |5 y; |1 Y
  14. let keys = [
    % s) p! i! o. M, p# i7 w\" Q
  15.   [1 p' G; {& C$ m4 c
  16.     "`",
    2 n8 U6 L\" M. b
  17.     "1",
    , I+ F5 Q+ E2 M& Q% P\" D7 d\" n
  18.     "2",( W7 M3 ?. H5 _( Y; i+ T
  19.     "3",
    3 p9 {3 n5 L& Z: f! f
  20.     "4",- G  E; i\" T! M  }
  21.     "5",
    2 W8 O3 r& R% G) T% J9 Z\" n/ T. `
  22.     "6",. i2 P8 B2 l$ x
  23.     "7",' `8 l% s+ F$ f% e; H# j- h
  24.     "8",
    / z! T& v) P! A% C1 O
  25.     "9",
    1 ?- R/ Q& T# E
  26.     "0",$ ]! f+ }. ?5 {% M6 f
  27.     "-",8 [. H9 O: c3 M) _8 q+ D
  28.     "=",; X# k4 o# x# r. E& E- ^9 K& p! d/ {0 e
  29.     "Backspace",4 T6 F  S2 U6 N; c
  30.   ],
      y) j9 O* k% m8 b1 W; t\" T5 y
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],  }% e% y: a6 q/ }8 K
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
    : v( z, {$ v8 N' S4 M' v# g2 Q9 }
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],\" h1 N9 I2 e- X, h
  34.   [
    3 n7 @( w' m$ B* M8 M
  35.     "fn",
    ; j2 Y. R9 }' Z0 u& l
  36.     "Control",
    2 W6 F  k8 C  O3 z\" Y, c
  37.     "Alt",
    - [. g% `5 S/ C
  38.     "Meta",
    $ k5 S% l: b- c1 B
  39.     " ",7 u0 r. }4 l8 L. f; l
  40.     "Meta",( Y1 ~+ K+ l4 m
  41.     "Alt",
    ! {4 W$ f2 G, R# V* f; N) k1 Z
  42.     "ArrowLeft",
    - F. O$ y4 @5 h# C- t
  43.     "ArrowUp",
    # \2 y6 {/ ~( z# \
  44.     "ArrowDown",
    # ]5 i3 C' ^4 H* f8 M0 G; H
  45.     "ArrowRight",
    . u4 t& z8 @+ T0 O# _
  46.   ],
    + v  k) }& P4 ^3 N# E
  47. ];5 m5 }! D5 G& [+ D2 L4 \
  48. let buttons = [];, r* p% C+ U/ N1 b! `1 ]1 P% a! w  B- v
  49. let keycodes = {4 t% x4 F; h) }3 R% @
  50.   0: { Symbol: 0, Shift: ")" },
    ; B! ~' Z- \6 x* v% E' V
  51.   1: { Symbol: 1, Shift: "!" },
    & h* C, c* i! w7 I' {5 B5 j/ L
  52.   2: { Symbol: 2, Shift: "@" },) W/ K2 q- {) \( D
  53.   3: { Symbol: 3, Shift: "#" },4 A* f: L# U4 D
  54.   4: { Symbol: 4, Shift: "$" },
    ' n& f5 ?) z$ w5 r; m- H
  55.   5: { Symbol: 5, Shift: "%" },4 a2 I! Q9 o  k
  56.   6: { Symbol: 6, Shift: "^" },% O- u* y& G4 @
  57.   7: { Symbol: 7, Shift: "&" },' A3 f; V8 J6 Q, K( D& N9 S
  58.   8: { Symbol: 8, Shift: "*" },6 ?1 o8 n7 a. W
  59.   9: { Symbol: 9, Shift: "(" },$ b! a, N. J, H' C0 l0 U
  60.   a: { Symbol: "a", Shift: "A" },
    2 t' o5 j# x) n
  61.   b: { Symbol: "b", Shift: "B" },$ l6 V6 }& {5 W
  62.   c: { Symbol: "c", Shift: "C" },; s8 Q! }' E: W; S
  63.   d: { Symbol: "d", Shift: "D" },
    . o: T7 f# l) e2 w. D8 d; N
  64.   e: { Symbol: "e", Shift: "E" },1 N  c5 U\" z: v
  65.   f: { Symbol: "f", Shift: "F" },1 ^' i( N3 H) q. R8 L' j' Y, h
  66.   g: { Symbol: "g", Shift: "G" },
    7 l6 w+ Y5 B9 o' a, O7 ]
  67.   h: { Symbol: "h", Shift: "H" },0 _  G! u9 e7 I$ Z
  68.   i: { Symbol: "i", Shift: "I" },; f& H% B9 `0 c; v1 f
  69.   j: { Symbol: "j", Shift: "J" },6 d/ B2 i/ k. {
  70.   k: { Symbol: "k", Shift: "K" },+ L4 K6 t5 Z' z( `; W\" n
  71.   l: { Symbol: "l", Shift: "L" },
    9 q* {, ?  f2 p2 ?9 m/ r9 l+ g( u8 t- s  R
  72.   m: { Symbol: "m", Shift: "M" },. A+ v! a2 z3 O% Y* h2 P
  73.   n: { Symbol: "n", Shift: "N" },
      h7 \\" g8 m4 F5 q# U
  74.   o: { Symbol: "o", Shift: "O" },$ }4 [- L# i5 K0 w4 A
  75.   p: { Symbol: "p", Shift: "P" },
    \" m( q. j\" E; L$ _$ t
  76.   q: { Symbol: "q", Shift: "Q" },3 J\" r\" g+ J* W4 N
  77.   r: { Symbol: "r", Shift: "R" },
    9 ?\" i$ h: Q* L* p
  78.   s: { Symbol: "s", Shift: "S" },. C. Y) a. H: Q- p( P, ?
  79.   t: { Symbol: "t", Shift: "T" },7 n9 E\" t& I9 {5 Z
  80.   u: { Symbol: "u", Shift: "U" },* Y! F! ^) d1 ~0 I. p\" w
  81.   v: { Symbol: "v", Shift: "V" },9 F, R7 p+ Y* i
  82.   w: { Symbol: "w", Shift: "W" },
    ( Z! c; v; k( j9 V& w! p
  83.   x: { Symbol: "x", Shift: "X" },, `' q- i& |* y1 l5 T2 f- q
  84.   y: { Symbol: "y", Shift: "Y" },. H. X( b& B\" B) _
  85.   z: { Symbol: "z", Shift: "Z" },
    0 o9 z( z( t. s* i. n( D
  86.   "`": { Symbol: "`", Shift: "~" },
    2 U, J, @4 y/ d. S1 ~; q( R
  87.   "-": { Symbol: "-", Shift: "_" },7 M6 ?1 c5 a3 R5 t3 ?5 w- F
  88.   "=": { Symbol: "=", Shift: "+" },
    , Z3 \1 ~( |2 ^5 K  R: ?6 J
  89.   ";": { Symbol: ";", Shift: ":" },4 {3 |3 r; A, K2 s+ a4 V$ W
  90.   "'": { Symbol: "'", Shift: '"' },
    6 B' Z, T$ f% }6 a
  91.   "[": { Symbol: "[", Shift: "{" },1 L# L% g, j% C* Z/ @) R' g
  92.   "]": { Symbol: "]", Shift: "}" },
    & `) o% z1 D& N; U; H$ l  o
  93.   "\\": { Symbol: "\\", Shift: "|" },
    ' o$ C; k9 n, b2 U
  94.   ",": { Symbol: ",", Shift: "<" },
    \" u1 K) b+ V, f( m4 a. T
  95.   ".": { Symbol: ".", Shift: ">" },
    $ b2 I+ q0 f+ G1 _4 c( ^0 I
  96.   "/": { Symbol: "/", Shift: "?" },
    + y! n% B$ ]7 V' _\" y$ I
  97.   Backspace: { Symbol: "⌫", Shift: "" },# y4 z0 D\" Q( q\" B
  98.   tab: { Symbol: "  ", Shift: "" },
    ) c- ]9 V# A  ~$ y/ W, r+ y! P
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    * I5 M\" ^5 p! U! Q* }* ^  J
  100.   Shift: { Symbol: "⇧", Shift: "" },
    # M9 k6 x! N7 t+ f/ P
  101.   Enter: { Symbol: "⏎", Shift: "" },4 E3 H( b+ v2 I* R) u$ @$ M
  102.   Control: { Symbol: "⌃", Shift: "" },+ v. d6 {4 d1 a2 S6 S
  103.   Alt: { Symbol: "Alt", Shift: "" },0 j0 h% S( ]8 e0 z4 f& n+ x\" g
  104.   Meta: { Symbol: "⌘", Shift: "" },
    , D. Z8 D+ L% z! }5 i+ d
  105.   ArrowLeft: { Symbol: "←", Shift: "" },
    ; u\" W! C* C. l9 w- T
  106.   ArrowUp: { Symbol: "↑", Shift: "" },' S\" A3 J4 g) Y+ s$ O
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    / ?( O) E% m( u8 E, t
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    ) E+ ?  Z: \# {& k/ d
  109.   " ": { Symbol: " ", Shift: "" },( @7 q9 p\" \! z
  110. };
    ! D; i* }# F0 J
  111. let buttonMap = new Map();
    0 g+ A% ?4 Q4 O
  112. let height = 32;
    ' U: W  K& N4 t! I! O/ \
  113. let margin = 8;
    9 f& r+ o, ?5 P\" ]1 Q7 q1 {6 ?
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    \" Y& C% m) j3 a5 V
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);* o3 L\" z- V# |! f# f# k0 k2 x
  116. for (let row = 0; row < keys.length; row++) {
    0 d) A* R' I5 F
  117.   let x = 32;
    : ^6 Q* r. l7 Y  H- n
  118.   let prev;8 R$ u2 P2 G$ T5 w\" u2 X5 w% M5 J
  119.   for (let i = 0; i < keys[row].length; i++) {9 L0 W; [  u- }4 i; s4 ?( x
  120.     let key = keys[row][i];
    2 j8 K4 X( H7 P, v
  121.     let width = 32;& c2 x  b: k' r8 [4 u2 U
  122.     let button;
    # ]5 M4 t* e% L% s3 F
  123.     switch (key) {7 y* D+ W$ @9 \- s5 t8 ~
  124.       case "CapsLock":0 B$ Z; o& z; d. I
  125.         button = capslock;
    ' l: a8 \\" A6 g4 p  n
  126.         width = 64;0 b' E6 \% `; L1 j3 Y
  127.         break;! B8 l7 z- |3 O\" f' y$ ]' u  T# m
  128.       case "Shift":8 R& H' t7 H' q: K5 f6 H
  129.         if (shift.x === 0) {
    : L5 f6 e4 E) W/ a' F, m1 u
  130.           button = shift;; U5 ^3 W# n7 l, @/ c' t* n+ E
  131.         } else {
    / M3 \  e3 n% ?/ Z2 h
  132.           button = interactive.button(
    : u1 P7 m7 f0 R5 d; u\" t8 V
  133.             0,
    % E$ e+ B* A5 Y6 j0 c. T, ^5 L
  134.             0,
    4 ]: g) P& p6 N
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    / ^$ r- Z, i; L4 n, ~4 J: i
  136.           );
    ' l5 _/ t' B' h! s
  137.         }4 a2 f* r# z( f: u# x
  138.         width = 90;
    ) a0 f0 r0 q# u\" ?$ D
  139.         break;+ `! }1 ~0 W- Y\" l7 n  x
  140.       case "tab":7 w1 t1 W' X( _. Q' Z& h4 M! Z
  141.         width = 50;2 C\" B) D/ U% n: x
  142.         button = interactive.button(\" I5 C5 u9 V  t/ k2 k) R
  143.           0,
    / n9 \) Z7 q; i( x% y  y
  144.           0,  {% b+ _' |- p7 \9 n8 r
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    \" n$ J/ U( S$ o& S' u0 _4 v. O
  146.         );5 S\" X. h. C# X  x\" ^, i4 D
  147.         break;
    / k! Z: _2 s3 T) e6 i) z+ Z
  148.       case " ":7 h5 Z3 N. E0 x0 d, I$ o7 K) k; R9 E
  149.         width = 176;
    + K' `0 Y3 @( x: o
  150.         button = interactive.button(
    : r% s\" w3 d: H& b  n& |0 N
  151.           0,
    6 f1 |: `, S) r* |/ n; d7 Y
  152.           0,$ s. N' `! S; F! D
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
      c. B& E; y- M9 H' \# h
  154.         );6 R5 n* X) d: J! h
  155.         break;\" r3 D2 A0 k0 ~
  156.       case "Meta":4 g9 B7 R& p& Y) b- X5 o5 t6 k5 J7 V  y
  157.         width = 50;8 B+ l( A6 {, Y. Y2 ?
  158.         button = interactive.button(
    5 H\" f4 Q. c\" n! g  Z- C2 C- c8 I
  159.           0,\" r: f, G1 }* j. ~
  160.           0,
    - c6 z4 }: ^/ W! I  i
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key# {6 u. ?& C\" d
  162.         );4 q9 R! E/ C/ k* Z8 Z, P9 a
  163.         break;4 G  e& L4 @& ^# y
  164.       default:3 b\" Z5 |$ k5 G
  165.         button = interactive.button(
    4 q8 l' D* `8 o  A2 K. E' r
  166.           0,
    + W  C\" `! m& Q0 L# T) i9 F
  167.           0,9 a. d4 S# X( h$ ~2 j
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    ! r; x  f4 P- Z. O
  169.         );$ `2 S' R3 u' I9 O# M' n  c
  170.         if (keycodes[key] != undefined) {
    . X/ a( h) W5 z\" ~% [  D
  171.           if (keycodes[key].Shift != "") {0 p7 h/ Q2 M$ C& N
  172.             button.addDependency(shift, capslock);6 B# M\" Y7 B( z3 E& a# B9 H
  173.             button.update = () => {
    ) {; p& ]; |! G8 U
  174.               if (shift.active || capslock.active) {
    ! _3 v, e3 K8 Y, U  D
  175.                 button.label.contents = keycodes[key].Shift;
    0 W1 F6 r7 v/ `2 m
  176.               } else {
    6 x# `3 G\" \\" M# d8 q* D
  177.                 button.label.contents = keycodes[key].Symbol;- e, @9 H8 ?5 }; J& ~& C
  178.               }
    ( [2 ?& p+ |5 i& T- d
  179.             };& K, v3 n7 P8 [. Y& H8 F
  180.           }
    6 b8 ^9 U. ]8 W2 n& s
  181.         }. c- ]0 [' Q0 g
  182.     }9 k! Z1 X1 J7 D6 U/ W! X\" V
  183.     button.x = x;
    ! F% S6 W% U' E& @1 s; C
  184.     button.y = 64 + row * (height + margin);' U3 ~6 [# ]' ^* O& S2 \\" G$ }
  185.     if (button.box.width < width) {8 N/ k2 S, {7 ?1 h/ Z5 C1 q( M
  186.       button.box.width = width;/ U, M2 l; G- Z$ w
  187.     }
    ' \9 A1 O* H2 G
  188.     let bbox = button.root.getBBox();
    : y. F1 k4 F% J( b: L
  189.     x += bbox.width + margin;
    ; b; o; Z8 j1 O
  190.     buttons.push(button);7 ~; R; P; @/ z0 [) r
  191.     prev = button;
    4 c) l1 h: @+ K$ T; s5 g* Q. X
  192.     buttonMap.set(key, button);
    8 V# R' B0 b- U  l
  193.     if (key === "ArrowUp") {) v\" b$ U3 T7 n) N$ L1 k
  194.       button.box.height = 16;/ X* k0 d0 U/ _\" U8 u
  195.       button.label.root.style.display = "none";
    \" D7 o' R6 ^& X9 U! ]. h$ H0 z
  196.     } else if (key === "ArrowDown") {+ n' k2 b. C9 N8 T9 B
  197.       button.box.height = 16;
    6 }4 o6 |2 s' Z  |
  198.       button.x -= 32 + margin;
      e) S9 N7 }4 b$ P! E/ z
  199.       button.y += 16;* @. h. q9 l; {/ c
  200.       button.label.root.style.display = "none";$ w& s, D# B: Q\" ]$ F1 s
  201.       x -= bbox.width + margin;
    ' E. E* T: ]' i  {( v5 }, `/ e
  202.     }
    9 T$ O9 _# ~  }5 s6 j
  203.   }
    - P4 S# y/ K7 O( p0 ~- r7 A$ z
  204.   let right = prev.x;& F7 W% d2 r( ]1 g$ {
  205.   if (right < 630) {
    9 I3 G% _( Q$ L) a/ _6 r3 G
  206.     prev.box.width = 630 - right;3 P7 p# R1 |6 z2 U* r\" E
  207.   }% {& k* G3 e7 _: n
  208. }% b* j8 w# }& Z% ?& H# u  E; W
  209. // console.log(keycodes["0"], shift, capslock);
    - v5 ^- o) Y2 S0 C
  210. let active = [];
    5 y) u6 _7 d0 E# G; y7 g/ e  n  }, E
  211. window.onkeydown = function (event) {4 X* E( r) L5 p$ b1 c
  212.   for (let i = 0; i < buttons.length; i++) {; v$ y4 _8 g( b  n* O4 k8 V6 n# S
  213.     let button = buttons[i];
    % g+ n6 A2 ~2 a- [* g/ W
  214.     if (
    ; ~- i% s) j: c* Y* e
  215.       button.label.contents === event.key ||\" ^$ \: ^; h\" ^6 q% r
  216.       (keycodes[event.key] != undefined &&9 o2 z8 s6 T+ I
  217.         button.label.contents === keycodes[event.key].Symbol)
    . i3 M# P5 d1 R$ {. t
  218.     ) {
    ' T6 A: }9 l3 w& `
  219.       button.box.style.fill = "#f8f8f8";
    9 x/ T6 N: y0 p( r7 T
  220.       button.label.style.fill = "#404040";, A0 r- q. f1 {/ z0 f
  221.       button.active = true;& N3 `; y( L2 l, \\" u$ M' o\" n
  222.       active.push(button);; L7 Y- ~' t( H2 y\" A
  223.     }) ], z9 @7 Q* x: h: r
  224.   }) k8 ^% v5 R' s7 }% I
  225.   buffer += `'${event.key}',`;
    ' x\" T- [' E3 H* Q
  226. };- G6 @3 B\" p$ x( F, f5 u6 X% g
  227. window.onkeyup = function (event) {, p+ \$ g9 Q7 @; [- b( y
  228.   let newActive = [];
      F& G- z$ w! O\" d9 O
  229.   for (let button of active) {% @3 e4 S0 D! N
  230.     if (
    6 ~& A+ u  E4 \, H5 F8 N& e
  231.       button.label.contents === event.key ||  ~0 S5 r# \! A& I* D9 s
  232.       (keycodes[event.key] != undefined &&: ~, w8 O2 S  p6 e5 v* y# O1 d4 m
  233.         button.label.contents === keycodes[event.key].Symbol)
    : T$ \! L5 X* ?9 j
  234.     ) {
    * W' Z3 A% S4 O' c; y3 l  j
  235.       button.box.style.fill = "";0 d5 G1 V3 O. Y) \/ k- B  a
  236.       button.label.style.fill = "";4 Q7 A\" V1 j\" A$ d3 f/ ~1 {
  237.       button.active = false;- g. k. b& \  P/ w6 G, {0 Y  X
  238.     } else {6 z. U$ d; O5 w8 h' o, Z/ p
  239.       newActive.push(button);1 k0 k! M% O2 j% s. K
  240.     }
    ) K% m. G8 u. p# h$ |4 h2 j
  241.   }6 T% L4 N) r0 z  L
  242.   active = newActive;
      T4 E% Y# k9 c6 j
  243. };& R  ~5 f, `& W/ x# L
  244. let bbox = interactive.input.root.getBBox();9 Y! a; K' H# G
  245. interactive.setViewBox(
    ) E' [8 Q2 w4 g1 ]. z
  246.   bbox.x - margin,$ j, h$ t7 l0 q/ Y4 D) X8 [
  247.   bbox.y,4 s0 M) M  h9 W$ ?( l4 s+ N
  248.   bbox.width + 2 * margin,
    ; _; U) z+ G$ ~, b5 o, I% w
  249.   bbox.height
    6 J- a5 r  I& q\" X( k
  250. );
    ; b, [5 s4 k( K, d/ V\" i
  251. //# sourceMappingURL=keyboard.js.map
    : G1 H8 n- Y! c# q: b8 o

  252. \" e$ {8 B+ l, e2 o
复制代码

' `5 j* x# x/ o/ Z1 c
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-9-26 07:34 , Processed in 0.437498 second(s), 50 queries .

回顶部