QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>- A0 d  j& I! N: `$ m! E
  2. <html lang="en">
    \" |* k$ ~7 x5 ]0 n( p- J* }4 b8 a
  3. <head>2 ]* h0 P5 }$ U  W( S  l- M
  4.   <meta charset="UTF-8">
    : Z9 N$ I; O: I. F4 D; S& X\" }6 ?
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">7 c3 {( q* x! A
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    ! x& O\" O# y* Y) W& N+ x- ^' e0 ~7 ~7 H
  7.   <link rel="stylesheet" >\" Q0 D  D' }) r1 ]  J, N
  8.   <title>vector examples Keyboard</title>
    7 ^# \: r1 N( D/ x. a
  9. </head>6 c0 _7 ]! r1 q7 X1 \: \1 P
  10. <body>
    7 \/ p\" g& L+ F0 g
  11.   <div id="keyboard"></div>, k. M! Q& I' m% G  `- S
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->  _* g! j: e, k; g
  13.   <script type="module" src="./temp.js"></script>; B4 \6 v; k/ ]6 m
  14. </body>
    ! T/ |# K& ~8 S2 C8 g
  15. </html>
    % }, S$ o/ Z' I- I! C( J. t( T: O
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";+ j# c9 M: F! t3 F9 v- b: k7 f- |0 m8 o
  2. console.log("Interactive", Interactive);; W\" X, k( D# g9 W0 @/ s6 r
复制代码
  1. /**7 k% u, g9 `; ~  |+ }3 V
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard\" A\" q) g9 |$ O8 |; W0 Y
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    \" R. S\" I$ R+ n* J
  4. * @tags [input]
    6 R* p4 x# q: T
  5. */
    0 P\" M6 t, X$ }' y
  6. // import { Interactive, getScriptName } from "../../index.js";0 [% i) Z% t& q: i
  7. // let interactive = new Interactive(getScriptName());
    % R* J8 G; w1 o\" T( x9 s
  8. import Interactive from "https://vectorjs.org/interactive.js";/ Y8 L5 f' T& C# ?/ ^$ o, G
  9. let interactive = new Interactive("keyboard");
    / ]- J! b% c8 ?4 k1 [! W
  10. interactive.width = 768;
    7 \: Z, n9 h9 a
  11. interactive.height = 300;( \# ^/ f  }( u
  12. interactive.border = true;
    2 T! ?/ B( X% {1 S
  13. let buffer = "";) Y- q1 Y+ c& o& X8 }5 ~
  14. let keys = [
    ; X0 z8 ~6 W2 Z
  15.   [* S1 O& I) m) x/ ^+ J
  16.     "`",
    \" M+ z  Y0 k5 A
  17.     "1",  `  N! N: o/ h' V5 g; |2 Z
  18.     "2",6 k0 P/ V3 |/ J
  19.     "3",, x4 q  d* H) Y; s7 R' E# H! U
  20.     "4",  P0 L7 s2 n\" @1 x' p' D
  21.     "5",
    0 H6 F$ I& c) ?\" i7 t/ o' P' c
  22.     "6",
    . \% |& a& @* Q8 P( W/ I\" N1 s
  23.     "7",% p\" c0 c4 x* G! L6 P+ K
  24.     "8",
    1 }4 S6 N% m  Y. g: m; u
  25.     "9",
    0 O/ U6 q' M, \\" `* b; f+ Y: k
  26.     "0",
    & j1 |, H9 L  d
  27.     "-",
    6 @+ u0 x* A6 w/ n
  28.     "=",% u+ \/ C  _4 q7 b5 s
  29.     "Backspace",
    ) d4 A9 v' C$ T6 F: t
  30.   ],
    # R% j% t' T! {6 G$ X, r
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    * Y\" d7 X$ {+ }3 T& i- P0 q2 {( s( Y7 \
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],# t$ F$ A! \' z. Z3 M
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],\" t4 r' t* W* A& z  Y* e  L& U
  34.   [( l3 }& I. H7 p5 E( L
  35.     "fn",9 l  t* C7 h1 B# V- B; k: a# p: H
  36.     "Control",* B; T: V# V* \
  37.     "Alt",
    1 z' M9 R0 G2 v: q! [) y! P8 U
  38.     "Meta",
    # x  D, D1 H$ F\" T! C  s
  39.     " ",
    + z. b7 C0 \6 ~3 S8 z2 s+ o
  40.     "Meta",* L. {# r, M7 J
  41.     "Alt",
    9 l# z: C! S5 p
  42.     "ArrowLeft",2 i* O  n. U: P* O) r- M* Q
  43.     "ArrowUp",- j; g2 [9 {( p6 p2 K5 Q! p* A
  44.     "ArrowDown",' t9 @8 ?3 ^* y1 W; [7 z! f
  45.     "ArrowRight",
    1 z) w\" f% Z9 \  R  g
  46.   ],9 ^0 Z, z+ z, s# [8 y
  47. ];
    5 q. y+ I' }7 L' E7 Z
  48. let buttons = [];
    8 {# Z- q' p* g) {6 E
  49. let keycodes = {
    9 o2 j; d0 B) m6 R9 Q% p
  50.   0: { Symbol: 0, Shift: ")" },: M% |4 E( J8 ~7 `7 T9 F
  51.   1: { Symbol: 1, Shift: "!" },' i; l( [0 b  s( T' g
  52.   2: { Symbol: 2, Shift: "@" },3 m- Y0 V( A' [6 [5 W. C
  53.   3: { Symbol: 3, Shift: "#" },5 o$ a- k/ g' n# g& e* O; P$ Z
  54.   4: { Symbol: 4, Shift: "$" },
    - f: s' y, @& ~' t
  55.   5: { Symbol: 5, Shift: "%" },
    / ?+ D% q5 Q4 ^- D8 f
  56.   6: { Symbol: 6, Shift: "^" },& z. z7 `; T7 W3 [0 h/ \
  57.   7: { Symbol: 7, Shift: "&" },
    + t* L7 t- \1 ?8 M, e0 m% Q8 O
  58.   8: { Symbol: 8, Shift: "*" },
    7 k) B3 F/ ~; O! D3 y
  59.   9: { Symbol: 9, Shift: "(" },
    $ F2 O* {; [! c; i1 q
  60.   a: { Symbol: "a", Shift: "A" },
    ! l7 k, a! F, Q- a1 A
  61.   b: { Symbol: "b", Shift: "B" },0 P$ D; L* \* |/ S' ?
  62.   c: { Symbol: "c", Shift: "C" },
    1 v- P! F, Z0 W$ X$ U7 @' z: F  d
  63.   d: { Symbol: "d", Shift: "D" },\" b! |2 L  w. y3 b
  64.   e: { Symbol: "e", Shift: "E" },
    * {) a; A* L. d& w
  65.   f: { Symbol: "f", Shift: "F" },& I, i, U, e/ X\" @
  66.   g: { Symbol: "g", Shift: "G" },
    % O% O$ [8 \7 |9 I1 H
  67.   h: { Symbol: "h", Shift: "H" },
    5 C' B7 G$ _0 d8 \8 }; r% S
  68.   i: { Symbol: "i", Shift: "I" },
    7 N( ^. l9 O9 S\" _0 g- d' d
  69.   j: { Symbol: "j", Shift: "J" },
    6 S! k. X- w+ k
  70.   k: { Symbol: "k", Shift: "K" },
    * E! |6 r! _5 \2 l& g& D
  71.   l: { Symbol: "l", Shift: "L" },: v: |9 f+ [$ x$ O
  72.   m: { Symbol: "m", Shift: "M" },3 l+ L$ t7 ~& |
  73.   n: { Symbol: "n", Shift: "N" },; i% N# ?( U0 U! G/ e
  74.   o: { Symbol: "o", Shift: "O" },\" u- U- t$ \8 Z* W0 ~! Z  c7 E
  75.   p: { Symbol: "p", Shift: "P" },4 [' e8 D# n  b
  76.   q: { Symbol: "q", Shift: "Q" },
    7 k6 S1 x( i& G
  77.   r: { Symbol: "r", Shift: "R" },3 d7 X' J0 h% n( _! i
  78.   s: { Symbol: "s", Shift: "S" },
    # u8 c! M: F7 B0 Y+ q* |% j; A( b
  79.   t: { Symbol: "t", Shift: "T" },
    - ?# g1 ]! W* E9 ^! `
  80.   u: { Symbol: "u", Shift: "U" },
    ; j+ |1 }+ R. T3 @
  81.   v: { Symbol: "v", Shift: "V" },
    5 j( Z! d& |8 I; P
  82.   w: { Symbol: "w", Shift: "W" },8 e% d3 z) u, d  k% f9 l
  83.   x: { Symbol: "x", Shift: "X" },* Y* B+ m3 K+ }9 D
  84.   y: { Symbol: "y", Shift: "Y" },, ]& g. L; @  ?2 M
  85.   z: { Symbol: "z", Shift: "Z" },1 x& z' ~- W& ^
  86.   "`": { Symbol: "`", Shift: "~" },
    : y. v0 @4 e8 ]& X
  87.   "-": { Symbol: "-", Shift: "_" },* w\" C/ z4 Z1 n  u* k2 W
  88.   "=": { Symbol: "=", Shift: "+" },: o  m4 J) u: a\" k) n4 U
  89.   ";": { Symbol: ";", Shift: ":" },
    / J7 ?5 r) L! i\" \/ l( U
  90.   "'": { Symbol: "'", Shift: '"' },
    2 ^( D/ I* c; W
  91.   "[": { Symbol: "[", Shift: "{" },6 ~; E7 B8 E, x
  92.   "]": { Symbol: "]", Shift: "}" },  [& `\" l+ k* d: w
  93.   "\\": { Symbol: "\\", Shift: "|" },
    5 K; k) T3 |, \1 S  Z9 `4 J
  94.   ",": { Symbol: ",", Shift: "<" },
    3 u) M5 R* G# P- Z5 c2 y
  95.   ".": { Symbol: ".", Shift: ">" },
    8 U; ]' j8 o4 p  ?* `3 g. ]# \1 w
  96.   "/": { Symbol: "/", Shift: "?" },
    2 K( ]7 y# ?9 P% f, _/ y
  97.   Backspace: { Symbol: "⌫", Shift: "" },/ y: w- a! Z. a. {6 C3 \\" f3 K
  98.   tab: { Symbol: "  ", Shift: "" },
    : k4 X9 z4 L( g# d
  99.   CapsLock: { Symbol: "⇪", Shift: "" },) v7 `' A6 k1 S# H; N
  100.   Shift: { Symbol: "⇧", Shift: "" },& m& ^7 i/ r# M# U
  101.   Enter: { Symbol: "⏎", Shift: "" },
    ' T5 D9 @( t+ @5 }' V
  102.   Control: { Symbol: "⌃", Shift: "" },  p, K% I# Q! m1 f+ k' V* m9 V
  103.   Alt: { Symbol: "Alt", Shift: "" },
    6 K6 d% F% Y0 X# x
  104.   Meta: { Symbol: "⌘", Shift: "" },
    ' ]4 j# {' M. N# x1 H% T4 Y2 ]5 U
  105.   ArrowLeft: { Symbol: "←", Shift: "" },5 a8 V  u; C/ ^\" b( z' h$ {
  106.   ArrowUp: { Symbol: "↑", Shift: "" },0 [) ^8 e7 c8 _* {
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    : C6 {( _; \% B! M: S- p! O/ v\" S
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    1 V* W( [0 l0 {% N( b3 w3 v
  109.   " ": { Symbol: " ", Shift: "" },4 I( I% S% T3 \
  110. };. g1 s. t1 D* q1 O# W\" z
  111. let buttonMap = new Map();. b8 V% V. q3 R* P
  112. let height = 32;
    / m% ?\" Q1 d1 w3 f
  113. let margin = 8;: B+ U) e5 k- q, P\" a- j- q
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    4 R/ s. s; z) K\" b8 G, f
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);, l& u& l3 N7 ]' P6 D9 z6 p
  116. for (let row = 0; row < keys.length; row++) {
    + ^! a- g% U+ S4 [) `2 s
  117.   let x = 32;2 T% S' J, o2 C5 G! U
  118.   let prev;% e/ {* _+ q1 V0 ?\" h& l
  119.   for (let i = 0; i < keys[row].length; i++) {* |5 c3 Z# C& W; l. V
  120.     let key = keys[row][i];
    / h2 D$ o9 y7 O. P& N/ S
  121.     let width = 32;8 [, l% r, j( K' {, ?# V) w
  122.     let button;
    $ s1 e; U' j  t: a3 {$ |+ n3 r# E
  123.     switch (key) {
    6 t7 o\" E1 W4 |  J+ @
  124.       case "CapsLock":. C3 Z1 |8 L' k+ e5 i
  125.         button = capslock;, B( t. O, B) G1 T5 r2 f
  126.         width = 64;
    ) j) r, i3 d  i) j2 S
  127.         break;
    5 f8 E7 j+ w1 s4 V- U
  128.       case "Shift":/ C4 a$ N( {: _* T/ D; b: u/ e
  129.         if (shift.x === 0) {
    0 k. W/ n0 g1 |
  130.           button = shift;
    - m1 p# X2 C, L( d9 M
  131.         } else {
    . e3 p; _, f4 F9 H
  132.           button = interactive.button(
    : X* p+ P& [! N6 `, q) w2 t
  133.             0,. M$ I& h, X, r/ \6 h
  134.             0,
    2 L6 ?* B% Q* K8 L  g3 u1 b4 n0 g! L
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    ' s5 C6 V8 A) O9 n9 O  D
  136.           );
    5 J3 h1 {5 v  G. r, ?
  137.         }7 a7 s: `: z# ]4 r0 A2 t
  138.         width = 90;
    7 v- q) [  O2 b% G# y/ _2 a' M
  139.         break;
    ) L/ _9 x% i$ M1 x' M
  140.       case "tab":
    ; Z/ W3 W  E\" ?1 C
  141.         width = 50;+ i: S' Z$ v9 l. k( a7 W\" v3 n; l' W
  142.         button = interactive.button(! G- W! c) o- i- n  r, |
  143.           0,\" {; ]5 ^3 I8 b$ M* Q
  144.           0,7 {* k6 h/ N0 v
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    . l/ s: i& s  S9 o7 M
  146.         );
    - d* S& D, u- b( u$ s, o9 B
  147.         break;
    , i) _+ }7 O7 @+ r5 F
  148.       case " ":# c4 f6 b# f, Z, m/ h7 V: P
  149.         width = 176;
    ! [# v1 _: _# R% u$ P
  150.         button = interactive.button(2 e7 r* c! n1 k, ]/ R
  151.           0,  \\" D; J9 \. H
  152.           0,% v) P9 B7 H9 y/ \) Y* a\" X) l
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key3 Z: c  o2 H3 [- m- g
  154.         );
    % v  F1 I3 s6 e! |5 c- |
  155.         break;
    \" |/ |  U4 m  ?7 L& t# r
  156.       case "Meta":
    7 q$ O1 f/ z1 i7 t0 W, i. ~
  157.         width = 50;. p  W' E' f$ v/ C2 r& a. {) [- t
  158.         button = interactive.button(
    2 m$ ^- n# v, e% [
  159.           0,/ f: S4 t) [+ M( s7 l
  160.           0,2 f0 d, F( G  j- ?1 f! ?
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key* b( p0 l1 B; f! [( x6 k0 x, l5 q7 V
  162.         );) o  H+ Z4 {  f2 C\" j
  163.         break;
    & g/ m1 G9 U; ?# O
  164.       default:
    3 U4 S; |+ s6 `% Y+ A\" p
  165.         button = interactive.button(
    ; {- P' k) u/ C2 A0 G8 [! N
  166.           0,( W# D% q8 ^  F' Y, }3 r7 P
  167.           0,
    ) _' P; E* [& l9 l6 K\" U% ^$ `
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    , |: h  \; f( }8 x( N5 x# G
  169.         );
    # b9 n+ q& C2 a% h) p7 c$ c4 a; Y0 W# G
  170.         if (keycodes[key] != undefined) {1 r7 S6 F6 s; u/ s
  171.           if (keycodes[key].Shift != "") {4 W. m8 `  _4 s5 Y. U$ u, U
  172.             button.addDependency(shift, capslock);
    3 [. f\" m* N& F; A
  173.             button.update = () => {
    1 N3 I6 u* n+ B% l# f# v' @( n* x
  174.               if (shift.active || capslock.active) {
    7 E+ ~, N\" T/ @\" C9 k1 J
  175.                 button.label.contents = keycodes[key].Shift;
    # V' o, L, x1 [7 A2 r# q
  176.               } else {/ K- j& k& f9 V+ _
  177.                 button.label.contents = keycodes[key].Symbol;1 |9 H0 B3 m# z7 d& |) N% Y
  178.               }0 N% g; O  U1 \3 H: K7 v$ G. p
  179.             };# X; T8 u% b9 s
  180.           }5 a7 a1 w( c8 M7 r
  181.         }( d$ D5 \  ], f; c+ n1 i0 u
  182.     }. x( c  U1 ?% y  s
  183.     button.x = x;
    ' l3 L9 k, S& K8 m5 B! ^$ \* G
  184.     button.y = 64 + row * (height + margin);
    # c# D% p* _4 |' X8 T. \
  185.     if (button.box.width < width) {( {+ H- B+ c( v: u* N& T/ `
  186.       button.box.width = width;: k& _$ u2 u* R
  187.     }
    \" Q* M4 l' x2 l- B4 c# Y+ F5 {% x
  188.     let bbox = button.root.getBBox();- m: k3 d) M& o- ]  f
  189.     x += bbox.width + margin;
    3 R/ L5 o9 s5 |. s' |6 C
  190.     buttons.push(button);
    , n: I4 l# x1 j# y\" ^6 g
  191.     prev = button;) z7 y8 i! z3 J! t! j9 T
  192.     buttonMap.set(key, button);
    \" _, `) X5 n' P% `  m6 X
  193.     if (key === "ArrowUp") {
    5 C8 R. m* @! l8 k, k
  194.       button.box.height = 16;4 I0 Y: C6 }- s9 @$ k. A
  195.       button.label.root.style.display = "none";  U\" P& t- `+ W
  196.     } else if (key === "ArrowDown") {, {4 _* n; j1 V0 ?5 Z2 w
  197.       button.box.height = 16;0 z7 H% b1 S& x
  198.       button.x -= 32 + margin;
    ) j# G( P( c' @2 l6 S1 Y
  199.       button.y += 16;( v  `3 F& ]7 E) @: i
  200.       button.label.root.style.display = "none";
    5 T5 u5 Q* p  x( j! Z9 L8 s5 J- s
  201.       x -= bbox.width + margin;
    , t8 R; f( x: A1 ]/ ]. L
  202.     }- n+ A6 k' G3 c; G! b4 C
  203.   }( R3 s+ p# X& R, L# D, |/ a: R
  204.   let right = prev.x;. R5 P/ h( F  ?9 l: C( S
  205.   if (right < 630) {
    ( q# d) V$ d& h7 Q, y. z
  206.     prev.box.width = 630 - right;
    \" i: {9 G7 {( }8 c4 D$ L9 c
  207.   }
    1 k\" r0 B5 y* R$ K# _' ~/ V
  208. }8 e4 @& f8 u7 k8 p7 s- g2 Z7 o
  209. // console.log(keycodes["0"], shift, capslock);
    ! x, _# d# h- i% n8 S# x
  210. let active = [];. H! T/ s: o8 }\" w, I. q8 Q# K
  211. window.onkeydown = function (event) {: V8 |8 U\" L5 g9 E( O
  212.   for (let i = 0; i < buttons.length; i++) {
    # \- U\" a1 P2 F\" B; p9 U
  213.     let button = buttons[i];; m' j% h2 J( u, t+ h
  214.     if (
    0 R2 i9 Q' Z' m& t' r: ~/ @1 z' f3 x
  215.       button.label.contents === event.key ||
    6 v2 G2 `- f3 a2 u
  216.       (keycodes[event.key] != undefined &&
    2 N; X% D: H. U# u( _# }# H
  217.         button.label.contents === keycodes[event.key].Symbol)4 z! t/ ?9 {, e1 B1 i
  218.     ) {
    8 U\" G  @& B5 Y  S. U. r* m
  219.       button.box.style.fill = "#f8f8f8";
    & `& F7 ?0 |; B7 W% s' V. m
  220.       button.label.style.fill = "#404040";
    ( q/ }\" `. D; A5 x0 _
  221.       button.active = true;8 L/ v4 Z+ Q6 `1 ?; z, v/ \
  222.       active.push(button);
    / S3 s: M( ^2 h+ e) f: a6 K
  223.     }
    5 n+ L' h% C) U8 ^
  224.   }. C8 J- p9 Z; a1 u2 H' [$ b
  225.   buffer += `'${event.key}',`;
    0 W( j' j4 X- B) _! S1 s6 k: b+ x
  226. };
    ! j4 X; |5 k/ ^5 X9 u% E9 h; V
  227. window.onkeyup = function (event) {
    6 n7 _- S# X% x3 K  R
  228.   let newActive = [];
    / p* s\" A) g: G; c# t
  229.   for (let button of active) {1 V6 x$ M0 D: b\" d; n: y6 b, w. Y  }
  230.     if (
    5 l% i3 m( O6 H
  231.       button.label.contents === event.key ||  O: t7 ]2 [# o\" [. ~2 b
  232.       (keycodes[event.key] != undefined &&: i\" K0 _6 f, g* C& y+ v\" e' l8 A
  233.         button.label.contents === keycodes[event.key].Symbol)$ Y, p$ Z6 s\" A) o
  234.     ) {* B( ~5 n. k& {! x! b. x
  235.       button.box.style.fill = "";# Y: ^2 L2 B- y) g
  236.       button.label.style.fill = "";! W8 I1 w: E* Y4 R( D
  237.       button.active = false;
    # i7 y! ?$ f- \: H
  238.     } else {
    2 S! E$ }2 d# h$ I8 Y1 N
  239.       newActive.push(button);
    ; j; J- W% A! K, s' b1 W: @
  240.     }; u: }' Z. E' h7 z  `
  241.   }: h# u: W) [) M- X* e- @. Z: i
  242.   active = newActive;# M1 k7 O& t- w1 H% q: A; g: D
  243. };
    ' W1 F% S4 }) R+ H3 D( |* Q; E8 R
  244. let bbox = interactive.input.root.getBBox();; P' x. F% K4 A, U9 f2 L8 j
  245. interactive.setViewBox(2 o\" ]2 n% N0 E) S
  246.   bbox.x - margin,
    7 u0 X) K# I! C7 y
  247.   bbox.y,) `6 `/ |, c# K# o* a8 O8 z
  248.   bbox.width + 2 * margin,! d, p6 l5 E3 `1 s; n/ T& s
  249.   bbox.height
    & K1 R5 q) I. p8 U, o! U$ S3 a\" l' n
  250. );
    ) \9 h4 o7 P- _/ p  }
  251. //# sourceMappingURL=keyboard.js.map
    . X& u2 {) B' d3 B5 H
  252. $ d4 {6 f* `& W# u
复制代码
' a0 @  b+ w. l: B1 M% c% T3 r& c- q
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-7-10 08:02 , Processed in 0.480985 second(s), 51 queries .

回顶部