标题:
网页之多变的滚动字幕特效
[打印本页]
作者:
zw2004
时间:
2008-1-21 20:49
标题:
网页之多变的滚动字幕特效
<script language="JavaScript">
* _2 ]1 i- h# ^9 q+ A
- B8 L' D& Y& R/ i# t
<!-- ActiveASCII by Neal Kanodia (please, don't delete this line)
5 n9 s- p# {. c: t
+ X1 b" P8 g' i2 U% w0 T5 W% @/ f
function createArr(num) { for(var i = 0; i < num; i++) { this
= null } }
' L) }- q% P \* b
function fillArr(tx,me,ti,wa) { this.text = tx; this.method = me.toLowerCase(); this.ticks = ti; this.wait = wa }
6 N+ `- r* C( L2 E: ?& H p8 ~
function block(num,txt,mthod,tcks,wit) { blocks[num] = new fillArr(txt,mthod,tcks,wit) }
4 I2 Y) v7 `* `. \' ~
function ms(unt) { var sp = ""; for( var i = 1; i <= unt; i++ ) { sp += " " } return(sp) }
- C/ ~$ h" R. Z& u
function Activate() { if (cblock == max) { cblock = 0; if (iloop == 0) { loops--; if (loops == 0) { meth = "0" } else { meth = blocks[cblock].method } } else { meth = blocks[cblock].method } } else { meth = blocks[cblock].method }
9 y/ W) M2 A9 v6 O ~
if (meth == "0") { document.Active.ASCII.value = end }
+ {- r! \! \. K0 B
if (meth == "display") { Tape = blocks[cblock].text; Wait = blocks[cblock].wait; Display() }
" @9 ?9 |; D/ [( s
if (meth == "display center") { Tape = blocks[cblock].text; Wait = blocks[cblock].wait; half = Tape.length / 2; DisplayC() }
/ q( V3 s) M. k
if (meth == "scroll left") { clen = tlen; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; tTicks = Ticks * 2; ScrollL() }
# {- D+ d/ x1 R, C& ~' I$ N3 ?
if (meth == "scroll right") { clen = 0 - blocks[cblock].text.length; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; tTicks = Ticks * 2; ScrollR() }
3 j, ]3 a2 v3 c$ r$ r
if (meth == "scroll lc") { clen = 0 - blocks[cblock].text.length; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; Wait = blocks[cblock].wait; tTicks = Ticks * 2; half = Tape.length / 2; ScrollLC() }
% ]! ?, B, b$ t- o% I `& X
if (meth == "scroll rc") { clen = tlen; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; Wait = blocks[cblock].wait; tTicks = Ticks * 2; half = Tape.length / 2; ScrollRC() }
$ K0 R7 Z0 V- v ]
if (meth == "scroll cl") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; tTicks = Ticks * 2; half = Tape.length / 2; clen = cent - half; ScrollCL() }
- `8 ^8 E) X% r) T' v: j
if (meth == "scroll cr") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; tTicks = Ticks * 2; half = Tape.length / 2; clen = cent - half; ScrollCR() }
% z- L' j6 S: ^: \
if (meth == "slide left") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; Wait = blocks[cblock].wait; cpos = 0; clet = Tape.charAt(cpos); clen = tlen; cstr = ""; SlideL() }
7 I# m% s1 r) h/ V6 I% V
if (meth == "slide lc") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; Wait = blocks[cblock].wait; cpos = Tape.length - 1; clet = Tape.charAt(cpos); clen = 0; cstr = ""; half = Tape.length / 2; iba = cent - half; ib = ms(iba); SlideLC() }
7 t) Z* H0 G6 L6 \
if (meth == "slide rc") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; Wait = blocks[cblock].wait; cpos = 0; clet = Tape.charAt(cpos); cstr = ""; half = Tape.length / 2; clen = cent + half; fs = ms(cent - half); SlideRC() }
. y, E, c# e: ^0 K
if (meth == "slide cl") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; cpos = 0; clet = Tape.charAt(cpos); cstr = Tape.substring(1,Tape.length); half = Tape.length / 2; clen = cent - half; iba = 0; ib = ms(iba); SlideCL() }
2 F7 g2 k: n; I0 X7 N+ g
if (meth == "slide cr") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; cpos = Tape.length - 1; clet = Tape.charAt(cpos); cstr = Tape.substring(0,Tape.length - 1); half = Tape.length / 2; clen = 0; fs = ms(cent - half); SlideCR() }
" u# ]$ T1 F" f! A
if (meth == "slip left") { clen = 0; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; SlipL() }
4 {5 q; ^1 \' r8 O7 w3 @
if (meth == "slip right") { clen = 0; Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; SlipR() }
+ i+ x0 R( `3 ]! N8 O6 X2 L
if (meth == "slip letter") { Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; cpos = Tape.length - 1; clet = Tape.charAt(cpos); cstr = Tape.substring(0,Tape.length - 1); clen = 0; SlipLet() }
9 Q7 m4 p6 \5 U7 |' b- @
if (meth == "split"){ Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; var iii = Tape.length / 2; if (iii / 2 != Math.ceil(iii / 2)) { Tape = Tape + " " } hstr1 = Tape.substring(0,Tape.length/2); hstr2 = Tape.substring(Tape.length/2,Tape.length); tTicks = Ticks * 2; clen = cent - hstr1.length; iba = 0; ib = ms(iba); Split() }
6 m! n: G% p2 G' [1 |
if (meth == "merge"){ Tape = blocks[cblock].text; Ticks = blocks[cblock].ticks; var iii = Tape.length / 2; if (iii / 2 != Math.ceil(iii / 2)) { Tape = Tape + " " } hstr1 = Tape.substring(0,Tape.length/2); hstr2 = Tape.substring(Tape.length/2,Tape.length); tTicks = Ticks * 2; clen = 0 - hstr1.length; iba = tlen; ib = ms(iba); Wait = blocks[cblock].wait; Merge() } }
0 ]+ Y6 |0 b* _! s( t6 b
function Display() { document.Active.ASCII.value = Tape; cblock++; timerID = setTimeout("Activate()",Wait) }
4 j7 [1 G5 g* F; I7 p5 y
function DisplayC() { var temp = cent - half; ini = ms(temp); document.Active.ASCII.value = ini + Tape; cblock++; timerID = setTimeout("Activate()",Wait) }
" q' S5 ~& M6 \; s$ k0 ?
function ScrollL() { if (clen >= 0) { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollL()",Ticks) } else { beg = 0 - clen; if (beg == Tape.length) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Ticks) } else { tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollL()",tTicks) } } }
5 ~; D# v5 p+ T3 K8 V! s C
function ScrollR() { if (clen >= 0) { if (clen > tlen) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Ticks) } else { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollR()",Ticks) } } else { beg = 0 - clen; tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollR()",tTicks) } }
# }+ |2 `: d2 k: f* `# k
function ScrollLC() { if (clen >= 0) { if (cent <= (clen + half)) { cblock++; timerID = setTimeout("Activate()",Wait) } else { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollLC()",Ticks) } } else { beg = 0 - clen; if (cent <= (clen + half)) { cblock++; timerID = setTimeout("Activate()",Wait) } else { tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollLC()",tTicks) } } }
2 i5 ] }+ J7 n8 F! P6 f
function ScrollRC() { if (clen >= 0) { if (cent >= (clen + half)) { cblock++; timerID = setTimeout("Activate()",Wait) } else { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollRC()",Ticks) } } else { beg = 0 - clen; if (cent >= (clen + half)) { cblock++; timerID = setTimeout("Activate()",Wait) } tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollRC()",tTicks) } }
0 B) _* _+ d5 L; g5 F
function ScrollCL() { if (clen >= 0) { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollCL()",Ticks) } else { beg = 0 - clen; if (beg >= Tape.length) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Wait) } else { tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("ScrollCL()",tTicks) } } }
0 Q/ o6 i! p3 }( C6 Z9 R ^3 \
function ScrollCR() { if (clen >= 0) { if (clen > tlen) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Wait) } else { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollCR()",Ticks) } } else { beg = 0 - clen; tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("ScrollCR()",tTicks) } }
" u7 S! H2 i: a B& g
function SlideL() { if (clen >= 0) { ini = ms(clen); tickered = cstr + ini + clet; document.Active.ASCII.value = tickered; clen -= 3; timerID = setTimeout("SlideL()",Ticks) } else { document.Active.ASCII.value = cstr + clet; cstr = document.Active.ASCII.value; clen = tlen - cstr.length; cpos++; clet = Tape.charAt(cpos); if (clet == " ") { cstr = cstr + " "; cpos++; clet = Tape.charAt(cpos) } if (clet == "") { cblock++; timerID = setTimeout("Activate()",Wait) } else { timerID = setTimeout("SlideL()",Ticks) } } }
0 F( l# l4 q v: w0 a% }, [ y) B
function SlideLC() { if (clen <= cent - half) { ini = ms(clen); tickered = ini + clet + ib + cstr; document.Active.ASCII.value = tickered; clen += 3; iba -= 3; ib = ms(iba); timerID = setTimeout("SlideLC()",Ticks) } else { iba = cent - half; ini = ms(iba); ib = ms(iba); document.Active.ASCII.value = ini + clet + cstr; cstr = clet + cstr; clen = 0; cpos--; if (cpos >= 0) { clet = Tape.charAt(cpos); if (clet == " ") { cstr = " " + cstr; cpos--; clet = Tape.charAt(cpos) } timerID = setTimeout("SlideLC()",Ticks) } else { cblock++; timerID = setTimeout("Activate()",Wait) } } }
% [* A( i+ K0 e% x* e/ E9 a+ o2 T
function SlideRC() { if (clen >= 0) { ini = ms(clen); tickered = fs + cstr + ini + clet; document.Active.ASCII.value = tickered; clen -= 3; timerID = setTimeout("SlideRC()",Ticks) } else { clen = cent + half; cstr += clet; document.Active.ASCII.value = fs + cstr; cpos++; clet = Tape.charAt(cpos); if (clet == " ") { cstr = cstr + " "; cpos++; clet = Tape.charAt(cpos) } if (clet == "") { document.Active.ASCII.value = fs + Tape; cblock++; timerID = setTimeout("Activate()",Wait) } else { timerID = setTimeout("SlideRC()",Ticks) } } }
f t& O8 j0 f' w8 C! F3 z8 K
function SlideCL() { if (clen > 0) { ini = ms(clen); tickered = ini + clet + ib + cstr; document.Active.ASCII.value = tickered; clen -= 3; iba += 3; ib = ms(iba); timerID = setTimeout("SlideCL()",Ticks) } else { iba = 0; ib = ms(iba); clen = cent - half; ini = ms(clen); document.Active.ASCII.value = ini + cstr; cstr = cstr.substring(1,Tape.length); cpos++; clet = Tape.charAt(cpos); if (clet == " ") { cstr = cstr.substring(1,Tape.length); cpos++; clet = Tape.charAt(cpos) } if (clet == "") { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Ticks) } else { timerID = setTimeout("SlideCL()",Ticks) } } }
. b2 {9 @6 J$ U+ Y6 T4 Z {
function SlideCR() { if (clen <= cent + half) { ini = ms(clen); tickered = fs + cstr + ini + clet; document.Active.ASCII.value = tickered; clen += 3; timerID = setTimeout("SlideCR()",Ticks) } else { clen = 0; document.Active.ASCII.value = fs + cstr; cstr = cstr.substring(0,cstr.length - 1); cpos--; half += 1; if (cpos >= 0) { ; clet = Tape.charAt(cpos); if (clet == " ") { cstr = cstr.substring(0,cstr.length - 1); cpos--; clet = Tape.charAt(cpos) } timerID = setTimeout("SlideCR()",Ticks) } else { cblock++; timerID = setTimeout("Activate()",Ticks) } } }
" d5 x) p, e' D: @0 w( V
function SlipR() { if (clen >= 0) { if (clen > tlen) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Ticks) } else { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("SlipR()",Ticks) } } else { beg = 0 - clen; tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen++; timerID = setTimeout("SlipR()",Ticks) } }
/ i0 M" J; L/ g& {# V( f. P
function SlipL() { if (clen >= 0) { ini = ms(clen); tickered = ini + Tape; document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("SlipL()",Ticks) } else { beg = 0 - clen; if (beg == Tape.length) { document.Active.ASCII.value = ""; cblock++; timerID = setTimeout("Activate()",Ticks) } else { tickered = Tape.substring(beg,tlen); document.Active.ASCII.value = tickered; clen--; timerID = setTimeout("SlipL()",Ticks) } } }
& t9 U2 T# b# X: v( L5 b; s
function SlipLet() { if (clen < tlen) { ini = ms(clen); tickered = cstr + ini + clet; document.Active.ASCII.value = tickered; clen += 3; timerID = setTimeout("SlipLet()",Ticks) } else { clen = 0; cstr = cstr.substring(0,cstr.length - 1); cpos--; if (cpos >= 0) { ; clet = Tape.charAt(cpos); if (clet == " ") { cstr = cstr.substring(0,cstr.length - 1); cpos--; clet = Tape.charAt(cpos) } timerID = setTimeout("SlipLet()",Ticks) } else { cblock++; timerID = setTimeout("Activate()",Ticks) } } }
' u4 ~! f j9 q, w- q% `
function Split() { if (clen >= 0) { ini = ms(clen); tickered = ini + hstr1 + ib + hstr2; document.Active.ASCII.value = tickered; clen--; iba += 2; ib = ms(iba); timerID = setTimeout("Split()",Ticks) } else { if (clen <= 0 - hstr1.length) { cblock++; timerID = setTimeout("Activate()",Ticks) } else { beg = 0 - clen; tickered = hstr1.substring(beg,tlen); document.Active.ASCII.value = tickered + ib + hstr2; clen--; iba += 2; ib = ms(iba); timerID = setTimeout("Split()",tTicks) } } }
% c7 d, X3 v/ N1 \% d C
function Merge() { if (clen >= 0) { if (clen > cent - hstr1.length) { tickered = ini + hstr1 + hstr2; document.Active.ASCII.value = tickered; cblock++; timerID = setTimeout("Activate()",Wait) } else { ini = ms(clen); tickered = ini + hstr1 + ib + hstr2; document.Active.ASCII.value = tickered; clen++; iba -= 2; ib = ms(iba); timerID = setTimeout("Merge()",Ticks) } } else { beg = 0 - clen; tickered = hstr1.substring(beg,tlen); document.Active.ASCII.value = tickered + ib + hstr2; clen++; iba -= 4; ib = ms(iba); timerID = setTimeout("Merge()",tTicks) } }
- P4 X( l1 v& O8 [1 k' i! A
1 W& A9 t7 ^; e5 B' |
/////////////////////////////////////////////////////////////////
! k8 ]% o. C; q0 r
//# User Vars
: E" u0 F+ p& c) q% P7 N4 w+ M. H
// Number of blocks (see bottom) to be displayed.
. S) u" k. l. w! H6 }& j. Z
// ***COMMON ERROR***: Make sure to set this value according to the
0 x f; s4 o( M8 z- W& }
// number of blocks (always the last block # + 1)!
2 n( v# G5 f0 X( T& I0 i$ f3 z
var max = 18
! y4 b/ B6 M, t
+ }1 S; @3 R v7 b' S
// Don't change this!
3 n o( {# n; }! v2 D+ o# r4 R
var blocks = new createArr(max)
4 ]2 g( F8 O. ]* z2 h
0 A) Q4 S" K9 Y' P& N6 G. `% b# j
// Length of textbox
, B7 _( A/ ?$ |6 B7 j' i9 `
// ***COMMON ERROR: If you change this or the length of the
* G) z$ n6 H) L% ?
// textbox, remember to change the other accordingly.***
" |2 ~8 T0 Z: }8 M/ H) R+ a2 B7 w% O
var len = 50
5 B& P" Q. S2 V4 S! t+ D
7 c+ N9 Z+ i) O0 U5 F% g
// Number of time to loop ALL blocks (use 0 for unlimited)
V1 C7 d1 `! B6 u, t$ R2 v6 `; f6 w
var loops = 0
( ^; L# e1 i/ O
9 r+ T1 M; t9 u3 j; C0 A' v
// If you set the number of loops, set the final messege
# z6 C# g) U( q( p6 Z A3 K
var end = 'End of "ActiveASCII" by Neal Kanodia.'
8 G! m( _9 w4 B% @9 o
6 g4 F8 i* Y* y9 E' A( ~
// Use this format for each string (starting at 0 until 1 less
: f1 @8 y, e1 O/ }& N9 w: S
// than max):
# L. ]3 u% S7 s. z% b6 g( Y# L
// block(#block,"Text to display","Method",#ticks,#wait)
$ X w3 V4 ]+ Z8 d
// example: block(0,"1st block.","Scroll Left",25,0)
7 T5 K9 _8 {, u6 Z l2 X) Y
// ***COMMON ERROR***: If you add a block INCREASE MAX BY 1
& b6 y6 M- D, k) e& R- y9 P! S' f
// ***COMMON ERROR***: If you remove a block DECREASE MAX BY 1
* j& o' k+ V0 |! h" k" \
// ***COMMON ERROR***: Check the spelling of your methods!!!
4 Q' `. J* i% k! P) N* v
block(17,"欢迎光临七色风!","display",0,500)
4 i( W5 @" h' @: Y& I
block(18,"新一代网络商城!","display center",0,500)
, o! m, D/ d/ j% D# B, Z# w6 C1 I
block(2,"新一代企业信息系统!","scroll left",25,0)
# k, k% e. I& M. W4 E7 O
block(3,"全新的自助建站模式!","scroll right",25,0)
7 S0 J* }( P O9 g, o
block(4,"欢迎光临七色风!","scroll lc",25,500)
0 s3 D+ { q. u! M% n; r) G
block(5,"欢迎光临!","scroll rc",25,500)
0 l% u9 a; j4 K
block(6,"欢迎光临!","scroll cl",25,0)
4 ~9 z0 Y7 K- |% K1 U) x% s
block(7,"欢迎光临!","scroll cr",25,0)
8 P( y# C0 P1 r! @+ w
block(8,"欢迎光临!","slide left",25,500)
' ^) o* L4 [% z2 V4 x1 C% H5 D
block(9,"欢迎光临!","slide lc",25,500)
- a. a. `5 k2 K3 A+ A( S6 A% @
block(10,"欢迎光临!","slide rc",25,500)
2 Q" l- ]1 H8 C+ C
block(11,"欢迎光临!","slide cl",25,0)
! V& k4 y/ x5 m/ y; E7 S4 C5 e x
block(12,"国内域名:110元!","slide cr",25,0)
; F" S u$ E4 h/ m' ?9 J3 o; g( M
block(13,"国际域名:58元!","slip left",25,0)
- O3 G* ~4 r: y5 G& v- d
block(14,"欢迎光临中讯数据!","slip right",25,0)
: [/ }0 M* S; n8 i
block(15,"欢迎您的光临","slip letter",25,0)
1 O" r8 P* f, E
block(16,"","display",0,500)
3 K& M7 l5 C) O% d8 n$ Q- c
block(0,"欢迎欢迎!","merge",25,1000)
8 r, H, o/ e) _1 K0 z
block(1,"欢迎!","split",25,0)
4 q7 R7 Q6 ]8 {$ t0 J8 Y9 y3 r
//End User Vars
# w+ N& a% ?6 q- M4 C t5 H. u
/////////////////////////////////////////////////////////////////
% C- v1 U' u& ~( Z2 s m8 L5 c
3 a3 V& _. Q2 J6 D& D S( Q
// Don't change!!!
0 q; z# x, W+ D
var tlen = 2.4 * len
+ _3 R' C6 D$ y6 I* \( r
var cent = tlen / 2.2
8 y& F T g# n) @: R6 c8 P
var clen = null
+ v+ {/ k2 g! ~! A$ B4 i9 U3 b+ J
var tickered = null
l; p; J3 o* l3 v5 ~2 d- _! V' A
var ini = null
. N! z4 x* v* c$ z
var iloop = 0
i7 D9 Q6 T- k! L
if (loops == 0) {iloop = 1}
" ]; P8 l2 S! C% n; F
var cblock = 0
8 H9 x4 \1 m2 |0 R+ u1 A# \
var timerID = null
; s! M2 v: n1 D; ?/ Y) |
var beg = null
" [7 ~" j+ c- M* h1 B
var clet = null
n8 e. R% J1 q: _8 f6 ^, ?5 }9 Z
var cstr = null
1 P3 y' t0 a+ a1 T9 y) n+ V* V
var cpos = null
$ i+ A+ }% Q1 z# o: T
var ib = null
' w: K& l1 f- s. {/ M* l0 ]
var iba = null
c7 |# K- k! n! V2 R" I/ b
var fs = null
4 v6 Y! \5 j0 z- W
var hstr1 = null
! Z1 E. r, ]. p/ O; _' N
var hstr2 = null
/ I* |# s- ?' S' S
<!-- end -->
1 l5 l2 H" E3 n8 k: |
" x' Q9 w% Y5 f, F! c4 T$ E+ `
</script>
# i1 I1 ^% l3 }' q5 Y# S$ i
<script language="JavaScript">
* v" F+ t9 Z. d) t3 i4 A z! O
<!--
" Q% b" f7 ~ p s; g
document.write('<form name="Active" onSubmit="0">')
; K6 r( j4 J/ }
document.write('<input type="text" name="ASCII" size="50">')
. H! b. ]9 C9 F" G! s9 r1 Y
document.write('</form>')
0 Y# O2 {) X, `
Activate()
. X- Y9 w+ b% C' o& y' q
<!-- end -->
; w/ o- G2 Z. N/ Y$ f
n( d1 l4 V' U4 o0 F
</script>
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2