QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1198

主题

4

听众

2977

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>8 }# d9 Z  J0 j2 M# i; D
  2. <html lang="en">7 `+ P* Z, y8 p( g1 r
  3. <head>
    3 k$ O& w# H' N% m
  4.   <meta charset="UTF-8">
    % Z& B; D: @( X5 O
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">% r6 b( e, m0 N+ u8 s$ C, x
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7 V. i) ?' o& P; y
  7.   <link rel="stylesheet" >
    . j2 l6 ]0 L) h. g2 T
  8.   <title>vector examples Keyboard</title>
    6 w1 V1 A3 J: N0 F/ H
  9. </head>, F) O/ U- c7 }1 \
  10. <body>
      ], i4 x& h, V0 O8 b; ]5 l7 M
  11.   <div id="keyboard"></div>
    ) o# S) }; o3 z! r
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->
    0 L6 g; B+ {6 J6 ]5 ^
  13.   <script type="module" src="./temp.js"></script>
    + S: Q+ F* Z6 M\" g4 z7 p
  14. </body>  f, _0 C! q0 J) g+ v
  15. </html>
    5 i0 B# x' D9 R) A) F
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";
    ; X5 S1 A  [' S( V
  2. console.log("Interactive", Interactive);
    , [- o$ x/ v  u
复制代码
  1. /**
    # r* n2 r+ q. g\" U
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard
    7 W* ^+ n5 @1 w  D
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.. W( @2 i' I; m: d* Y8 W
  4. * @tags [input]* ^7 [: r- @% n- u6 d+ y' X/ O( N
  5. */8 i8 u6 {$ K  y& S9 i+ c* P
  6. // import { Interactive, getScriptName } from "../../index.js";
    / n8 U) d5 h\" a0 S; u
  7. // let interactive = new Interactive(getScriptName());
    ) x4 @/ M$ }) {$ q, l/ I9 J\" W
  8. import Interactive from "https://vectorjs.org/interactive.js";1 E0 b$ t) L% c: Q5 `' n! e' o: s
  9. let interactive = new Interactive("keyboard");
    # h6 W$ Z$ V$ A/ I& S( s' _
  10. interactive.width = 768;
    $ D4 w3 _- U! T# {
  11. interactive.height = 300;
    . T. z6 V# y- x4 d/ y, L
  12. interactive.border = true;  D. K2 i- ]: h; T5 X2 s, U
  13. let buffer = "";+ H) b/ i4 g7 L2 t0 D
  14. let keys = [
    5 ?5 v, i. A2 @# O  ^: X( O
  15.   [% ^: r! b& i5 v+ J% U
  16.     "`",
    1 M- i: K0 B: T
  17.     "1",
    3 q/ H\" z) [% u  n) a* l
  18.     "2",; j3 m4 G6 K. n
  19.     "3",
    + F/ E6 v2 R* ]. v' h& R7 e
  20.     "4",
    5 y) t* ]6 h* q( i5 @5 J- v  Y
  21.     "5",
    3 b% q6 {( S& M
  22.     "6",5 b3 G3 Q1 A\" x1 X9 w+ {
  23.     "7",  l8 Y% E. s0 h# h6 j1 I1 r
  24.     "8",
    8 ~0 g: `1 u1 n6 x' y' F( A- t7 H6 o
  25.     "9",; w3 t% g( v0 Y# Y# s* y
  26.     "0",. s' \* }/ S' h
  27.     "-",
    2 u* X) g, X  A4 ~; Z2 t: A8 L; G
  28.     "=",
    + W; N2 _0 S. C3 i
  29.     "Backspace",0 ?8 b4 ~( j; b; d! w
  30.   ],9 p' `6 d8 a: u5 Y9 G) Z8 b( @
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],; z: ?  [. T, d* }5 {
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],+ n1 R# o* o4 t8 [, v
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    , G\" X) X' k1 z8 z
  34.   [4 w/ L; r9 q1 T( K- m) A) [
  35.     "fn",
    0 X1 M! e- K\" A& b6 V5 c# I* a
  36.     "Control",
    # X% c, r9 p9 H1 z, q& V+ [
  37.     "Alt",
    $ k9 g' C5 |. P% C; {: ~
  38.     "Meta",
    / A1 q, k& o$ \* F* `$ k
  39.     " ",
    \" ~* w8 Y5 }+ `/ `) \  U6 o
  40.     "Meta",# h. I8 |$ {6 z: Q# b
  41.     "Alt",
    6 l7 K0 p6 N0 h
  42.     "ArrowLeft",
    & c( A. J6 G, y& L# ?
  43.     "ArrowUp",7 J1 h$ u* Q; w7 M5 ?) y
  44.     "ArrowDown",
    + q: A# ^, ^) [& C# T( P6 n' I
  45.     "ArrowRight",
    1 F6 t  Z3 l: [; s/ ?8 ]2 H4 Y
  46.   ],: `9 s: e, d0 H2 c, j
  47. ];$ L* ^: m5 A& e
  48. let buttons = [];! |\" p+ x  h3 q0 Z7 R
  49. let keycodes = {; H. \/ q$ R) l) H
  50.   0: { Symbol: 0, Shift: ")" },4 g0 o2 c; h: n$ |4 a
  51.   1: { Symbol: 1, Shift: "!" },
    1 G) C' T4 _3 ?' G: x3 D
  52.   2: { Symbol: 2, Shift: "@" },2 ]) t( [6 A  w: ~7 v! k0 i9 R
  53.   3: { Symbol: 3, Shift: "#" },
    5 m$ L; }, ~3 U+ z6 U
  54.   4: { Symbol: 4, Shift: "$" },
    3 ]( e( p& i9 C2 N
  55.   5: { Symbol: 5, Shift: "%" },0 r7 I) t. d\" q5 d# H0 T* `7 H
  56.   6: { Symbol: 6, Shift: "^" },$ D1 R4 q2 p+ v# h
  57.   7: { Symbol: 7, Shift: "&" },
    & ?. g# O, k4 a
  58.   8: { Symbol: 8, Shift: "*" },
    $ b; ^  O: P5 B) R8 D! A
  59.   9: { Symbol: 9, Shift: "(" },: x, Q- ^* U9 ^8 W0 ?\" @
  60.   a: { Symbol: "a", Shift: "A" },
    $ _, F& g6 M, e\" a7 |
  61.   b: { Symbol: "b", Shift: "B" },5 H* D& a5 ^) H  K
  62.   c: { Symbol: "c", Shift: "C" },
    7 O( @; N# k: B5 L# ?: \) }/ z
  63.   d: { Symbol: "d", Shift: "D" },* h/ F+ }$ u3 g: D) b' x
  64.   e: { Symbol: "e", Shift: "E" },
    . T( ?6 Z1 p0 b0 c2 r5 T
  65.   f: { Symbol: "f", Shift: "F" },! F. h/ a3 U5 _9 c7 T9 N% a
  66.   g: { Symbol: "g", Shift: "G" },
      g' t+ |) j/ L( ?0 B6 y0 N
  67.   h: { Symbol: "h", Shift: "H" },
    7 V; B- D% J4 c# s( w2 W. o/ ^! Q' P# t
  68.   i: { Symbol: "i", Shift: "I" },
    % e% _7 I) `$ V
  69.   j: { Symbol: "j", Shift: "J" },
    8 d; J9 \: |% P& Y7 ]! t
  70.   k: { Symbol: "k", Shift: "K" },
    ' b4 S9 J- Y# T3 W  d. k7 F$ Y
  71.   l: { Symbol: "l", Shift: "L" },
    9 `# c6 B4 k5 d7 p
  72.   m: { Symbol: "m", Shift: "M" },
    . {+ o- I. s8 l
  73.   n: { Symbol: "n", Shift: "N" },
    # ?; |\" A- {: E* `3 y
  74.   o: { Symbol: "o", Shift: "O" },4 m' k8 c  y3 B& X+ g  z
  75.   p: { Symbol: "p", Shift: "P" },
    6 W3 S) H6 F. M! J: v- s' F9 x* ]
  76.   q: { Symbol: "q", Shift: "Q" },+ O. e! Z+ Y* Y  R+ B
  77.   r: { Symbol: "r", Shift: "R" },- g5 q2 x, Y2 Q; Y
  78.   s: { Symbol: "s", Shift: "S" },. O* `$ Y/ D\" I5 d; f/ q# t* \
  79.   t: { Symbol: "t", Shift: "T" },
    ! V6 p1 t- W- |- y
  80.   u: { Symbol: "u", Shift: "U" },
    \" z7 b) \\" y% Y
  81.   v: { Symbol: "v", Shift: "V" },
    ! T; W* [# Z2 R: ~4 C
  82.   w: { Symbol: "w", Shift: "W" },
    , @( B\" f: W; a7 n
  83.   x: { Symbol: "x", Shift: "X" },5 K5 ^5 C- b2 H7 Q) G5 ^2 [1 w
  84.   y: { Symbol: "y", Shift: "Y" },! V4 X8 ^/ N  P* p1 V; T
  85.   z: { Symbol: "z", Shift: "Z" },
    ; t1 h\" D; u8 G# v( y
  86.   "`": { Symbol: "`", Shift: "~" },, J5 L8 {) G2 F+ z& w
  87.   "-": { Symbol: "-", Shift: "_" },
    . ]0 B, O  Y# [( G# T
  88.   "=": { Symbol: "=", Shift: "+" },. q$ T- u1 i+ C# g8 T% }\" G
  89.   ";": { Symbol: ";", Shift: ":" },' D- D1 [+ @\" ?, K( H
  90.   "'": { Symbol: "'", Shift: '"' },' J\" w. V6 c, K$ J* Y
  91.   "[": { Symbol: "[", Shift: "{" },6 s9 {5 w# `# Z
  92.   "]": { Symbol: "]", Shift: "}" },
    * @7 v3 x9 p3 w\" b: n: A1 b$ |4 e
  93.   "\\": { Symbol: "\\", Shift: "|" },# I5 ]0 q9 D  N% k* D. E* ]
  94.   ",": { Symbol: ",", Shift: "<" },
    + j, X% R8 {) t9 t9 ]( v: O: r
  95.   ".": { Symbol: ".", Shift: ">" },
    . x4 _' Y; R( x- j) p6 g
  96.   "/": { Symbol: "/", Shift: "?" },
    ! G4 L' Z, X( V( j
  97.   Backspace: { Symbol: "⌫", Shift: "" },  _  W, |& U: g7 h: Y; N8 m0 ~
  98.   tab: { Symbol: "  ", Shift: "" },
    ! c7 M& @, t6 U/ z
  99.   CapsLock: { Symbol: "⇪", Shift: "" },  s% h) {9 c$ ~$ X- M( I1 t$ \( q
  100.   Shift: { Symbol: "⇧", Shift: "" },
    % ?3 F4 N! O$ @6 O) H
  101.   Enter: { Symbol: "⏎", Shift: "" },7 H) X, t) J, i  v# z\" H1 s\" u$ a
  102.   Control: { Symbol: "⌃", Shift: "" },1 R+ K! C! O8 ]: |; M
  103.   Alt: { Symbol: "Alt", Shift: "" },
    + e, }5 V* B7 p
  104.   Meta: { Symbol: "⌘", Shift: "" },  U/ ^' L\" p- d
  105.   ArrowLeft: { Symbol: "←", Shift: "" },* a0 r3 |+ |; v3 e1 j9 K& h
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    + _8 K\" C( e) c2 m
  107.   ArrowDown: { Symbol: "↓", Shift: "" },* |& D& Z+ i0 z' Y7 S3 J  n* b
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    ( u8 `\" c\" G* Q/ }5 T\" t- u
  109.   " ": { Symbol: " ", Shift: "" },% ]$ a# Q4 H8 J, c- ^  ^
  110. };9 h& I! R& J0 x+ Z4 T
  111. let buttonMap = new Map();
    : b6 ~7 h3 G: K$ X- o* U
  112. let height = 32;
    . P& y# S- z1 j, t/ @, C& Y
  113. let margin = 8;; t' l  E) a6 {9 t  J. F0 |
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);3 Y: T5 u- b, W! S: O) m# i
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);
    8 K/ ~  T; O% L- I! m
  116. for (let row = 0; row < keys.length; row++) {0 r/ Q5 A. ^3 ]5 L! x
  117.   let x = 32;
    \" v5 j* |5 C) D; r) Y
  118.   let prev;
      M$ t' F$ b' v
  119.   for (let i = 0; i < keys[row].length; i++) {
    : G1 L: {7 k, H- r9 W& A' f
  120.     let key = keys[row][i];; p7 W! }3 g2 v, J, f- q
  121.     let width = 32;
    3 `  y7 N  o* T' F- a
  122.     let button;1 |( L: r# l. W# e& o/ Q
  123.     switch (key) {
    6 B( A9 N) q$ |1 m& P
  124.       case "CapsLock":5 o2 B; ?+ u\" y$ p# @
  125.         button = capslock;
    $ B: w+ J# \, N0 `
  126.         width = 64;/ z8 @; Y& C, |1 `) K& k& o; I0 e; z
  127.         break;' M/ M+ H# l0 b; Y' ?% F
  128.       case "Shift":) a+ n; M+ [; a! f, T) K  d
  129.         if (shift.x === 0) {
    ) {7 l. U0 y) M+ b: O9 q
  130.           button = shift;
    ( N& @; m5 v2 R! k
  131.         } else {
    : Y5 F8 n7 t8 ^& \7 |- G
  132.           button = interactive.button(% d- P5 m/ d/ {: A
  133.             0,( k$ N& b0 R. Y: X
  134.             0,
    ( r, x. y; E+ w
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key) }- e7 D1 Q  x; [3 E6 g
  136.           );0 R0 b  X/ f; I6 x
  137.         }9 l- N& d) ~9 u! A. a7 Q2 a
  138.         width = 90;
    9 ]* K  u, k* H
  139.         break;
    4 ~6 d3 K* ~/ w\" K8 X\" x
  140.       case "tab":
    ; u5 }) ^, @1 y: L4 g. M
  141.         width = 50;
    8 Q) M8 v8 O$ |  c
  142.         button = interactive.button(, H6 W! \$ o! \: U3 H! o
  143.           0,
    / A0 T8 K$ X! ^5 H0 ^* d; ?' y
  144.           0,, O- J' I2 }- z\" |. i* a' Z
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key- i  L3 A0 Q% m4 w, a6 j. `- Z
  146.         );
    0 _! g$ Y# b7 Y/ R
  147.         break;
    3 u* r7 Z+ v6 y2 c; X
  148.       case " ":
    * d+ c# P; Z- s. y- X
  149.         width = 176;
    . N( ^\" Y! H! p* ^\" k
  150.         button = interactive.button(. [- N8 W4 w  F7 P
  151.           0,6 L- ?5 Z; K3 P4 E
  152.           0,
    ; f- y: w3 j0 e! i, ~; S' r8 q
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key. b0 i! j  ]2 w% }' L* a/ U# m2 W
  154.         );: w; Q' c! Y4 P( b2 Z- k2 J8 x
  155.         break;! @( y/ Z! I. F: f& z1 u; e
  156.       case "Meta":3 a! [- |\" w\" D3 e5 E
  157.         width = 50;; O0 z/ K* d\" N6 z4 j# y/ r
  158.         button = interactive.button(, \) J% u5 Z. |) I! _/ c
  159.           0,% S) T: ]# v7 e& _
  160.           0,
    / ~% P& r( O/ Z
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key$ L) B- ~4 y5 O. @. n& o; T
  162.         );$ O% v. w  D) G8 D/ r( E  q
  163.         break;
    / H* }7 P! P# U  v* S4 d+ P
  164.       default:
    % p  ^9 x1 n9 ~/ b- |
  165.         button = interactive.button(
    7 j' y5 W2 m/ X: Y8 m
  166.           0,$ z# `# y, N0 P3 {+ h+ }
  167.           0,5 j! U5 b6 [. ?) V
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key; s; ?0 h8 m8 v' x- Y, |
  169.         );
    . v+ p/ S1 R\" I% k8 u\" O
  170.         if (keycodes[key] != undefined) {5 L, a$ u, O! f: @% W% N% @
  171.           if (keycodes[key].Shift != "") {/ _% y0 A( O- @9 R* W
  172.             button.addDependency(shift, capslock);+ Z0 `) p/ o* k% l/ ?- i
  173.             button.update = () => {
    ; |# K/ v\" S# |4 t
  174.               if (shift.active || capslock.active) {0 a. p3 T7 Y) e4 y
  175.                 button.label.contents = keycodes[key].Shift;
    2 m/ N, X: x' W5 j  w% R1 z
  176.               } else {
    , F4 W2 r* Q\" ]3 i' _* W$ a5 m9 s. g
  177.                 button.label.contents = keycodes[key].Symbol;* Q% O* X& l- R- e$ c; s
  178.               }
    / I: r2 P5 r3 v; v3 W4 S: Q
  179.             };8 {. V# O, `, f% C2 S
  180.           }0 S6 x3 c+ |) X
  181.         }
    7 G% e\" m8 t/ V, _/ @; T1 P- X+ e
  182.     }
    ; l5 e* c& ?+ A2 O* }$ a! s
  183.     button.x = x;
    2 n0 X+ k( O/ |8 ^) r
  184.     button.y = 64 + row * (height + margin);
    ) y2 M8 O5 I) [7 q. m( E' y
  185.     if (button.box.width < width) {
    1 @/ a& T& T2 _0 C& E, j  q
  186.       button.box.width = width;
    1 }1 @8 N7 ^4 ^. ^9 p
  187.     }, T3 g* n- `8 j
  188.     let bbox = button.root.getBBox();
    1 h1 O\" f6 |4 h. J
  189.     x += bbox.width + margin;
    , Q2 `/ f0 b3 N
  190.     buttons.push(button);1 E0 ~* o  m; W9 M
  191.     prev = button;0 U7 J6 Z) r9 p
  192.     buttonMap.set(key, button);
    + h4 N\" q8 k3 i7 {
  193.     if (key === "ArrowUp") {\" l4 F0 u$ s% r6 ]) {9 V
  194.       button.box.height = 16;
    0 b4 H$ K* Q7 x/ w- ?
  195.       button.label.root.style.display = "none";. s5 J, R* D2 n! H
  196.     } else if (key === "ArrowDown") {
    8 |/ y. e- e- K
  197.       button.box.height = 16;
    8 R+ A8 V  y! K4 U# Q( B
  198.       button.x -= 32 + margin;
    4 ~7 h. `7 a/ h# X! W! m7 e
  199.       button.y += 16;
    : I' d; Z7 {4 V) b* h0 R
  200.       button.label.root.style.display = "none";9 b. p# N/ c' }$ g9 B6 B
  201.       x -= bbox.width + margin;0 A4 Q- P6 W\" t! v
  202.     }- T( f) J, N1 \
  203.   }
    ) m8 `, k, B9 c9 |% {8 |) U
  204.   let right = prev.x;) F\" Y) I3 Q9 d% D/ @' u
  205.   if (right < 630) {
    8 m' I' A! w. \/ u+ d' y+ f
  206.     prev.box.width = 630 - right;
    / _6 l! x7 @) O3 Q
  207.   }
    ( R3 b! A* N! [8 E; ?
  208. }
      U; [$ N6 V+ }! `8 c9 c
  209. // console.log(keycodes["0"], shift, capslock);
    : P# M& i1 b, m, p) m
  210. let active = [];) u7 T( Y* @, ^5 h. J
  211. window.onkeydown = function (event) {
    2 ~3 A0 p( V2 ^3 p6 e4 x
  212.   for (let i = 0; i < buttons.length; i++) {
    7 j7 a; h- Y9 ^
  213.     let button = buttons[i];, S4 Y: O2 Z7 j
  214.     if (
    5 J& L/ i; A\" \8 H. }  M
  215.       button.label.contents === event.key ||% _3 {) G: `2 P5 u0 t\" u
  216.       (keycodes[event.key] != undefined &&+ A: X4 p: G4 r% s% t  l1 a) u
  217.         button.label.contents === keycodes[event.key].Symbol)
    9 s, f: x) G6 O- N! O& p
  218.     ) {# ^3 M4 u  c2 a( t) L( `0 D
  219.       button.box.style.fill = "#f8f8f8";
    / W% c: N: A9 t0 u. V# O\" D
  220.       button.label.style.fill = "#404040";* W! J/ {; [. P6 h7 n: V+ W
  221.       button.active = true;
    6 W1 d( g/ `- M9 T# z: o, ^9 H
  222.       active.push(button);
    - R: N8 Q8 f% A( P
  223.     }
    3 B: c\" k5 c/ _\" ?  E! v\" f2 k
  224.   }6 W: p: _+ a3 G) d5 }
  225.   buffer += `'${event.key}',`;
    \" w# q; Q& ^$ _! {7 X
  226. };
    \" D6 }* U; W: _% ?% s( H- }
  227. window.onkeyup = function (event) {( x) k; L/ X( q
  228.   let newActive = [];. o7 M6 t- C5 Z6 K& D3 C; P6 Y
  229.   for (let button of active) {
    ' W% ]; v  Z2 Q) N; l$ l
  230.     if (
    , H( }4 G0 E9 p) e6 p6 g# N; y0 f
  231.       button.label.contents === event.key ||% N8 E4 y* B6 E+ [% Y: T& `
  232.       (keycodes[event.key] != undefined &&  K) |- ?$ W: y9 a8 F, d8 B
  233.         button.label.contents === keycodes[event.key].Symbol)) z- F$ s8 R) t. X& H/ s2 O
  234.     ) {3 {% Q0 W2 A: [0 Z  Y# [\" h
  235.       button.box.style.fill = "";
    0 n\" u7 B( X+ X8 [, Y
  236.       button.label.style.fill = "";6 D% |  k- v2 V! @+ u
  237.       button.active = false;
    \" r4 z: |: K2 p
  238.     } else {
    2 H3 f+ o: E: Q% S3 H- @
  239.       newActive.push(button);( Q# y8 Z7 F% I% x5 E' d
  240.     }
    0 ]9 N- q& W/ _
  241.   }
    \" g' ]# `4 f: o. W
  242.   active = newActive;
    7 q( m7 B$ I9 y% ]) q$ w6 j5 C
  243. };
    ' I5 T( X8 \1 e3 z% Q) B# P( g
  244. let bbox = interactive.input.root.getBBox();
    * `* j7 k+ x* \/ T3 S4 [
  245. interactive.setViewBox(
    ; W$ H1 }  @9 \  |6 I  J( f
  246.   bbox.x - margin,) ?5 d# v, {8 X1 Q+ P4 w7 s
  247.   bbox.y,
    : w4 Y. i- a- V7 y2 e) E
  248.   bbox.width + 2 * margin,( t  t\" K9 L7 _9 f* V! \
  249.   bbox.height
    2 x# V2 K$ Y) j/ c\" E7 P
  250. );
    3 Z, L1 \- @) Z9 M/ k7 C
  251. //# sourceMappingURL=keyboard.js.map
    2 q; P4 y( e9 ^
  252. ! H4 ?1 C0 T  x0 l% Q3 ]
复制代码
8 [" n, _5 H  J* l9 T- ?# b; D
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-28 17:36 , Processed in 0.310398 second(s), 51 queries .

回顶部