From f9c501a0f920c51e3d1951e4bc8eabb775645eb6 Mon Sep 17 00:00:00 2001 From: rucky Date: Thu, 17 Feb 2022 18:50:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E5=81=9A=E6=8E=A8=E5=B8=81?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- babel.config.js | 44 +- src/assets/css/global.less | 12 +- src/assets/css/package.json | 5 + src/assets/images/loading/bg.jpg | Bin 0 -> 101976 bytes src/assets/images/loading/loadingSprite.json | 83 + src/assets/images/loading/loadingSprite.png | Bin 0 -> 126524 bytes src/assets/images/loading/snowSprite.json | 26 + src/assets/images/loading/snowSprite.png | Bin 0 -> 2884 bytes src/assets/images/suggbg.png | Bin 14829 -> 0 bytes src/assets/images/suggbg2.png | Bin 13508 -> 0 bytes src/page/index/Home/index.vue | 6 + src/page/index/PushCoinGame/game/animation.js | 668 +++++++ .../index/PushCoinGame/game/createView.js | 496 +++++ src/page/index/PushCoinGame/game/frameData.js | 44 + src/page/index/PushCoinGame/game/index.js | 303 +++ src/page/index/PushCoinGame/game/layout.js | 292 +++ .../index/PushCoinGame/game/maskCreater.js | 26 + src/page/index/PushCoinGame/game/pathCodes.js | 9 + src/page/index/PushCoinGame/game/preload.js | 43 + src/page/index/PushCoinGame/game/question.js | 1630 +++++++++++++++++ src/page/index/PushCoinGame/game/stage.js | 177 ++ src/page/index/PushCoinGame/game/view.js | 539 ++++++ src/page/index/PushCoinGame/index.vue | 43 + src/page/index/colorSort/index.vue | 149 +- src/page/index/router/index.js | 11 + src/utils/plugins/easeljs-1.0.0.min.js | 18 + src/utils/plugins/preloadjs-1.0.0.min.js | 23 + src/utils/plugins/soundjs-1.0.0.min.js | 26 + src/utils/plugins/stats-2d.js | 54 + src/utils/plugins/stats-3d.min.js | 5 + 30 files changed, 4639 insertions(+), 93 deletions(-) create mode 100644 src/assets/css/package.json create mode 100644 src/assets/images/loading/bg.jpg create mode 100644 src/assets/images/loading/loadingSprite.json create mode 100644 src/assets/images/loading/loadingSprite.png create mode 100644 src/assets/images/loading/snowSprite.json create mode 100644 src/assets/images/loading/snowSprite.png delete mode 100644 src/assets/images/suggbg.png delete mode 100644 src/assets/images/suggbg2.png create mode 100644 src/page/index/PushCoinGame/game/animation.js create mode 100644 src/page/index/PushCoinGame/game/createView.js create mode 100644 src/page/index/PushCoinGame/game/frameData.js create mode 100644 src/page/index/PushCoinGame/game/index.js create mode 100644 src/page/index/PushCoinGame/game/layout.js create mode 100644 src/page/index/PushCoinGame/game/maskCreater.js create mode 100644 src/page/index/PushCoinGame/game/pathCodes.js create mode 100644 src/page/index/PushCoinGame/game/preload.js create mode 100644 src/page/index/PushCoinGame/game/question.js create mode 100755 src/page/index/PushCoinGame/game/stage.js create mode 100644 src/page/index/PushCoinGame/game/view.js create mode 100644 src/page/index/PushCoinGame/index.vue create mode 100644 src/utils/plugins/easeljs-1.0.0.min.js create mode 100644 src/utils/plugins/preloadjs-1.0.0.min.js create mode 100644 src/utils/plugins/soundjs-1.0.0.min.js create mode 100644 src/utils/plugins/stats-2d.js create mode 100644 src/utils/plugins/stats-3d.min.js diff --git a/babel.config.js b/babel.config.js index 2883d88..675e52a 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,26 +3,34 @@ // plugins.push("transform-remove-console") // } module.exports = { + // presets: [ + // // '@vue/cli-plugin-babel/preset', + // [ + // // '@vue/cli-plugin-babel/preset', + // // '@vue/babel-preset-app', + // "@vue/app", + // { + // "useBuiltIns": "entry", + // corejs: 3, + // "targets": { + // "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] + // }, + // polyfills: [ + // 'es.promise', + // 'es.symbol' + // ] + // } + // ] + // ], + // plugins: [ + // "@babel/plugin-transform-runtime" + // ] presets: [ - // '@vue/cli-plugin-babel/preset', - [ - // '@vue/cli-plugin-babel/preset', - // '@vue/babel-preset-app', - "@vue/app", - { - "useBuiltIns": "entry", - corejs: 3, - "targets": { - "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] - }, - polyfills: [ - 'es.promise', - 'es.symbol' - ] - } - ] + '@vue/cli-plugin-babel/preset' ], plugins: [ - "@babel/plugin-transform-runtime" + ["@babel/plugin-transform-modules-commonjs", { + "allowTopLevelThis": true + }] ] } diff --git a/src/assets/css/global.less b/src/assets/css/global.less index f951b88..50771f5 100644 --- a/src/assets/css/global.less +++ b/src/assets/css/global.less @@ -139,12 +139,12 @@ // } @font-face { font-family: 'iconfont'; /* Project id 3110299 */ - src: url('//at.alicdn.com/t/font_3110299_cqiu2pftora.eot?t=1644904387545'); /* IE9 */ - src: url('//at.alicdn.com/t/font_3110299_cqiu2pftora.eot?t=1644904387545#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('//at.alicdn.com/t/font_3110299_cqiu2pftora.woff?t=1644904387545') format('woff'), - url('//at.alicdn.com/t/font_3110299_cqiu2pftora.ttf?t=1644904387545') format('truetype'), - url('//at.alicdn.com/t/font_3110299_cqiu2pftora.svg?t=1644904387545#iconfont') format('svg'); + src: url('//at.alicdn.com/t/font_3110299_2rqgsifmfel.eot?t=1645077129221'); /* IE9 */ + src: url('//at.alicdn.com/t/font_3110299_2rqgsifmfel.eot?t=1645077129221#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('//at.alicdn.com/t/font_3110299_2rqgsifmfel.woff?t=1645077129221') format('woff'), + url('//at.alicdn.com/t/font_3110299_2rqgsifmfel.ttf?t=1645077129221') format('truetype'), + url('//at.alicdn.com/t/font_3110299_2rqgsifmfel.svg?t=1645077129221#iconfont') format('svg'); } .iconfont { font-family: "iconfont" !important; diff --git a/src/assets/css/package.json b/src/assets/css/package.json new file mode 100644 index 0000000..8fccbac --- /dev/null +++ b/src/assets/css/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "easeljs": "^1.0.2" + } +} diff --git a/src/assets/images/loading/bg.jpg b/src/assets/images/loading/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97c5ea665557d750ef78e5240aed46f67f7db9c1 GIT binary patch literal 101976 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

K5#x;{jiD`U*IpH68rOGE?LryROm+i z?>qu7%;xJV?$TqPqQuA|@W1}mi;5SUqZhhj>QDdpCATw?65*oE1a0nUdowi$O=_wg zp2b9E{0kJvcFq3bk|sV^Z(PcjFJwmebPv++8DB?t$4RKv8B#CP=&G%E_zejjBleNq za4ch^FPccfMdLHUsTe`}1?%g;Y;ea*)xo_I8#Pf?bg=@}fN3@NR$=zwbv6UiQ?O-3 zqd0p3xS(D8$eSbU=t(l}P>EYD22pdNcjh9+T%4-dVK~X%xO8g}uFV$8=>yP^f$Oux ziHIk_B!G3Zs=P3SKV}G^2(2Tk!)eImL-qAXe2Cxgo6bcXS5?oRo%UalL^VfH)`Y|l z11iW26pXSvz-OI19YR9ejXC3pf7Emo<+e50giMC!(7W?=$RC)73*pE7J=L6sbeKHn zb3@QgfQWUN+U&sxSDMvx@7L)CTLMLIdv$O1Y06&$#KWeHx?7dm9ATB)(f&DZg<7Q(xuh{LD(NpGx+6B8|BAvz64}`op|y-;onjI^lQ&9_#s- z2fhN7Y3hIpuIRQQ%4&a3S8jSg)fOFk`~9U>9YT*YJ<4xxQ8J>JXgm#gt%f=(Ih9*(3IBS@%l4uIbb) zgLZ7Vvng5_IB;CtpR2*>wyugD34_rh82$8uX+0_eJE6}Y9)Qd<`kZ~f#n8sE3ZdaPN&riCKI^a4wu`;5Z4cN zAbrIzql&s(y%VUitQ7;eJ33fRo@V77=8@^NH+ZF4Ic&3qj+uU7cKQ|Q{D*gq3VteC z_1gOl+|~|>ojLT+@|1PdltBH0*Q_nwwk1aE1pB0P-DP?RQ6jDis!iZWYZ6UXLcVE| z4q}BNl}(Yck({fD$)Oml@J5d1mGmRjK4t11kG>qnsQ|7+_-lb?Uk++t(CoX>Z6Fr8 zBlI~e80$+>xLJT?;CV>5x?r-~*%U<`NLK*g+AcG6l?S^oVof^m*o~QbGCKCuytm5X zkatdZ{B=zV@nm+;=bDav}+N&@i5E;7E@5@#;%2TkB6ucqv)Z#)DGnZ|>f z-oHJz5IAdb_KH9n(X2rRe(9&=@=jh!W!5pZRgBGdIZ49FNF!uge-%MAO50i*T}R@b zvL{5NG6!iq$lPSfg{^#Y}!Yz4P_b|Y~@0~ zE&?Y838P1Yd|%*tyP}<_U9FTEXRGYwnP-U5Q@s?cE-&R+B%U+YITaPti8U77@*#)_9S4C6_XeTK zVc6Ts%;pgJT1sa?sQQK&IkRj#dc0JgUX;-LsDp=K-_9^UM0l+C3NWwFGV~*xQX-OO z6MQsLF3ROfRI$pz2-n>fpMq?gW6`7`!v(>XsR^FZ@^ zUP$WtPe)oNKtc$4dU5}l0qI}qg1t9lV|T$jX1i0;J64i37cm%h5RAF0m^}Hq8~*s5 z;J;(43l_e<~kAC@%^00cLCPp_j z>jG@WQ{I(XyP;EH6N%fcFR0S!pnTUw*oHL^acun1l@ApGt^XfSi_=Pyafh}1Xg=r=cbM2bSp@qTIZn%5a^UGK1~Dlx zo;vc8!xJc@F8cB4zo;=z<3@;ORHj~RKy6O>&98>QeqsQdQ-Jz_wg`R@ zHgvsc8k}a&Lu;WVgO?r9w@{1jRAj%??b58`fDdwjrRm6G>u*nB0*56&hsgb%P$i^# zXS#*L+o;~ht6Nvouoep3hxLX_M!c)DUbx8|2ihg8VM(hI+T$7f5Q~`Wzx^^{-I~Mu zIy#WdCaDeM!e$wk!PKET$ECCx#_BG@U~De-**I*h9uLu-C~e;rY=4CgsDrMHk)27{ zPlW&GDOSe7qw7QS=a{Uw&u20(c8W5M6d+xaT!ⅆ1-a+0InE2+``z;WPOWYwfuV@ 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 FV1h98e3<|M literal 0 HcmV?d00001 diff --git a/src/assets/images/loading/snowSprite.json b/src/assets/images/loading/snowSprite.json new file mode 100644 index 0000000..00b6b34 --- /dev/null +++ b/src/assets/images/loading/snowSprite.json @@ -0,0 +1,26 @@ +{ + +"images": [ + "snowSprite.png" +], + +"framerate": 20, +"frames": [ + [1, 1, 77, 82, 0, 0, 0], + [1, 85, 57, 55, 0, 0, 0], + [1, 142, 46, 45, 0, 0, 0], + [49, 142, 15, 15, 0, 0, 0], + [60, 85, 8, 12, 0, 0, 0], + [60, 99, 6, 6, 0, 0, 0] +], + +"animations": { + "snow": { "frames": [0, 1, 2, 3, 5, 4] } +}, + +"texturepacker": [ + "SmartUpdateHash: $TexturePacker:SmartUpdate:5282c6d67fd56100f124116392fa0dda:00bfe33730c22fc59892c575329c8865:784870e134e9ba9b2fa4be9322fa91d0$", + "Created with TexturePacker (https://www.codeandweb.com/texturepacker) for EaselJS" +] + +} diff --git a/src/assets/images/loading/snowSprite.png b/src/assets/images/loading/snowSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb9ccbdcc7458a4ff1097bd94defccc3e3a3ec7 GIT binary patch literal 2884 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

3&N=Hr@He5?n^ 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 vg%7Nb2J6|4(xp=b2(z||aaW^xlmW0C@Th diff --git a/src/assets/images/suggbg2.png b/src/assets/images/suggbg2.png deleted file mode 100644 index eee712ee0a7e6dc9d296df44ed6784bd5139fad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13508 zcmd73Q}zA<_qktg zf0&t?s=Zcs?_NDsyY@t?C`lv1Oj#JI*&PhH}sG)y!2w4W6&dSR{DNU65ruU+j zcJbkUOnW6UbKqoP1pvU&FDoIc?zM3-5cCNG2+V)0z^Q=zZ~4D7cLG^X~SB?cPL$l24} z()m)w!H8d@f)m^y`s}!uv#~eo51LN9W1bs3=TzhCG^-`q%1!d)=Ks0>JATJTThFCHI^n9~ z4?lNF5i-`1z-)5s+|+2sp1IDMZ;ZmxX`mOLv-Ev+$=*I9<1@nW>wGiWjJL)PxEHq8 z&!hWJQh3WTK=J@~<#ncvg1ojqB9wtlZVI}6pKU|G=&xQK<#r1(f7Id<7N{-Mf6%BJ z>S;^0VG&EhmUGPxm_kg6!n;&;jDgMYW$Y1I#QY0e{ZyVIo7BG2-G}e4s?%T!i{1Oj zW>2aHV&ZF7X-vbxJnM+>LIRB{iV>TzQ>b2K|9acC|AAT|&vlEk4zm2r=m_jE=eT#X z{7ps2TR$j5M%6l;@o2_sYZY%~g9}E!Ns(ZcvL^v6XqJ+DLWp>9qmPeGj%`*z@OHKK zTIP$H-=9k_50u|%$PMcv3wpUuOPcF8%Qjwcqho5E23d%71v$LVg|q!LH@9zj9v54RfLxCcY*utbjf ziSd4a3CfDh#D*C^LKt({Gi_d3-)KGDTW`o3xFn^Skm#t$q(IOMB-Q+t8#<7>pmOc&&vHqE@YLQ+YUv}s@}8e?DuK8`VwPFNj0S4%M+0)j|}k_ z(a0@ zEdI@}`b|{p;@_bu-LVhjEfR@)nZSfzF8&~0PSCG;Dm*dbhOM)|%RaJp?1M}|N#mxJ z{3U$k^oGR!8kLF2gnnO}^t8SuhM>*~Fy2o^TN0RkKi(vw%a!xI=sqv{N-(4)0t};^ z(nzGv!n!Hf0!7E@n`XC@Dtj=kwx=)U$Hgu#7!SOlr4F@~{L`<65(Kgf-mp3vLThOH@TSf-6LYZ$4a&fu;?2z*YY9io)T5d=SeJ%1$^ZE>xRY4m9O+TgDi^N@EYLGQ!Z0<{I zO2w-TjuVEs={4tlc!1)Zp==ZtdiYCX8)8H)V+XfCXYI^;Fu-WVwxY42(q}`|mk1u! z<|`kAZ_9!Dn`lhsCQq(b8z)nd({jeWaGtHCS`rpMA^N`TO#}^xcFqkcBw#pMy`7YQ zA(7TKniZ=wedfVUH5{knwS}sY*&B~c<1qLGK-GI27IMokn2m0RH{apPM8`H|O~p#m z&X5t{I)WYq{F7jsiv%;XRm$gb;qq){j_-l)0o|>S&c}|5uF)-5k>g)C=EdFyEX!v# ze^2CaIdHGDU$anLh?eI5D_Et<6!k@~vMy5WH2IZmF49UF4;I2C01cMX_>kpF<&tMn znrXPAtST3*rTIKO379N0Ltr7VTc2iwtp2uEgx7QDvhvfbrNmfwZ&ClV)9R(9DYHts z?A>$vA-&cxk#2px1SZ z=eWPK_@-XMeo*=*W|kzc{%djEN!l~=hMJFuMq6{0({m--L6}=56Qx@#n`&!PLEg^A zz1M6gl(UL4SI>|sM1jG{7%YD6(snuAa@@%h z;==$2jlEt!6~5@T2A2%#r$VtZt~Wyqr8pHdwe-sQkXCcEv@ZsJxynRW>=8<3-j94` z1H8-}k&0_$@wzx!W$*Ais;6G*Cfnm~>TK{Bg!bYHjf^CkEvpW(H;S6IJl2QisHa0+ z$@wdp9k=>CTU~lf`C`-~YSR8l2ZdV2?el(88`HiRs}tW=9mo5c==95%h!Z`c^mOdh zW}Erw*V+*wfB3QU&3p+8L^SaC ze4E}-WJKbyNWUdD(ruq5_`54T?MGqjxeT5_eq_G25cr2@eZKdGlbK+s=h03wE*|wI zBUxYkg-IbEk&G8OojFLP2$4zdQmR$e7k2L{f5z;cpyA9GgboHT2TK?vvCQ?_qAAXa zTt>Kk__SP^w-gwPgf3C=C(ydf)CHAMDW`GXYo?iN?V_M{XC;uTq$zACzi-pZcog`@ z&ypm5cF))hds^d-;&c(}A?hY6#;S93NwpnQr-eTnL|QQLHehbbd&9#knfJHw9$y1x zg0KNV^|uoYGF13Izpz2ikJUDZE$xCiHFEwhukYK79+K{aI%&nH<30<|fUx1Ihu|Qc ztpF+LW0((PDqDVFN)lJ|RQ8$j^P|oy{|?+f4x|-o-%|7B-0&+iN)ZlCJf$sG$#B0; z4{G0q;aM_?k#qd-Urs?!ZqGT1wbkfW397=ARjuyIM8B7Oc?B6{3hsv;UrOYEXH$iLa&9SMUH<-e{faJ)obbJ;BB-V5LX))L`73mYmhzE9Y!sFXKDBy6$| zZq0js1Q=SW3CXQ9t1FXWzYMjRBR}%i=Xa6oyULWOKrK^QxcWKdu>Rp4?4di5P30b= zRE9pJ27Qm+W*Re^QD=$@Bm-{h;n6q*Ers>$CHFQ1%Ll%jg>lm*A8XH7K%ZKz<9d*_ zk#uDUNeEVvpLbg~QOZGA9E9IZB#>R@$(5Il3rytRhL;juFB9hBCql?YpS6T_?VY}D zCS4O4&e6;oLaW77EiUY?z9Y=y#^H3KgFS{D9oJ&PE>kLkrig(;Wm(`Jz?zZ&Hq+)qBIIXi3)_DJH`>w}@h!;GC zK>O?r?T!nd;A*&v!$3>#^2@JaU<8H_@vDDU0Y0Gj9n9+*uNY0tNAmB7@i_C|C4ekGW2zioQBN(D^I7 zt#WIqv3@+)ExQZYbcx80@)R{3Q>J^ZA1KBBgF-~#~`0c-Q4cmf| zzZFSvllV-dcto3>@ZCxv(8E(ETD#vOS4w-*l}uZ(ng&OVz-xtdPm;HeN4n8J^Y^|} z=`^53CSqMGR&;T*qhutASqBFEy9>`(W(*)YC?&4yAxz8^v(#sW+D#VI0dO9C>^Y1$ zxUOC)Z*y*ch&l=a_qSe4SMu$B41cnD9e=!giY>PV=mIPb>$dvBS%?UsDSVm+j2u#Q zd2%C#Hcz&$h0V8rKXI>OHO7g{O#_Ore4ikCKzn_E>$_mSBFFyjfpO6fCMifl8d zxw+YziMpU}9EIm_H#Zvm(Sfn)SG)QgJ4SM!UrxWnhbg;L*rJ3vpQg}_Wx}{uM4mzP z!IvMc1@P^If{M6{c{;;dEKPkX7bYhpRhS+YQQ?|}j|^Y;I^3F(_j*raa7gT;?R~7j z{W+h&72FenF#snTaSCsB*|FEWthgE2{d426Ci7a_J}99bt8^J zBAaW7H665&tcCb%-(@f3p?7t$hWr&2HXu+F70{F%zc4E{Wk$>Ow^V%Lu)cg-buL%z zn@YQI_FB1HM6k2cwKZB8Ki7rV4Xm;hANu92dkj5ppJaXMjYecWwvB*y@~gaNM1O6y znVx&kYx!VD+iq%Z>5t|g%h^_6!Re;KoV{)HP27@>i8gg?2IYm?7U6>jT;B*PS^_&3 z9W=aD3|PHrb$m#(q{%|LFWyax3JW*`o_w2vTS!^96@=2jS9RiG^SVtTjlu(`g?F+5 zM;kNxo{C!85+s1pS*ka|I7ywNskaL)Pn2^<@(+gX%olyjHDchG3eM-%#&M4Zay&b& zI!I$|kSx<6aO9`}`Eq#bmyq%=p$g{>e}C$#tyHgJCnI7k$Z6Bp)<36=CJtVw99JrleVi~eqH8!5Az>P7*WakZ1r(+2+W|uu~M|yNfQbs zi6g65IsI-5_5BJR?8V8)=48)4iJa$^@>kL%H{Hu0KqpHI(ANFMug7cNDX0I6w#X%s z?{A`p^v}K2^1FhI3(5q+)l*|lU-i18eSd}9@xi^_Yo(vi4&?a_f1 z?R*1{1NoK)!bp>DDZ;6#BH=bokrYe_JL`jjFmwAAZsA(rf`5u+m`=FjJo>3kM3Vn@ z8^Z<@}$ZexIoRM%YpCKJSQ__&=GnU0!>w9Br;i|c> zpgMWMf5mU(I$!*VI7n=9Ar;UGBHzb>O0J9#$C_>IF8(8d=LR|<{0^z#gc|tmQr#Af z$JU6eqYtJPZ_z6A>{rc?lRaNErY`F=ZnAH7g4DoW1KF7ZCH zS;pKKH7X&pITut4e(FX(x%$^m-QhqY5-!45sI5Hfia#-OsXXB^JDgX$CSm^)U^T6o zSw-GhCsE+rIw?~+|1;4qkbBssPk+sZ^=KmMyEi_7PpgkP88(B&*< zq*-i0Ak3W{udH=jATb;~2O=aod!0bU+FOdj7Qx@Tp69pkfsNFlzOnjL20~3dSam8` ztBUeBQBD^qdeynhG}qU|aVzos^}#xJSac~38$Y=Sx!`7Q>3`vNde)tRznVFey%_d2 zh1Q#q@|ERgsuZo$$sP@ENDmr2QH6fl!W$@iaiqCKs|7s@rsXqVf-{jgkC;6fWfCZ| zaz+>naO%yMES_vSNI(|$Y5e}OJ(spdws1reyZ~iR;tedh2{+j#8A*#c%_H!6;Y?I5 z$9}o1Fr{V#`aN!pJuId2phD+Qo(N%R9h zg^waK-J^G`Q%Qz1)XQLaNx1_5dpR;&5><%@S;qF{^ubNqgpYy&dgwV1Gt`2j@w5!Q z#*Q=U5Mnv!O=@}G>&)u9$*RLs#(Z{`4F8K|o=$S|Z6#anckitJhiw-UTQ~Bb0*i5{ ziVf5GqH2f`(8VbVJXiL)h~pjIu1m+Hs&zjp(3;hwAJH*s=j0DBw7$z+V2_g!(x4R z^UItKVHpKc43ndnuP*B8#f+JTTyRp;s#UgW6^%YrZ@-5@JooNVk-v1#e-uJ$On}jlp2%yG^zU7Q!c}&S$keq4mh22D+K&$Ha zb?9UXOel@U2={O!5H{V2ydIi4B~L@*L?4EHt811@Mi{9%DKXe$%5mDTrc6tBCo(HR zpoH|PTtqDC=Oee~tAA5XQ?hKz6ZP%937J=Fuh)IrVN0LXyMvOdJA%OFDKD>n@>`xy zHp!hEVHp~76mIknhsUE1Nl4Ll`Ny()TAR8ke;~Rbhxo@nL7ux};MCoX05Z|5Os9Kv z2}Y^4Fx}iWAvK}5zH_my*#ctAHRVoO0`hWj70viTabR;b!@@Nsfp^j7_N-x z@iu;0pICf)n9pB7{M(?6%95AX$f7_OvYtV9SwebpH;CrfAf-^N=;FsENBJaVgM6-D zsh{leah4d`zLQ}aal${WR(6|XK|V#vI^VuT4(5?~=3M@QKYwAHSbYCtyix_X3JEK# zS=U!}9D}c*E*KRvAF-$u7@}Tg+T1XOT^wf6x2%M@IlfGDdCSxc(dEFwlNk-QnTwhC z#+mp;0;!t=f69|h5NjxLkQ*DCqZEJ2xqK2_&Q@jAMP#4d?8HjPIkIa(oR$3Jb;4e} zk=_RrA%wWBM2EZBQh|MuP@;L!gR_&WSp#Kv!?bEidWNN4^n81!6tpZ!xK;t`p9JZigOJz7R*~vYQE;lAwJ##pC_4E&g89ez5e0k z=(;Q4dvf!Pdb7Beu^EdRCJ8GqRs16-Ct)1)3o?f;!p+NwJ8C#nHd*_s= z{K;u-MPLc}+iI`=6~YXN+9_f9){5hJI|2hG^70+fS`pmZLZK$TPWQn(_L)CVM(`;x za7uCO?}wmB%AO2V*@xnId)!-*GKkRkpVp#JlM;2o5(7_64$hY|#xXfm)})K+?t-R* z>;Kkl-`{GaLz1S3*QX0^Vu||3YO#roi;~NGH#>EkQ!0;?%mKDO2$xGfjB1OyETCSi zf0y5x_2)Z?k*i0pU3}FUysSF1G5$$LC(45m56CW0;iix$`rB^F3^+9=bIWg}ZhsVI zo}8sDQs?|?h;Z3VOXZXX+1Xt0OdRK7%u`Ln!tNq&^5t@%1GtY0CyIr$f0lspp``e$ zYm)T`e$8j*Rc=%4i~RNQp7STb5d%)>9%1?~~LsD;zz4)79Eu1$uu>sU(u04s;gn=9V zS0y7|)*G?qoCRoezng23jP>Kg3pBD;e&n0lUq9v&*WOpthafRed5iSjl*H=G$tiMe zd)E_ie7lqsr{CfUbOuJue4hpAr7Eqa_r3>qtBeJos7zR_H36T_%O2O2^fzlv0#v<8 z_Rl~?Pe>#hEQlc_PV`vv7=-?Bzwf`c^%4y6Y`4-|QZpSM3f6P$+f_NR5&A+xc5<%XTHcy{@0wMU_5y3&)ekG+(Wj76 ze$@L&H@zC;xTrDmp!ICiamBhCCrs%{>-U1Y$lC%uay?s=R!CYNoE18Rs!r>&Lk7Gs znIg=_sN7Xc1OTuqk^LXrQzsRLcd0FT28v^2m_L)cn+*+|; z_tLP^!vIfxI3gfAgau#4HMy7ZfI6f}z z$xj(3A=50!r-3%W%l+tdHU+aNVAOEOP}Or#-GwXVTg_?F^0zhq=LSRt(Z-w*2NzM%pxF$Iww9ginjTBR44~U^aU@AeC!XB zFL@B`nLtQHdFpy-sd4i3&_PJpxR@?m`ex8V9OgavuUVI(Ise9=SDa?rJAcWlX|6g( z-~hNL{arioGQ$7()iL6!+U z8J+;zuYT1(`~KcaSDD$?|F9HTUL~!#DhEu(v^&5ZRzAP1#P2ReoUin!U8rx!1dExa z0Ux1oRRj}x+>82>U@baB;NnTmCTS6x0?)m>bLYnNo5yvU%GI#twNvmXC)OSWj?bt?|UW z8D!M_AO%XEMdIX_g%9e6ZPIGMRb;Cf8yBaE41mi?OKlr)40!-jQojbF`-dY`w5wRU z@bsuV_xLS~ejZp*%k_4h>gFoM#uS*Si&30H%v6J<*jF3P|v{n*V$Es!c_?$+Y_}F zDh;3VN$aoBrUW)paZDztO_ezp!Aphr!kG%JiE7n@C$~585HA#3M!r}^Jq`<}U7+}G z%dK`9Lr{&JOOydY8}k)56%rwF^Xqu(K03O;{nGo$cJ3}UGPEkL!vTyLYz!=V>o*Ki zyS=RsKiA-SD@spKy0-vn5lxfTs9%KR&N^*;s0pJBEdtL3v<6Pgfa7=ZG8=hL^ewge6+n>AdaU{fqDdH<`>xrXYJ z2vPStETMrCL%l|+4mWKF-6y&gAYY~7E>3Hrjhr@u*e%nPd5Em6PpWgtk&rjvj% zyciFYq-(YsU0! z-b8!i&C<*Az+zZ%dU$Ed`0!=aTbvy`TE)IPH_GYqKQ*70D3^{fj#Jqab^l{BjY8Ve z8u_U9L`mwAk$#};q##;Pk;4E0eqtj2_&~V55|&(cOXafz@T zn~!tqRP*^J!EtnGFM~8)rrIN$#Sh(hnt2ytO}F*@JhXo6h(BLk>`GT1MYVQ==_dX~ zQ)Yur0b?vov~&)?H?2^IeH?Q`rHW>7_(nC2BRn75(xG>RU1jMD0MP&O=NR)bAx03d zVXm_+ZKT=Ryv5DqD<~HKJEIQOvRg0gJ$dBjfHP(iGVvf58nBvTDQQY(u~xWMt2sQRkIZlA^bBPEdbl!ESP8py z*c4HRwz%3sJMciiw(s5-Eq9$Mepzo5vHK zXSiuyKM7^EWN}QY+Zu*uVPub^!{I8B+J1u{*IAWF(*|h6kuwxaOU;g=F+Mpi8Nuaa za4w~VgedOHIb2aV`B97Go1o-law_x>B6Czj5Uz8&WVroEMpFr`t)eF0 zt4Q;HL1GpQi3kG9pDFuDXLX!ufBth1RW1UEe>xEvQz zH;x54n>B{7LPl-!>+JIbg!HK771pP3RSj{R!-A}B;`;nmz7pzyZ8PWsJMzQf`TLI? zvhc5AwwNI1zOpL}dR~$-00g?SEqCh24QawyXIb%s>+!RE1dQ%664E3P@O z&g=?zQ`dSFP<2 z+3rC#^swxBvFR%NO%0lTE*>Q~GAdC=M3%ljT$w-yg2o4+nzY}400ggsdZ z459@#9jkT!)HNHXminTfOhWgHss5^uz}Y4Hyz0K5G!2S&0L!|^*l%TH4=TfQ+znuENN zI#*5Bi0Cpd&Wz{EKliQ}HWwtww0_b1(nb$rB5sqHViDe1wg%-f_WYjtQoo1zA?o6D zkiJ~}UjGebde`kL`RwH!&=%)*j`SW_a*mj`xHZ<|B!s_m19SA z&2Nn+3N|V!np}OiD5?UvFC{kDo%`&RraN9XQs>er16imnn$z3fCSsb?3d(?3bnq~|LX=bIs`xbs_@*A`I3B6X{rV(3i016?!WuKLgwU3g= z)Y`xIuYBDv^sb@~j3`3HQ9l74voy)DAA7C#dRH^-J>|g6-sE#!C^D9W5RQ6u%rO|IBdMh`W7O7;qb_d^Lr>ly<0E{&w6GPBO?*>5Se3KaEZ}38V55N_z`L` zo4Nh;$wov$4jTxB@|I=n9{XgyKNJE?>ie9CfT=0D0=6c$;+9JfYw;;?Tp)vd!Vm`I z4C&YS;VA@$U`(W`nXdxzZpYGSmY-@Een!`m*W7!902pyC!@*E7RyIe6$Q0Cv#I!$J zjbGUleG}|^Ei2XTJPv1!o%l5miI4jOlOVn&_-6QSS0eX+2KuZ3hPqa&?h4Pq`E)P+C$1Q{o?==j;uqeeV8>7#N;V9IY7q~g7cB0LDj#2en5Hgo ze;8Ey!633rIN2fbslWT!`N?UbZw6)hw;mip7nEeo$_YWALt?8>A`!63F^vmJpr$T= zLKjlzumGG3kJ*`y5ryY2g0E*r>Nivg)pquTaa?rLIO(tmQd5Bci_vfS`VZ`@pL)B* zyKeLbhsfVQBV-`v7#J@y>}VkCSx-A6lGL>OJ$8 z)>!pQsw%3B=X~rHgbVCAQQkO_RPQ&>@c58nqQv@!A1nLFQ#2M|cTJPtVR!ekfqO-% zX%Jqdk7|0@n8&MfJ3%`{Zssa{f-WqajS08N&1wWsTXDcE5r!?uLvTT=5Y!>qgwFnR z+?(R1?06|xBCJc~7XjD1AD5axc^z*ONeM}9Z%x*j{e|O3UJwExXfQd~perB}a3>B( z(YUbO4No_K>?e9ub{NA%90DeKroK~LLUttj7W8;crI2*soK3tTC-8R=@FwziykyAp zcq}J$MQ`DfdIkbbDsfK0^$qE6U;D-GTLl`bsC%LYXx7>}@96+2{2(>}O7b0cAgoJx zVj>XXJ_h^fQ4ajWLYf(E(oqrogL#2GVY8C#k-cXL+NBEnPzlUk2~(9hzBO7&?dkG( z17z$F3>BTx${`E>{2P~<*Pb+@@S2qDUCI~_qZ-njsz@Ot`o zi^$ODF;P(|DlJrTkrkWw2vc8=Ej(ZEoWhCIKS&8uhG0}!;P5miyF5z037$|~2%`uW z>!ox!OQv|N7uCfs=9VQG?Ft8u3ktf>cv47L9LyqiWPg*{f%z;N(9P(f5 zhvx*^pORK!I=BSF5N#}17Jjq=-55Q?qx0TIuLsuKS;fGtY9+m-`=OagAPs9RROcT% zT0Ra` zSqBlUaIGDxF!Z2Y_<EnxMYvbBkr9X)pfDJOi!K#xm6LV*-9Jlnmd++ z`G~UdO52j}q?x{BvKbqE@ALjdP7< zKIfN8Z?jp|j1BC~Amy(((%`9(c+pO1W0RYtwP7TT$vEJxrarOW=93iI`UU48XG1EH ze~jNQ!T0dZ1VhyMkl35Rg~cJ|jwj*sIB-U3m>SN`;XW26K;}s7iXI6PH2se;=5lpG z8i4&kkoGAG&ikMRj~sAd^hj8EzR5xQ63lKv;s!tOk0zCd*OSj^wVyAn(sM;Cxh};_}$wvkmz_;4Oq#f$>V++YkgHh61dHn^Tg| z){_`5s~%^%LS*{Q3%mdny-0?Cd%?gxvv=~xZtushm=Dj%z(wrjI|`Lm@x#2<6EA6J zr2n4;?LSHUr^Dlu)#SF%emyEA0tR#pt$#d#sknk@qYAC4*pi;4B}FA9MG-n~Nq#GK zY2G@o;14;dZ#|w*Z%we(Zg?b^aIW(a&NWV3+aSwEHPxxQTo_P^##PPZ^Ln_D3_`kX zc1yDj?>U}jC8a4IzIW8^R7y&BX}Wv>8`FI^FCg(u86R6a7B#`VgxqPq=#I{=cd#IFfF9{yb vNC!r;CGqn*xX_F>O>IRwGgnmt99aan3*r+V1Ni^Dmmw>uBvC779Q^+Q>5^LS diff --git a/src/page/index/Home/index.vue b/src/page/index/Home/index.vue index a0b3b4e..6da2648 100644 --- a/src/page/index/Home/index.vue +++ b/src/page/index/Home/index.vue @@ -110,6 +110,12 @@ export default { name: "颜色归类", active: false, }, + { + fontIconCode: "", + target: "PushCoin", + name: "推币游戏", + active: false, + }, ], }; }, diff --git a/src/page/index/PushCoinGame/game/animation.js b/src/page/index/PushCoinGame/game/animation.js new file mode 100644 index 0000000..a97474f --- /dev/null +++ b/src/page/index/PushCoinGame/game/animation.js @@ -0,0 +1,668 @@ +import 'gsap'; + +class animation { + /** + * @Author rucky + * @DateTime 2018-05-16 + * @param {Object} game [game object] + * @param {Object} view [view object] + * @param {Object} ani [animations object] + * @return + */ + constructor(game,view,ani) { + this.game = game; + this.view = view; + this.ani = ani; + + this.init(); + } + init(){ + + } + + commonBtnAni(target,callbacks,onStart){ + if(this.game.buttonDisabled) return + this.game.buttonDisabled = !this.game.buttonDisabled; + let timeline = new TimelineMax({ + onStart:()=>{ + onStart &&onStart(); + // !this.game.mute && createjs.Sound.play('button'); + }, + onComplete:()=>{ + timeline.kill(); + callbacks&&callbacks(); + this.game.buttonDisabled = !this.game.buttonDisabled; + }}); + + timeline + .to(target,.4,{scaleX:target.scaleX*.9,scaleY:target.scaleY*.9}) + .to(target,.2,{scaleX:target.scaleX,scaleY:target.scaleY}) + } + /** + * @Author rucky + * @DateTime 2018-05-16 + * @param {Object} argument [many prama] + * { + * now: null, // + * next: null, + * effect: 'fade', //scale | translate | fade + * translateOut: false, + * translateIn: false, + * scaleOut: false, + * scaleIn: false, + * direction: 'x', + * } + * @return {null} + */ + changePage(argument){ + let _default = { + now: null, + next: null, + effect: 'fade', //scale | translate | fade + translateOut: false, + translateIn: false, + scaleOut: false, + scaleIn: false, + direction: 'x', + onStart: function(){}, + callbacks: function(){}, + } + + let opts = Object.assign({}, _default, argument ); + + let timeLine = new TimelineMax({ + onStart:()=>{ + opts.onStart && opts.onStart(); + // !this.game.mute && this.game.soundLoader && this.game.soundLoader.getResult('open') &&createjs.sound.play('open') + }, + onComplete:()=>{ + opts.callbacks && opts.callbacks(); + timeLine.kill(); + } + }) + let hideData = {alpha:0,autoAlpha:0}; + let showStartData = {alpha:0,x:0,y:0,autoAlpha:0}; + let showEndData = {alpha:1,autoAlpha:1}; + + + if(opts.effect == 'scale'){ + hideData.scaleX = .99; + hideData.scaleY = .99; + showStartData.scaleX = .99; + showStartData.scaleY = .99; + showEndData.scaleX = 1; + showEndData.scaleY = 1; + } + if(opts.effect == 'translate'){ + if(opts.direction == 'x') + hideData.x = -750; + else + hideData.y = -1450; + + if(opts.direction == 'x'){ + showStartData.x = 750; + showEndData.x = 0; + } + else{ + showStartData.y = 1450; + showEndData.y = 0; + } + } + + if(opts.effect == 'translate' && opts.direction == 'y'){ + timeLine + .to(opts.now,.6,hideData,'start') + .fromTo(opts.next,.6,showStartData,showEndData,'start') + // .to(this.game.gameView.interfaceBackground,.3,{y:-30},'start') + // .to(this.game.gameView.interfaceBackground,.5,{y:0},'start+=.3') + }else{ + timeLine + .to(opts.now,.6,hideData,'start') + .fromTo(opts.next,.6,showStartData,showEndData,'start') + } + } + + loadingAnimations(){ + let A = {}; + let view = this.game.loadingView; + //progress animation + let progress = {value : 0}; + + A.overProgress = TweenMax.to(progress,.5,{value:100,ease:Linear.easeNone,paused:true, + onUpdate:()=>{ + view.loading_progress_text.text = Math.floor(progress.value)+'%'; + view.loading_progress_bar.graphics.command.w = progress.value/100 * 376; + }, + onComplete:()=>{ + this.game.loadingAniEnding = true; + } + }) + + // console.log(view.loading_progress_bar.graphics) + TweenMax.to(progress,4,{value:86,ease:Linear.easeNone, + onUpdate:()=>{ + view.loading_progress_text.text = Math.floor(progress.value)+'%'; + view.loading_progress_bar.graphics.command.w = progress.value/100 * 376; + }, + onComplete:()=>{ + // this.game.loadingAniEnding = true; + if(this.game.mainResourceLoaded === true){ + A.overProgress.play(); + }else{ + this.watch(this.game,'mainResourceLoaded',()=>{ + if(this.game.mainResourceLoaded === true){ + A.overProgress.play(); + } + }) + } + } + }) + + A.flashEye = new TimelineMax({repeat:-1,repeatDelay:1.5}) + .fromTo([view.loading_eye_1,view.loading_eye_2],.6,{scaleY:1,alpha:1},{scaleY:.1,alpha:.5}) + .to([view.loading_eye_1,view.loading_eye_2],.3,{scaleY:1,alpha:1}) + + // console.log(view.loading_bingo.parent.mask.x) + + A.drawAni = new TimelineMax() + .fromTo(view.loading_pen,.6, + {x:view.loading_pen.ox,y:view.loading_pen.oy}, + {x:view.loading_pen.ox+12,y:view.loading_pen.oy-8,ease:Linear.easeNone + },'start') + .fromTo(view.loading_bingo.parent.mask,.6,{x:-100},{x:-91,ease:Linear.easeNone},'start+=.2') + + .to(view.loading_pen,.6, + {x:view.loading_pen.ox+36,y:view.loading_pen.oy+32,ease:Linear.easeNone} + ,'start2') + .to(view.loading_bingo.parent.mask,.6, + {x:-54,ease:Linear.easeNone} + ,'start2+=.15') + + .to(view.loading_pen,.6, + {x:view.loading_pen.ox+96,y:view.loading_pen.oy-33,ease:Linear.easeNone} + ,'start3') + .to(view.loading_bingo.parent.mask,.6, + {x:0,ease:Linear.easeNone} + ,'start3') + .timeScale(.5) + + + return A + } + + indexAnimations(){ + let A = {}; + let gameView = this.game.gameView; + + //wait ani + A.waitLine = new TimelineMax({ + paused:true, + repeat:-1, + yoyo:true + }) + + for(let i = 1; i < 10; i++){ + A.waitLine + + .fromTo(gameView[`index_text_${i}`],Math.random() * 2 + 1, + {rotation:0}, + {rotation:(Math.random()>.5?1:-1) * Math.random() * 10+5,ease:Linear.easeNone}, + `start` + ) + .to(gameView[`index_text_${i}`],Math.random() * 1 + 1, + {rotation:0,ease:Linear.easeNone}, + `start2` + ) + } + + //show ani + A.textTimeLine = new TimelineMax({ + paused:true + }) + + let speArr = [1,2,4,5], + speArr2= [6,7,8,9] + for(let i = 1; i < 10; i++){ + let timelineSpan = new TimelineMax() + //text + .fromTo(gameView[`index_text_${i}`],1, + {y:gameView[`index_text_${i}`].oy-700,x:gameView[`index_text_${i}`].ox-200}, + {y:gameView[`index_text_${i}`].oy,x:gameView[`index_text_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + //line + .fromTo(gameView[`index_line_${i}`],1, + {y:gameView[`index_line_${i}`].oy-700,x:gameView[`index_line_${i}`].ox-200}, + {y:gameView[`index_line_${i}`].oy,x:gameView[`index_line_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + .fromTo(gameView[`index_text_${i}`],.5, + {rotation:0}, + {rotation:-25}, + `text_${i}+=.4` + ) + .to(gameView[`index_text_${i}`],.6, + {rotation:0}, + `text_${i}+=1` + ) + .timeScale(2.2) + // if(speArr.indexOf(i) > -1){ + // let index = speArr2[speArr.indexOf(i)]; + + // timelineSpan + + // .fromTo(gameView[`index_text_${index}`],1, + // {y:gameView[`index_text_${index}`].oy-700}, + // {y:gameView[`index_text_${index}`].oy,ease:Back.easeOut.config(1.2)}, + // `text_${i}` + // ) + // //line + // .fromTo(gameView[`index_line_${index}`],1, + // {y:gameView[`index_line_${index}`].oy-700}, + // {y:gameView[`index_line_${index}`].oy,ease:Back.easeOut.config(1.2)}, + // `text_${i}` + // ) + // .fromTo(gameView[`index_text_${index}`],.5, + // {rotation:0}, + // {rotation:-25}, + // `text_${i}+=.4` + // ) + // .to(gameView[`index_text_${index}`],.6, + // {rotation:0}, + // `text_${i}+=1` + // ) + // // timelineSpan.add(otherLine,'same_${i}') + // } + + + A.textTimeLine.add(timelineSpan,`-=${i == 1 ? 0 : .6}`) + A.textTimeLine.timeScale(1.2) + } + + //other show animations + A.textTimeLine + .fromTo( + gameView.index_robot, + .7, + {y:gameView.index_robot.oy-1400}, + {y:gameView.index_robot.oy,ease:Back.easeOut.config(1.2), + onStart:()=>{ + A.waitLine.play(); + }, + onComplete:()=>{ + A.robotFloat = TweenMax.to(gameView.index_robot,1,{y:gameView.index_robot.oy+20,yoyo:true,repeat:-1}) + A.askFloat = TweenMax.to(gameView.index_ask,1,{y:gameView.index_ask.oy+20,yoyo:true,repeat:-1}) + } + }, + 'robot-=.3' + ) + .fromTo( + gameView.index_ask, + .7, + {x:gameView.index_ask.ox-150,alpha:0}, + {x:gameView.index_ask.ox,alpha:1,ease:Back.easeOut.config(1.2)}, + 'robot+=.2' + ) + .fromTo( + gameView.index_btn, + .7, + {y:gameView.index_btn.oy-1400+122/2}, + {y:gameView.index_btn.oy+122/2,ease:Back.easeOut.config(1.2), + onComplete:()=>{ + A.robotFloat = TweenMax.to(gameView.index_btn,1,{scaleX:.95,scaleY:.95,ease:Elastic.easeOut.config(1, 0.3),yoyo:true,repeat:-1}) + } + }, + 'robot-=.3' + ) + .fromTo( + gameView.index_pipe, + .7, + {y:-800}, + {y:gameView.index_pipe.oy,ease:Back.easeOut.config(1.2)}, + 'robot-=.3' + ) + .fromTo( + [gameView.index_title,gameView.index_desc], + .7, + {alpha:0}, + {alpha:1}, + 'robot+=.3' + ) + .fromTo( + [gameView.index_stars_1], + .7, + {x:gameView.index_stars_1.ox+300,alpha:0}, + {x:gameView.index_stars_1.ox,alpha:1}, + 'robot+=.3' + ) + .fromTo( + [gameView.index_stars_2], + .7, + {x:gameView.index_stars_2.ox-300,alpha:0}, + {x:gameView.index_stars_2.ox,alpha:1}, + 'robot+=.55' + ) + .fromTo( + [gameView.index_stars_3], + .7, + {x:gameView.index_stars_3.ox-300,alpha:0}, + {x:gameView.index_stars_3.ox,alpha:1}, + 'robot+=.625' + ) + .fromTo( + [gameView.index_star_2], + .7, + {x:gameView.index_star_2.ox-300,alpha:0}, + {x:gameView.index_star_2.ox,alpha:1}, + 'robot+=.7' + ) + .fromTo( + [gameView.index_leida], + .7, + {x:gameView.index_leida.ox+300,alpha:0}, + {x:gameView.index_leida.ox,alpha:1}, + 'robot+=.8' + ) + .fromTo( + [gameView.index_star_1], + .7, + {x:gameView.index_star_1.ox+300,alpha:0}, + {x:gameView.index_star_1.ox,alpha:1}, + 'robot+=.9' + ) + + + + + // 暂停 + A.pause = function(){ + A.textTimeLine.pause(); + } + + // 开始 + A.play = function(){ + A.textTimeLine.play(); + } + + + return A + } + + createAnimations(){ + let A = {}, + gameView = this.game.gameView; + + A.showTimeLine = new TimelineMax({ + paused:true + }) + + for(let i = 1; i < 7; i++){ + + // console.log(gameView[`create_text_${i}`]) + let timelineSpan = new TimelineMax() + //text + .fromTo(gameView[`create_text_${i}`],1, + {y:gameView[`create_text_${i}`].oy-100,x:gameView[`create_text_${i}`].ox-600}, + {y:gameView[`create_text_${i}`].oy,x:gameView[`create_text_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + //line + .fromTo(gameView[`create_line_${i}`],1, + {y:gameView[`create_line_${i}`].oy-100,x:gameView[`create_line_${i}`].ox-600}, + {y:gameView[`create_line_${i}`].oy,x:gameView[`create_line_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + .fromTo(gameView[`create_text_${i}`],.5, + {rotation:0}, + {rotation:-25}, + `text_${i}+=.4` + ) + .to(gameView[`create_text_${i}`],.6, + {rotation:0}, + `text_${i}+=1` + ) + .timeScale(2) + + A.showTimeLine.add(timelineSpan,`-=${i == 1? 0 : .55}`) + } + + + // 暂停 + A.pause = function(){ + A.showTimeLine.pause(); + } + + // 开始 + A.play = function(){ + A.showTimeLine.play(); + } + + + return A + } + + questionAnimations(target){ + const A = {}; + + A.topAni = TweenMax.fromTo(target.topCartoon,2,{y:target.topCartoon.oy-16},{y:target.topCartoon.oy,yoyo:true,repeat:-1}); + + A.ld = TweenMax.fromTo(target.d_2,2,{x:target.d_2.ox-16},{x:target.d_2.ox,yoyo:true,repeat:-1}); + + A.star = TweenMax.fromTo(target.star,2,{rotation:0},{rotation:360,repeat:-1,ease:Linear.easeNone}); + + if(target.index == 1) + A.d_3 = TweenMax.fromTo(target.d_3,1.5,{y:target.d_3.oy-10,scaleX:1,scaleY:1},{y:target.d_3.oy,scaleX:.9,scaleY:.9,yoyo:true,repeat:-1}); + + if(target.index == 5) + A.d_4 = TweenMax.fromTo(target.d_4,1.5,{y:target.d_4.oy-10,scaleX:1,scaleY:1},{y:target.d_4.oy,scaleX:.9,scaleY:.9,yoyo:true,repeat:-1}); + + return A + } + + showAnswerAnimation(target){ + const A = {}; + + //ballLine + A.ballLine = new TimelineMax({paused:true,repeat:-1}) + .to(target.ball_1,.5,{alpha:1}) + .fromTo(target.ball_1,2,{x:302+12},{x:302+12+256,ease:SlowMo.ease.config(0.05, 0.7, true)},'start') + .fromTo(target.square,.4,{rotation:90},{rotation:90+360,ease:SlowMo.ease.config(0.05, 0.7, true)},'start+=.9') + .to(target.ball_1,.5,{alpha:0},'start+=1.9') + .fromTo(target.ball_2,.25,{alpha:0},{alpha:1},'start+=2.2') + .fromTo(target.ball_2,2,{x:302+12},{x:302+12+256,ease:SlowMo.ease.config(0.05, 0.7, true)},'start+=2.6') + .fromTo(target.square,.4,{rotation:90},{rotation:90+360},'start+=3.5') + .to(target.ball_2,.5,{alpha:0}) + + + + //show answer timeline + A.timeline = new TimelineMax({ + onStart:()=>{ + TweenMax.set(target.ball_2,{alpha:0}) + }, + onComplete:()=>{ + A.ballLine.play(); + A.float_1 = TweenMax.fromTo(target.star_1,2,{y:836},{y:836+10,yoyo:true,ease:Linear.easeNone,repeat:-1}); + A.float_2 = TweenMax.fromTo(target.star_2,2,{y:441},{y:441+20,yoyo:true,ease:Linear.easeNone,repeat:-1,delay:1}); + A.float_3 = TweenMax.fromTo(target.ld,2,{x:560},{x:560+15,yoyo:true,ease:Linear.easeNone,repeat:-1,delay:1.5}); + A.btn = TweenMax.to(target.btn,1,{scaleX:.95,scaleY:.95,ease:Elastic.easeOut.config(1, 0.3),yoyo:true,repeat:-1,delay:2}) + } + }) + .fromTo(this.game.gameView.answerContainer,.4,{alpha:0},{alpha:1}) + .fromTo(target.box,.45,{alpha:0,y:654},{alpha:1,y:354,ease:Back.easeOut.config(1.2)},'shown_1') + .fromTo(target.answer,.45,{alpha:0,y:363+98/2-200,scaleX:2,scaleY:2},{alpha:1,y:363+98/2,ease:Back.easeOut.config(1.2),scaleX:1,scaleY:1},'shown_1+=.2') + .fromTo(target.pipe,.55,{alpha:0,/*x:469-100,*/y:959-300},{alpha:1/*,x:469*/,y:959,ease:Back.easeOut.config(1.1)},'shown_2') + .fromTo(target.btn,.55,{alpha:0,/*x:221+318/2-100,*/y:1070+122/2-300},{alpha:1/*,x:221+318/2*/,y:1070+122/2,ease:Back.easeOut.config(1.1)},'shown_2') + .fromTo(target.answer_text,.55,{alpha:0,y:571+100},{alpha:1,y:571,ease:Back.easeOut.config(0)},'shown_3-=.3') + .fromTo(target.ld,.55,{alpha:0,x:560+200},{alpha:1,x:560,ease:Back.easeOut.config(1.1)},'shown_3-=.2') + .fromTo(target.star_1,.55,{alpha:0,x:96-200},{alpha:1,x:96,ease:Back.easeOut.config(1.1)},'shown_3-=.2') + .fromTo(target.star_2,.55,{alpha:0,x:491+100},{alpha:1,x:491,ease:Back.easeOut.config(1.1)},'shown_3-=.2') + .staggerFromTo([target.ball_1,target.ball_2,target.ban,target.square],.45,{alpha:0,scaleX:1.4,scaleY:1.4},{scaleX:1,scaleY:1,alpha:1,ease:Back.easeOut.config(1.1)},.1,'shown_3-=.1') + + + return A + } + + //zhane result page ani + zhaneResultAnimations(){ + let A = {}; + let gameView = this.game.gameView; + + //wait ani + A.waitLine = new TimelineMax({ + paused:true, + repeat:-1, + yoyo:true + }) + + for(let i = 1; i < 10; i++){ + A.waitLine + + .fromTo(gameView[`zhane_index_text_${i}`],Math.random() * 2 + 1, + {rotation:0}, + {rotation:(Math.random()>.5?1:-1) * Math.random() * 10+5,ease:Linear.easeNone}, + `start` + ) + .to(gameView[`zhane_index_text_${i}`],Math.random() * 1 + 1, + {rotation:0,ease:Linear.easeNone}, + `start2` + ) + } + + //show ani + A.textTimeLine = new TimelineMax({ + paused:false, + delay: 1 + }) + + .fromTo( + [gameView.zhane_index_title], + .7, + {x:0,alpha:0}, + {x:gameView.zhane_index_title.ox+399/2,alpha:1,onComplete:()=>{ + A.flash = TweenMax.to(gameView.zhane_index_title,.6,{scaleX:1.1,scaleY:1.1,ease:Back.easeOut.config(1.2),yoyo:true,repeat:-1}) + }}, + 'start1' + ) + .fromTo( + gameView.zhane_index_btn, + .7, + {y:gameView.zhane_index_btn.oy+500+122/2}, + {y:gameView.zhane_index_btn.oy+122/2,ease:Back.easeOut.config(1.2), + onStart:()=>{ + // A.waitLine.play(); + }, + onComplete:()=>{ + A.robotFloat = TweenMax.to(gameView.zhane_index_btn,1,{scaleX:.95,scaleY:.95,ease:Elastic.easeOut.config(1, 0.3),yoyo:true,repeat:-1}) + } + }, + 'start1+=.4' + ) + + let speArr = [1,2,4,5], + speArr2= [6,7,8,9] + for(let i = 1; i < 10; i++){ + let timelineSpan = new TimelineMax() + //text + .fromTo(gameView[`zhane_index_text_${i}`],1, + {y:gameView[`zhane_index_text_${i}`].oy-700,x:gameView[`zhane_index_text_${i}`].ox-200}, + {y:gameView[`zhane_index_text_${i}`].oy,x:gameView[`zhane_index_text_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + //line + .fromTo(gameView[`zhane_index_line_${i}`],1, + {y:gameView[`zhane_index_line_${i}`].oy-700,x:gameView[`zhane_index_line_${i}`].ox-200}, + {y:gameView[`zhane_index_line_${i}`].oy,x:gameView[`zhane_index_line_${i}`].ox,ease:i > 5 ? Back.easeOut.config(0) : Back.easeOut.config(1.2)}, + `text_${i}` + ) + .fromTo(gameView[`zhane_index_text_${i}`],.5, + {rotation:0}, + {rotation:-25}, + `text_${i}+=.4` + ) + .to(gameView[`zhane_index_text_${i}`],.6, + {rotation:0}, + `text_${i}+=1` + ) + .timeScale(2.2) + + + A.textTimeLine.add(timelineSpan,`-=${i == 1 ? 0 : .6}`) + A.textTimeLine.timeScale(1.2) + } + + //other show animations + A.textTimeLine + + + // .fromTo( + // gameView.index_pipe, + // .7, + // {y:-800}, + // {y:gameView.index_pipe.oy,ease:Back.easeOut.config(1.2)}, + // 'robot-=.3' + // ) + + .fromTo( + [gameView.zhane_index_stars_1], + .7, + {x:gameView.zhane_index_stars_1.ox+300,alpha:0}, + {x:gameView.zhane_index_stars_1.ox,alpha:1,onComplete:()=>{ + A.waitLine.play(); + }}, + 'robot+=.3' + ) + .fromTo( + [gameView.zhane_index_stars_2], + .7, + {x:gameView.zhane_index_stars_2.ox-300,alpha:0}, + {x:gameView.zhane_index_stars_2.ox,alpha:1}, + 'robot+=.55' + ) + .fromTo( + [gameView.zhane_index_stars_3], + .7, + {x:gameView.zhane_index_stars_3.ox-300,alpha:0}, + {x:gameView.zhane_index_stars_3.ox,alpha:1}, + 'robot+=.625' + ) + .fromTo( + [gameView.zhane_index_star_2], + .7, + {x:gameView.zhane_index_star_2.ox-300,alpha:0}, + {x:gameView.zhane_index_star_2.ox,alpha:1}, + 'robot+=.7' + ) + .fromTo( + [gameView.zhane_index_leida], + .7, + {x:gameView.zhane_index_leida.ox+300,alpha:0}, + {x:gameView.zhane_index_leida.ox,alpha:1}, + 'robot+=.8' + ) + .fromTo( + [gameView.zhane_index_star_1], + .7, + {x:gameView.zhane_index_star_1.ox+300,alpha:0}, + {x:gameView.zhane_index_star_1.ox,alpha:1}, + 'robot+=.9' + ) + + + + + // 暂停 + A.pause = function(){ + A.textTimeLine.pause(); + } + + // 开始 + A.play = function(){ + A.textTimeLine.play(); + } + + + return A + } +} +module.exports = animation; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/createView.js b/src/page/index/PushCoinGame/game/createView.js new file mode 100644 index 0000000..83faa38 --- /dev/null +++ b/src/page/index/PushCoinGame/game/createView.js @@ -0,0 +1,496 @@ +import frameData from './frameData'; +import maskCreater from './maskCreater'; //mask creater + +/** + * + * @method + * @desc - a creater for game view + * @param argument{ + * @param {Object} game - find game object + * @param {Object} loader - find game loader + * @param {Object} layout - find layout object + * @param {Boolean} sprite - is sprite ? + * @param {Object} circle - draw circle param + * @param {String} layId - layout id + * @param {String} imgId - img id + * @param {Number} x - obj x-pos + * @param {Number} y - obj y-pos + * @param {Number} width - createjs rect width + * @param {Number} height - createjs rect height + * @param {String} bg - createjs rect background + * @param {Number} regX - animation orgin x + * @param {Number} regY - animation orgin y + * @param {Number} scaleX - obj scale x + * @param {Number} scaleY - obj scale y + * @param {Number} moved - obj can move or no + * @param {Number} vx - obj x move speed + * @param {Number} alpha - obj alpha + * @param {Number} type - obj type --- 1 normal / 2 ding / 3 break / 4 word-1 / 5 word -2 + * @param {Boolean} visible - obj visible + * @param {Number} framesName - sprite frames name + * @param {String} aniName - sprite name + * @param {String} ani_1 - sprite aniamtions name - 1 + * @param {String} container - addchild container + * @param {String} textBaseline - text base line + * @param {String} textAlign - text align + * @param {String} textColor - text color + * @param {String} textSize - text size + * @param {Boolean} shadow - show text shadow true or false + * @param {Boolean} shadowColor - text shadow color + * @param {Boolean} shadowOffsetX- text shadow offsetX + * @param {Boolean} shadowOffsetY- text shadow offsetY + * @param {Boolean} shadowBlur - text shadow blur + * @param {Number} cacheX - cache Text X + * @param {Number} cacheY - cache Text Y + * @param {Number} cacheW - cache Text width + * @param {Number} cacheH - cache Text height + * } + * + */ + + +const creater = function (argument) { + let _default = { + game: null, + loader: null, + layout: null, + sprite: false, + single: false, + empty: false, + layId: '', + imgId: '', + name: '', + ox: 0, + oy: 0, + x: 0, + y: 0, + width: 750, + height: 1334, + rotation: 0, + bg: 'rgba(255,255,255,1)', + regX: 0, + regY: 0, + visible: true, + hide: false, + moved: 0, + vx: 1, + circle: { + visible: false, + sector: false, + startAngle: 0, + endAngle: Math.PI * 2, + }, + circleLine: { + visible: false, + borderWidth: 2, + color: '#ffffff', + }, + mask: { + visible: false, + x: 0, + y: 0, + r: 0, + p: null, + debug: false + }, + scaleX: 1, + scaleY: 1, + alpha: 1, + type: 0, + framesName: '', + defaultAni: 'default', + container: '', + rect: { + x: 0, + y: 0, + borderWidth: 1, + p: null, + blurFilter: false + }, + text: { + visible: false, + word: "", + baseline: "alphabetic", + align: "center", + color: "#ffffff", + size: "26px fzzt", + lineHeight: "30" + }, + singleSprite: { + visible: false, + parent: {}, + name: '' + }, + shadow: false, + shadowColor: '#dddddd', + roCenter: false, + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowBlur: 2, + cacheX: 0, + cacheY: 0, + cacheW: 750, + cacheH: 1334, + return: false, + mouseEnabled: true, + compositeOperation: '' + } + + let maskObj = Object.assign({}, _default.mask, argument.mask); + let textObj = Object.assign({}, _default.text, argument.text); + let rectObj = Object.assign({}, _default.rect, argument.rect); + let circleObj = Object.assign({}, _default.circle, argument.circle); + let singleSpriteObj = Object.assign({}, _default.singleSprite, argument.singleSprite); + let circleLineObj = Object.assign({}, _default.circleLine, argument.circleLine); + + + let opts = Object.assign({}, _default, argument); + opts.mask = maskObj; + opts.text = textObj; + opts.rect = rectObj; + opts.circle = circleObj; + opts.circleLine = circleLineObj; + opts.singleSprit = singleSpriteObj; + + // console.log(opts.layId,opts.imgId) + //雪碧图单帧 + if (opts.singleSprite.visible) { + // console.log(opts.singleSprite.parent,opts.singleSprite.name) + opts.layout[opts.layId] = new createjs.Sprite(opts.singleSprite.parent.spriteSheet, opts.singleSprite.name).set({ + x: opts.x + (opts.roCenter ? opts.width / 2 : 0), + y: opts.y + (opts.roCenter ? opts.height / 2 : 0), + ox: opts.ox ? opts.ox : opts.x + (opts.roCenter ? opts.width / 2 : 0), + oy: opts.oy ? opts.oy : opts.y + (opts.roCenter ? opts.height / 2 : 0), + regX: opts.regX + (opts.roCenter ? opts.width / 2 : 0), + regY: opts.regY + (opts.roCenter ? opts.height / 2 : 0), + type: opts.type, + tindex: opts.tindex, + hide: opts.hide, + state: opts.state, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + rotation: opts.rotation, + width: opts.width, + height: opts.height, + name: opts.name || opts.layId, + moved: opts.moved, + vx: opts.vx, + sp: opts.sp, + hs: opts.hs, + alpha: opts.alpha, + visible: opts.visible, + mask: opts.mask.visible ? shape : null, + mouseEnabled: opts.mouseEnabled + }); + if (opts.maskAnimation) { + opts.maskContainer = new createjs.Container(); + + if (opts.transform) + opts.layout[opts.layId].setTransform(...opts.transform); + + + opts.maskContainer.mask = new maskCreater(opts.mask.name, opts.mask.type, opts.mask.transform); + opts.maskContainer.compositeOperation = opts.compositeOperation; + opts.maskContainer.addChild(opts.layout[opts.layId]); + } + } + //帧动画 + else if (opts.sprite) { + let img = opts.loader.getResult(opts.imgId); + var spriteSheet = new createjs.SpriteSheet({ + images: [img], + frames: frameData[opts.framesName].frames, + animations: opts.animations + }); + + opts.layout[opts.layId] = new createjs.Sprite(spriteSheet, opts.defaultAni).set({ + x: opts.x + (opts.roCenter ? opts.width / 2 : 0), + y: opts.y + (opts.roCenter ? opts.height / 2 : 0), + // width: frameData[opts.framesName].sourceW, + // height: frameData[opts.framesName].sourceH, + ox: opts.ox ? opts.ox : opts.x + (opts.roCenter ? opts.width / 2 : 0), + oy: opts.oy ? opts.oy : opts.y + (opts.roCenter ? opts.height / 2 : 0), + regX: opts.regX + (opts.roCenter ? opts.width / 2 : 0), + regY: opts.regY + (opts.roCenter ? opts.height / 2 : 0), + type: opts.type, + state: opts.state, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + name: opts.name || opts.layId, + compositeOperation: opts.compositeOperation, + alpha: opts.alpha + }); + } else if (opts.maskAnimation) { + //遮罩动画 + opts.maskContainer = new createjs.Container(); + let img = opts.loader.getResult(opts.imgId); + + opts.layout[opts.layId] = new createjs.Bitmap(img).setTransform(...opts.transform).set({ + alpha: opts.alpha, + ox: opts.ox, + oy: opts.oy + }); + + opts.maskContainer.mask = new maskCreater(opts.mask.name, opts.mask.type, opts.mask.transform); + opts.maskContainer.compositeOperation = opts.compositeOperation; + opts.maskContainer.addChild(opts.layout[opts.layId]); + + } else if (opts.text.visible) { + //文字 + let shape; + if (opts.mask.visible) { + let g = new createjs.Graphics(); + shape = new createjs.Shape().set({ + graphics: g.drawRect(opts.mask.x, opts.mask.y, opts.mask.width, opts.mask.height), + x: opts.mask.x, + y: opts.mask.y, + }); + } + let shadow = opts.shadow ? new createjs.Shadow(opts.shadowColor, opts.shadowOffsetX, opts.shadowOffsetY, opts.shadowBlur) : null; + + opts.layout[opts.layId] = new createjs.Text(opts.text.word, opts.text.size, opts.text.color).set({ + x: opts.x, + y: opts.y, + ox: opts.ox ? opts.ox : opts.x, + oy: opts.oy ? opts.oy : opts.y, + regX: opts.regX, + regY: opts.regY, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + alpha: opts.alpha, + shadow: shadow, + name: opts.name || opts.layId, + mask: opts.mask.visible ? shape : null, + lineHeight: opts.text.lineHeight, + textBaseline: opts.text.baseline, + textAlign: opts.text.align, + mouseEnabled: opts.mouseEnabled + }) + // console.log(opts.layout[opts.layId]) + opts.game.webGL && opts.cacheContainer.addChild(opts.layout[opts.layId]) + opts.game.webGL && opts.cacheContainer.cache(opts.cacheX, opts.cacheY, opts.cacheW, opts.cacheH); + } else if (opts.rect.visible) { + //Graphics rect + let g = new createjs.Graphics(); + + // if (opts.mask.visible) { + // let g2 = new createjs.Graphics(); + // shape = new createjs.Shape().set({ + // graphics: opts.mask.p ? g2.p(opts.mask.p) : g2.drawRect(opts.mask.x, opts.mask.y, opts.mask.width, opts.mask.height), + // x: opts.x, + // y: opts.y, + // }); + // } + + let graphics; + if (opts.rect.blurFilter) { + graphics = g.beginBitmapFill(opts.loader.getResult(opts.imgId), 'no-repeat') + .drawRect(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height) + + } else { + // console.log(opts.rect) + if (opts.rect.round && opts.rect.roundLine) + graphics = g.setStrokeStyle(opts.rect.borderWidth).f(opts.bg).s(opts.rect.bg).drawRoundRect(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height, opts.rect.r).es(); + else if (opts.rect.round) + graphics = g.f(opts.bg).drawRoundRect(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height, opts.rect.r) + else if (opts.rect.roundLine) + graphics = g.setStrokeStyle(opts.rect.borderWidth).f(opts.bg).s(opts.rect.bg).drawRect(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height).es(); + else if (opts.rect.p) + graphics = g.p(opts.rect.p); + else + graphics = g.f(opts.bg).drawRect(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height); + } + + //create shape + opts.layout[opts.layId] = new createjs.Shape().set({ + graphics: graphics, + x: opts.x, + y: opts.y, + regX: opts.regX, + regY: opts.regY, + alpha: opts.alpha, + name: opts.name || opts.layId, + mouseEnabled: opts.mouseEnabled + }); + + opts.layout[opts.layId].mask = new maskCreater(opts.mask.name, opts.mask.type, opts.mask.transform); + + if (opts.rect.blurFilter) { + let blurFilter = new createjs.BlurFilter(10, 10, 10); + opts.layout[opts.layId].filters = [blurFilter]; + opts.layout[opts.layId].cache(opts.rect.x, opts.rect.y, opts.rect.width, opts.rect.height); + } + + opts.game.webGL && opts.cacheContainer.addChild(opts.layout[opts.layId]) + opts.game.webGL && opts.cacheContainer.cache(opts.cacheX, opts.cacheY, opts.cacheW, opts.cacheH); + } + else if (opts.circle.visible) { + //Graphics circle + let g = new createjs.Graphics(); + let angle, startAngle, endAngle, x1 = 0, y1 = 0; + if (opts.circle.sector) { //画扇形 + angle = (Math.abs(opts.circle.angle) > 360) ? 360 : opts.circle.angle; + startAngle = opts.circle.startAngle * Math.PI / 180; + endAngle = opts.circle.startAngle + angle * Math.PI / 180; + x1 = opts.circle.x + opts.circle.r * Math.cos(startAngle); + y1 = opts.circle.x + opts.circle.r * Math.sin(startAngle); + } + + opts.layout[opts.layId] = new createjs.Shape().set({ + graphics: g.f(opts.bg).moveTo(opts.circle.x, opts.circle.y).arc(opts.circle.x, opts.circle.y, opts.circle.r, startAngle ? startAngle : 0, endAngle ? endAngle : Math.PI * 2).endFill(), + x: opts.x + (opts.roCenter ? opts.circle.r : 0), + y: opts.y + (opts.roCenter ? opts.circle.r : 0), + regX: opts.regX + (opts.roCenter ? opts.circle.r : 0), + regY: opts.regY + (opts.roCenter ? opts.circle.r : 0), + rotation: opts.rotation, + alpha: opts.alpha, + name: opts.name || opts.layId, + mouseEnabled: opts.mouseEnabled + }); + // opts.game.webGL && opts.cacheContainer.addChild(opts.layout[opts.layId]) + // opts.game.webGL && opts.cacheContainer.cache(opts.cacheX,opts.cacheY,opts.cacheW,opts.cacheH); + } + else if (opts.circleLine.visible) { + //circle line + let g = new createjs.Graphics(); + + opts.layout[opts.layId] = new createjs.Shape().set({ + graphics: g.setStrokeStyle(opts.circleLine.borderWidth).s(opts.circleLine.color).arc(opts.circleLine.x, opts.circleLine.y, opts.circleLine.r, opts.circleLine.startAngle, opts.circleLine.endAngle).endFill(), + x: opts.x + (opts.roCenter ? opts.circleLine.r : 0), + y: opts.y + (opts.roCenter ? opts.circleLine.r : 0), + regX: opts.regX + (opts.roCenter ? opts.circleLine.r : 0), + regY: opts.regY + (opts.roCenter ? opts.circleLine.r : 0), + rotation: opts.rotation, + alpha: opts.alpha, + name: opts.name || opts.layId, + mouseEnabled: opts.mouseEnabled + }); + + // opts.game.webGL && opts.cacheContainer.addChild(opts.layout[opts.layId]) + // opts.game.webGL && opts.cacheContainer.cache(opts.cacheX,opts.cacheY,opts.cacheW,opts.cacheH); + } + else if (opts.bitmapShap) { + let g = new createjs.Graphics(); + let img = opts.loader.getResult(opts.imgId); + opts.layout[opts.layId] = new createjs.Shape().set({ + graphics: g.beginBitmapFill(img, "no-repeat").drawRect(0, 0, opts.width, opts.height), + x: opts.x, + y: opts.y, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + alpha: opts.alpha, + name: opts.name || opts.layId, + mouseEnabled: false + }); + // (opts.game.webGL || opts.game.needCache) && opts.cacheContainer.cache(opts.cacheX,opts.cacheY,opts.cacheW,opts.cacheH); + } + else if (opts.bitmapCircle) { + let g = new createjs.Graphics(); + let img; + if (typeof (opts.imgId) == 'object') { + if (opts.imgId.other) { + img = opts.game.friend.loadedPhoto; + } + else if (opts.imgId.fighter) { + img = opts.imgId.fighter + } + else { + img = opts.game.userinfo.loadedPhoto + } + } else { + img = opts.loader.getResult(opts.imgId) + } + opts.layout[opts.layId] = new createjs.Shape().set({ + graphics: g.beginBitmapFill(img, "no-repeat").drawCircle(opts.circle.x, opts.circle.y, opts.circle.r), + x: opts.x, + y: opts.y, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + alpha: opts.alpha, + name: opts.name || opts.layId, + mouseEnabled: false + }); + // (opts.game.webGL || opts.game.needCache) && opts.cacheContainer.cache(opts.cacheX,opts.cacheY,opts.cacheW,opts.cacheH); + } + else { + //图 + let img = opts.loader.getResult(opts.imgId); + //taikohui userphoto + let shape; + if (opts.mask.visible) { + let g = new createjs.Graphics(); + shape = new createjs.Shape().set({ + graphics: g.drawRect(opts.mask.x, opts.mask.y, opts.mask.width, opts.mask.height), + x: opts.x, + y: opts.y, + }); + } + opts.layout[opts.layId] = new createjs.Bitmap(img).set({ + x: opts.x + (opts.roCenter ? opts.width / 2 : 0), + y: opts.y + (opts.roCenter ? opts.height / 2 : 0), + ox: opts.ox ? opts.ox : opts.x, + oy: opts.oy ? opts.oy : opts.y, + width: opts.width ? opts.width : img.width, + height: opts.height ? opts.height : img.height, + regX: opts.regX + (opts.roCenter ? opts.width / 2 : 0), + regY: opts.regY + (opts.roCenter ? opts.height / 2 : 0), + rotation: opts.rotation, + visible: opts.visible, + scaleX: opts.scaleX, + scaleY: opts.scaleY, + type: opts.type, + moved: opts.moved, + name: opts.name || opts.layId, + vx: opts.vx, + hide: opts.hide, + state: opts.state, + mask: opts.mask.visible ? shape : null, + alpha: opts.alpha, + mouseEnabled: opts.mouseEnabled + }); + } + + if (opts.mask.visible) { + let shape; + let g = new createjs.Graphics(); + if (opts.mask.graph == 'rect') { + shape = new createjs.Shape().set({ + graphics: g.drawRect(opts.mask.x, opts.mask.y, opts.mask.width, opts.mask.height), + // x : opts.mask.x, + // y : opts.mask.y, + }); + } + else if (opts.mask.graph == 'rectRound') { + shape = new createjs.Shape().set({ + graphics: g.drawRoundRect(opts.mask.x, opts.mask.y, opts.mask.width, opts.mask.height, opts.mask.r) + }); + } + else { + shape = new createjs.Shape().set({ + graphics: g.drawCircle(0, 0, opts.mask.r), + x: opts.mask.x, + y: opts.mask.y, + }); + } + + opts.layout[opts.layId].mask = shape; + } + + if (!opts.return) { + let target = opts.layout[opts.layId]; + + if ((opts.text.visible || opts.rect.visible) && opts.game.webGL) { + target = opts.cacheContainer + } else { + opts.maskContainer + } + + opts.container.addChild(target) + // opts.container.addChild(opts.text.visible || opts.rect.visible ? opts.cacheContainer : opts.maskAnimation ? opts.maskContainer : opts.layout[opts.layId]) + } + + + + return opts.layout[opts.layId] +} +module.exports = creater; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/frameData.js b/src/page/index/PushCoinGame/game/frameData.js new file mode 100644 index 0000000..1424127 --- /dev/null +++ b/src/page/index/PushCoinGame/game/frameData.js @@ -0,0 +1,44 @@ +/*================================*/ +/*============= 帧数据 ============*/ +/*================================*/ +const framesData = { + 'loading': { + "sourceW": 1506, + "sourceH": 1837, + "frames": [ + [1, 1, 645, 32, 0, 0, 0], + [648, 1, 359, 419, 0, 0, 0], + [1, 422, 395, 520, 0, 0, 0], + [398, 35, 246, 84, 0, 0, 0], + [1, 35, 392, 334, 0, 0, 0], + [398, 121, 243, 28, 0, 0, 0], + [643, 121, 3, 3, 0, 0, 0], + [643, 126, 3, 3, 0, 0, 0], + [1, 371, 37, 41, 0, 0, 0], + [1, 414, 4, 3, 0, 0, 0], + [7, 414, 4, 3, 0, 0, 0], + [40, 371, 402, 32, 0, 0, 0], + [40, 405, 15, 15, 0, 0, 0], + [57, 405, 14, 14, 0, 0, 0], + [73, 405, 10, 12, 0, 0, 0], + [85, 405, 11, 11, 0, 0, 0], + [98, 405, 10, 10, 0, 0, 0], + [110, 405, 10, 10, 0, 0, 0], + [122, 405, 7, 8, 0, 0, 0], + [131, 405, 7, 8, 0, 0, 0], + [140, 405, 10, 7, 0, 0, 0], + [152, 405, 8, 7, 0, 0, 0], + [1, 944, 30, 30, 0, 0, 0], + [1, 976, 26, 25, 0, 0, 0], + [29, 976, 21, 23, 0, 0, 0], + [33, 944, 385, 28, 0, 0, 0], + [52, 974, 328, 28, 0, 0, 0], + [382, 974, 23, 22, 0, 0, 0], + [407, 974, 19, 19, 0, 0, 0], + [444, 151, 171, 167, 0, 0, 0], + [398, 422, 392, 334, 0, 0, 0], + [428, 758, 306, 244, 0, 0, 0] + ], + } +} +module.exports = framesData; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/index.js b/src/page/index/PushCoinGame/game/index.js new file mode 100644 index 0000000..3960fa8 --- /dev/null +++ b/src/page/index/PushCoinGame/game/index.js @@ -0,0 +1,303 @@ +import STAGE from "./stage"; +import LAYOUT from "./view"; +import { gsap } from "gsap"; +import Resource from "./preload"; +import utils from '@/utils/index.js'; + + +class game { + // 构造器 + constructor() { + // 开始debug + this.debug = process.env.NODE_ENV === "development" ? true : false; // process.env !== "production", // 游戏测试模式是否开启 + // 需要显示的页面 + this.showPageIndex = 0; // 0 loading | 1 story | 2 rule | 3 game index | 4 result | 5 poster + this.needUpdate = true; + + this.scene = 1; // 1 - loading | 2 - index + + this.webGL = true;//window.deviceInfo.system == 'IOS' ? true : false; // 是否开启webGL + + this.momentFPS = []; + + this.averageFPS = 60; //平均帧率 + + this.nowPlayingAnimation = null; // 当前正在播放的动画 + + this.playingSound = null; // 当前正在播放的声音 + + this.afterResLoadedStatus = false; // 语言资源全部加载完毕状态 + + this.otherLoadedStatus = false; // 对应语言剩余资源全部加载完毕状态 + + this.langConfig = { id: 2 }; //语言配置 默认为普通话 + + this.playingSounds = []; // 将播放过的音频推入数据记录 + + // 选择语言后的后置资源加载 + this.afterLoaderArr = []; + + // 备用资源加载 更多反应资源加载 + this.otherLoaderArr = []; + + this.utils = utils; + } + + // 初始化 + init(pointer) { + this.vue = pointer; + // 初始化画布 + this.stage = new STAGE().createStage(this); + //实例化layout + this.VIEW = new LAYOUT(this); + + // 保存帧率 + this.saveMomentFPS = setInterval(() => { + if (this.FPS > 30) + this.momentFPS.push(this.FPS) + // console.log(this.momentFPS.length) + if (this.momentFPS.length > 20) + this.momentFPS.shift(); + }, 10); + + + // 绑定事件 + // this.bindEvents(); + + + // 初始化主资源加载器 + this.loadingRes(); + + } + + // 开发debug模式 + devDebugMode() { + + } + + loadingRes() { + this.loadingLoader = utils.preload({ + imgList: Resource.before.imgList, + // audioList: Resource.main.audioList, + loadStart: () => { + // console.log(this.VIEW.loading_progress_bar.graphics.command.w) + }, + progressCallBack: (progress) => { + // progress; // 0.99 + + + }, + completeCallBack: (result) => { + // all loaded triger + // 初始化 loading 界面 + this.gameView = this.VIEW.loading(this); + this.VIEW.createLoadingParticle(); + this.scene = 1; + // this.loadMainRes(); + }, + }); + } + + // 主资源 + loadMainRes() { + this.mainLoader = utils.preload({ + imgList: Resource.main.imgList, + // audioList: Resource.main.audioList, + loadStart: () => { + // console.log(this.VIEW.loading_progress_bar.graphics.command.w) + }, + progressCallBack: (progress) => { + // progress; // 0.99 + gsap.to(this.VIEW.loading_progress_bar.graphics.command, { + w: 30 + 432 * progress, + duration: 0.1, + onUpdate: () => { + + } + }); + + this.VIEW.loading_progress_text.text = + Math.floor(progress * 100) + "%"; + + this.webGL && this.VIEW.loadingCacheContainer.updateCache(); + }, + completeCallBack: (result) => { + // all loaded triger + this.VIEW.hideLoading() + // this.mainResLoaded(); + }, + }); + } + + // 主资源加载完毕 显示首页 + mainResLoaded() { + gsap.to([this.gameView.loading_progress_bg, this.gameView.loading_progress_bar, this.gameView.loading_text, this.gameView.loading_progress_text,], { + alpha: 0, + onUpdate: () => { + this.webGL && this.VIEW.loadingCacheContainer.updateCache(); + } + }) + gsap.fromTo(this.gameView.loading_start, { alpha: 0, scaleX: 0.95, scaleY: 0.95 }, { alpha: 1, scaleX: 1, scaleY: 1, ease: "elastic.out(1, 0.3)" }) + } + + + // 求数组平均数 + getArrAverage(arr) { + return arr.reduce((num, item, index) => { + if (index != arr.length - 1) { + return num + item; + } else { + return (num + item) / arr.length; + } + }); + } + + // 获取平均fps + getAverageFPS() { + // 计算平均帧率 + this.saveMomentFPS && clearInterval(this.saveMomentFPS) + this.averageFPS = this.getArrAverage(this.momentFPS); + if (this.averageFPS <= 50) { + console.log('低等性能手机,刷新率为', this.averageFPS) + } + else if (this.averageFPS > 50 && this.averageFPS < 70) { + console.log('中等性能手机,刷新率为', this.averageFPS) + } + else if (this.averageFPS >= 70) { + console.log('高性能手机,高刷新率为', this.averageFPS) + } + + // 计算出全局speed + this.globalSpeed = 60 / this.averageFPS; + console.log(this.globalSpeed) + } + + //debug mode destroyed + + //game model + model() { + let M = {}; + return M + } + + //game viewer + view() { + let V = {}; + let A = {}; + + this.adaptY = _stage.adaptScreen(); + + this.gameView = _layout.init(this, V, A); + + V.checkIPhoneX = () => { + let windowW = window.innerWidth; + let windowH = window.innerHeight; + if (windowH < 1130) { + + } + + if (windowW / windowH < 0.56) { // ios phone X 640*1386 wechat(640*1277) || 750*1624 wechat(750*1496) + this.phoneX = true; + } else { // ios other + this.phoneX = false; + } + } + V.checkIPhoneX(); + + A.commonBtnAni = (target, callbacks) => { + let timeline = new TimelineMax({ + onComplete: () => { + timeline.kill(); + callbacks && callbacks(); + } + }); + timeline + .to(target, .4, { scaleX: .9, scaleY: .9 }) + .to(target, .2, { scaleX: 1, scaleY: 1 }) + } + + return { + layout: V, + ani: A + }; + } + + // 静音音频 + silenceSoundInit() { + var audioTag = document.createElement("audio"); + audioTag.controls = false; + audioTag.preload = "auto"; + audioTag.loop = false; // looping this seems to cause clicking on older iOS devices + audioTag.src = silenceDataURI; + document.addEventListener("visibilitychange", function () { + if (document.visibilityState == 'visible') audioTag.play(); + }); + + this.silenceAudio = audioTag; + } + + // 播放音效 + playSound(musicId, spe) { + // 移除所有声音 + // createjs.Sound.removeAllSounds(); + // 暂停上一个音频 + // console.log(this.playingSound) + if (this.playingSound) { + console.log('准备暂停音频=>', this.playingSound.name) + this.playingSound.paused = true; + this.playingSound.destroy(); + } + + + console.log('准备播放音频=>', musicId) + // let props = new createjs.PlayPropsConfig().set({ + // interrupt: createjs.Sound.INTERRUPT_ANY, + // loop: 0, + // volume: 1 + // }); + this.playingSound = createjs.Sound.play(('sound-' + musicId)); //如果声音的最大实例数已经在播放,如何中断同一源的任何当前播放的音频实例。值在Sound类上被定义为INTERRUPT_TYPE常量 + this.playingSound.name = musicId + // return sound + } + + // 绑定事件 + bindEvents() { + this.gameView.loading_start + .on('mousedown', (e) => { + this.silenceAudio.play(); + // createjs.Sound.play('sound-silence', { loop: -1 }); + console.log(this.vue.$BGM.paused, this.vue.$BGM.mute) + // 如果存在背景音乐 如果音乐被暂停同时用户未静音的话 + if (this.vue.$BGM && this.vue.$BGM.paused && !this.vue.$BGM.mute) { + console.log('playing bgm music') + this.vue.$BGM.play(); + } + this.gameView.loading_start.mouseEnabled = false; + // console.log('点击了开始') + // 埋点 + this.vue.$Utils.addTrackEvent("用户点击了开始", '用户loading页点击了开始'); + this.vue.$Utils.btnTouched(e.currentTarget, () => { + + + // 将canvas设置为不可交互 + let style = this.stage.stage.canvas.className; + this.stage.stage.canvas.className = 'none' + + // 初始化 view + this.VIEW.init(); + + // 隐藏loading + this.VIEW.hideLoading(); + // 播放guide动画 + this.changeSpriteAnimation('guide'); + // 播放声音 + this.playSound('guide'); + // 显示按钮动画 + this.vue.showLangBtnAni(); + }) + }) + } + +} + +export default game \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/layout.js b/src/page/index/PushCoinGame/game/layout.js new file mode 100644 index 0000000..b558526 --- /dev/null +++ b/src/page/index/PushCoinGame/game/layout.js @@ -0,0 +1,292 @@ +const layoutData = { + loading: [ + { + sprite: true, + framesName: 'loading', + layId: 'loadingSprite', + imgId: 'loadingSprite', + x: 750, + "animations": { + "loading_text2_en": { "frames": [0] }, + "arrow": { "frames": [1] }, + "person": { "frames": [2] }, + "start": { "frames": [3] }, + "light": { "frames": [4] }, + "loading_text3": { "frames": [5] }, + "snow_19": { "frames": [6] }, + "snow_9": { "frames": [7] }, + "snow_1": { "frames": [8] }, + "snow_10": { "frames": [9] }, + "snow_20": { "frames": [10] }, + "loading_text3_en": { "frames": [11] }, + "snow_2": { "frames": [12] }, + "snow_8": { "frames": [13] }, + "snow_11": { "frames": [14] }, + "snow_13": { "frames": [15] }, + "snow_17": { "frames": [16] }, + "snow_6": { "frames": [17] }, + "snow_14": { "frames": [18] }, + "snow_7": { "frames": [19] }, + "snow_16": { "frames": [20] }, + "snow_15": { "frames": [21] }, + "snow_3": { "frames": [22] }, + "snow_12": { "frames": [23] }, + "snow_18": { "frames": [24] }, + "loading_text": { "frames": [25] }, + "loading_text2": { "frames": [26] }, + "snow_4": { "frames": [27] }, + "snow_5": { "frames": [28] }, + "snow": { "frames": [29] }, + "light_2": { "frames": [30] }, + "box": { "frames": [31] } + }, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + //bg + { + layId: 'loading_bg', + imgId: 'bg', + x: 0, + y: 0, + scaleX: 1, + scaleY: 1, + alpha: 1 + }, + // imgId: 'snow', + { + layId: 'loading_snow', + singleSprite: { + visible: true, + name: 'snow' + }, + x: 290, + y: 504, + width: 171, + height: 167, + roCenter: true, + scaleX: 1, + scaleY: 1, + alpha: 1 + }, + // tips-1 + { + layId: 'loading_text', + singleSprite: { + visible: true, + name: 'loading_text' + }, + x: 182, + y: 820, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_text2', + singleSprite: { + visible: true, + name: 'loading_text2' + }, + x: 211, + y: 1157, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_text2_en', + singleSprite: { + visible: true, + name: 'loading_text2_en' + }, + x: 54, + y: 1160, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_text3', + singleSprite: { + visible: true, + name: 'loading_text3' + }, + x: 253, + y: 1157, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_text3_en', + singleSprite: { + visible: true, + name: 'loading_text3_en' + }, + x: 174, + y: 1160, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_box', + singleSprite: { + visible: true, + name: 'box' + }, + x: 232, + y: 869, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + // { + // layId: 'loading_box2', + // singleSprite: { + // visible: true, + // name: 'box' + // }, + // x: 232, + // y: 869, + // scaleX: 1, + // scaleY: 1, + // alpha: 0 + // }, + { + layId: 'loading_person', + singleSprite: { + visible: true, + name: 'person' + }, + x: 178, + y: 313, + width: 395, + height: 520, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_arrow', + singleSprite: { + visible: true, + name: 'arrow' + }, + x: 195, + y: 438, + width: 359, + height: 419, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_light', + singleSprite: { + visible: true, + name: 'light' + }, + x: 176, + y: 673, + width: 392, + height: 334, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + { + layId: 'loading_light2', + singleSprite: { + visible: true, + name: 'light_2' + }, + x: 176, + y: 673, + width: 392, + height: 334, + scaleX: 1, + scaleY: 1, + alpha: 0 + }, + // progress_bg + { + layId: 'loading_progress_bg', + rect: { + visible: true, + round: true, + x: 0, + y: 0, + r: 15, + roundLine: 4, + width: 462, + height: 30, + bg: '#0b3046' + }, + bg: '#23669c', + x: 139, + y: 760, + ox: 0, + oy: 0, + scaleX: 1, + scaleY: 1, + alpha: 1 + }, + // progress_bar + { + layId: 'loading_progress_bar', + rect: { + visible: true, + round: true, + x: 0, + y: 0, + r: 15, + width: 30, //462/2 + height: 30 + }, + bg: '#caf0f6', + x: 139, + y: 760, + ox: 0, + oy: 0, + scaleX: 1, + scaleY: 1, + alpha: 1 + }, + // progress text + { + layId: 'loading_progress_text', + x: 375, + y: 910, + text: { + visible: true, + word: '0%', + size: '46px hycm', + color: '#ffffff', + align: 'center', + lineHeight: 40 + }, + scaleX: 1, + scaleY: 1, + alpha: 1 + }, + { + layId: 'loading_start', + singleSprite: { + visible: true, + name: 'start' + }, + x: 252, + y: 800, + width: 248, + height: 84, + roCenter: true, + scaleX: 1, + scaleY: 1, + alpha: 0, + }, + ], +} +module.exports = layoutData \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/maskCreater.js b/src/page/index/PushCoinGame/game/maskCreater.js new file mode 100644 index 0000000..12f9756 --- /dev/null +++ b/src/page/index/PushCoinGame/game/maskCreater.js @@ -0,0 +1,26 @@ +import base64Str from './pathCodes' + +/*create mask*/ +class maskCreater { + + constructor(pname, type, param, debug) { + let mask = new createjs.Shape(); + + if (type == 'code') + mask.graphics.p(base64Str[pname]); + + if (type == 'func') + // ;(new Function('',base64Str[pname]))(); + // eval(base64Str[pname]) + base64Str[pname](mask) + + + if (param) + mask.setTransform(...param) + // console.log(mask) + + return mask; + } +} + +module.exports = maskCreater; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/pathCodes.js b/src/page/index/PushCoinGame/game/pathCodes.js new file mode 100644 index 0000000..ea048f7 --- /dev/null +++ b/src/page/index/PushCoinGame/game/pathCodes.js @@ -0,0 +1,9 @@ +module.exports = { + "rect": (mask) => { + return mask.graphics.f('#000000').drawRoundRect(0, 0, 559, 10, 0).es() + }, + + "cardMask": "mask.graphics.f('#000000').drawRoundRect(177,439,400,550,0).es()", + + "upload_mask": "mask.graphics.f('#000000').drawRoundRect(140,444,477,647,0).es()" +} \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/preload.js b/src/page/index/PushCoinGame/game/preload.js new file mode 100644 index 0000000..2284eba --- /dev/null +++ b/src/page/index/PushCoinGame/game/preload.js @@ -0,0 +1,43 @@ +export default { + before: { + imgList: [ + { + id: 'loadingSprite', + src: require("@/assets/images/loading/loadingSprite.png") + }, + { + id: 'bg', + src: require("@/assets/images/loading/bg.jpg") + }, + { + id: 'snowSprite', + src: require("@/assets/images/loading/snowSprite.png") + }, + ], + audioList: [ + // { + // id: 'sound-silence', + // src: require("@/assets/media/silence.mp3") + // } + ] + }, + main: { + imgList: [ + { + id: 'logo', + src: require("@/assets/images/logo.png") + }, + { + id: 'logo', + src: require("@/assets/images/logo.png") + } + ], + audioList: [ + ] + }, + // 剩余资源 + after: { + imgList: [], + audioList: [] + }, +} \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/question.js b/src/page/index/PushCoinGame/game/question.js new file mode 100644 index 0000000..7547545 --- /dev/null +++ b/src/page/index/PushCoinGame/game/question.js @@ -0,0 +1,1630 @@ +//中文题 +export const chinese = [ + // 类型一 冬奥历史 + [ + // 第1题 + { + + introduction: "展现动静之美、取舍之智慧的冰壶运动于1998年列入冬奥会正式比赛项目。北京冬奥会冰壶项目比赛将于2022年2月2日开始在国家游泳中心举行。", + question: "你知道冰壶的起源地在哪里吗?", + answer: [ + { + right: true, + word: "苏格兰" + }, + { + word: "爱尔兰" + }, + { + word: "不知道" + } + ] + }, + // 第2题 + { + + introduction: "1972年在亚洲举办的第十一届冬季奥运会是冬奥会第一次在欧洲和美国以外的地区举办。", + question: "你知道第十一届冬季奥运会是在亚洲哪个国家举办的吗?", + answer: [ + { + right: true, + word: "日本" + }, + { + word: "韩国" + }, + { + word: "不知道" + } + ] + }, + // 第3题 + { + + introduction: "瑞典、挪威、丹麦被称为“斯堪迪纳维亚国家”,第六届冬季奥运会便是在斯堪迪纳维亚国家中举办的,并且它还是第一个在首都举办冬奥会的国家。", + question: "你知道第一个举办冬奥会的“斯堪迪纳维亚国家”是谁吗?", + answer: [ + { + right: true, + word: "挪威" + }, + { + word: "丹麦" + }, + { + word: "不知道" + } + ] + }, + // 第4题 + { + + introduction: "截至2021年,中国共参加了11届冬季奥运会。2022年北京冬奥会是第一次在中国举办。", + question: "你知道中国第一次参加冬奥会是哪一年吗?", + answer: [ + { + right: true, + word: "1980年" + }, + { + word: "1983年" + }, + { + word: "不知道" + } + ] + }, + // 第5题 + { + + introduction: "速度滑冰简称速滑,是滑冰运动中历史最悠久、开展最广泛的项目。", + question: "你知道世界上第一个举办速滑比赛的是哪个国家吗?", + answer: [ + { + right: true, + word: "英国" + }, + { + word: "荷兰" + }, + { + word: "不知道" + } + ] + }, + // 第6题 + { + + introduction: "花样滑冰起源于18世纪,1872年奥地利首次举办花样滑冰比赛,1924年被列为首届冬奥会比赛项目。", + question: "你知道冬奥会比赛项目花样滑冰起源于哪个国家吗?", + answer: [ + { + right: true, + word: "英国" + }, + { + word: "加拿大" + }, + { + word: "不知道" + } + ] + }, + // 第7题 + { + + introduction: "雪橇起源于北欧。据记载,早在1480年挪威就已出现雪橇。", + question: "你知道世界上第一次雪橇比赛是在哪个国家举行的吗?", + answer: [ + { + right: true, + word: "瑞士" + }, + { + word: "挪威" + }, + { + word: "不知道" + } + ] + }, + // 第8题 + { + + introduction: "第十九届冬季奥运会于2002年2月8日至2月24日在美国举行。这一届奥运会的参赛选手数量创下新高,有18个国家的运动员获得金牌,金牌数量刷新此前纪录。", + question: "你知道第十九届冬季奥运会是在美国哪个城市举办的吗?", + answer: [ + { + right: true, + word: "盐湖城" + }, + { + word: "芝加哥" + }, + { + word: "不知道" + } + ] + }, + // 第9题 + { + + introduction: "第十六届冬季奥运会是最后一次与夏季奥运会在同年举行的冬奥会,这也是冬奥会有史以来场地最分散的一届。", + question: "你知道最后一次与夏季奥运会同年举行的冬季奥运会是在哪个国家举办的吗?", + answer: [ + { + right: true, + word: "法国" + }, + { + word: "日本" + }, + { + word: "不知道" + } + ] + }, + // 第10题 + { + introduction: "截至2022年北京冬奥会,冬奥会举办会期最多的为17天。", + question: "你知道冬奥会举办会期最短的是几天吗?", + answer: [ + { + right: true, + word: "9天" //(第一届、第二届冬奥会都是9天) + }, + { + word: "7天" + }, + { + word: "不知道" + } + ] + }, + // 第11题 + { + introduction: "2026年第二十五届冬季奥运会将在意大利米兰和科尔蒂纳丹佩佐两地举办,这并不是意大利第一次举办冬奥会。", + question: "你知道意大利举办过几届冬奥会吗?", + answer: [ + { + right: true, + word: "四届" + }, + { + word: "三届" + }, + { + word: "不知道" + } + ] + }, + ], + // 类型二 冬奥项目 + [ + // 第1题 + { + introduction: "有一项冬奥会运动项目由远古时代的滑雪狩猎演变而来,它将越野滑雪和射击两种特点不同的竞技运动结合在一起。", + question: "你知道把越野滑雪和射击结合在一起的运动项目是什么吗?", + answer: [ + { + right: true, + word: "冬季两项" + }, + { + word: "北欧两项" + }, + { + word: "不知道" + } + ] + }, + // 第2题 + { + introduction: "这是一种以团队为单位,在冰上进行投掷竞赛的体育项目,也被人们称为“冰上国际象棋”。", + question: "你知道这种以团队为单位,在冰上进行投掷竞赛的冬奥会项目是什么吗?", + answer: [ + { + right: true, + word: "冰壶" + }, + { + word: "冰球" + }, + { + word: "不知道" + } + ] + }, + // 第3题 + { + introduction: "北欧两项起源于北欧,在挪威、瑞典流传已久,自20世纪初开始向世界推广,1924年被列为首届冬季奥运会比赛项目。", + question: "你知道北欧两项是由越野滑雪和哪一项运动组成的竞赛项目吗?", + answer: [ + { + right: true, + word: "跳台滑雪冰壶" + }, + { + word: "高山滑雪" + }, + { + word: "不知道" + } + ] + }, + // 第4题 + { + introduction: "冬季两项起源于斯堪的纳维亚半岛,由远古时代的滑雪狩猎演变而来,1960年被列为冬奥会比赛项目。", + question: "你知道冬季两项是由越野滑雪和哪一项运动结合而成的竞赛项目吗?", + answer: [ + { + right: true, + word: "射击" + }, + { + word: "射箭" + }, + { + word: "不知道" + } + ] + }, + // 第5题 + { + introduction: "冰球结合了多变的滑冰技艺和敏捷娴熟的曲棍球技艺,是对抗性较强的集体冰上运动项目之一。冰球运动员穿着冰鞋,手握冰杆滑行拼抢击球,用冰杆将球击入对方球门,进球多者为胜。", + question: "你知道冰球还被称为什么项目吗?", + answer: [ + { + right: true, + word: "冰上曲棍球" + }, + { + word: "冰上追打球" + }, + { + word: "不知道" + } + ] + }, + // 第6题 + { + introduction: "2014年索契冬残奥会高山滑雪共有五个分项,每个分项有三个类别,除了站姿和视障外,还有一种分项类别。", + question: "你知道冬残奥会高山滑雪的第三个分项类别是哪一项吗?", + answer: [ + { + right: true, + word: "坐姿" + }, + { + word: "卧姿" + }, + { + word: "不知道" + } + ] + }, + // 第7题 + { + introduction: "残奥冬季两项项目总比赛距离在6-15km之间,每圈2.0-2.5km,采用自由式技术滑雪3-5圈。其间,运动员须击中10m远的射击靶,每脱靶一次将被延长总的路线时间。", + question: "残奥冬季两项的视障运动员是通过哪种辅助方式完成射击的?", + answer: [ + { + right: true, + word: "声音信号辅助" + }, + { + word: "人工辅助" + }, + { + word: "不知道" + } + ] + }, + // 第8题 + { + introduction: "冬残奥会越野滑雪的参赛运动员为肢体残疾或盲人/视障运动员。男女运动员采用传统技术或自由式技术通过短距离、中距离和长距离(2.5km至20km)进行个人比赛或团队接力。", + question: "你知道参加冬残奥会越野滑雪的非视障运动员可以采用哪种姿势进行滑雪吗?", + answer: [ + { + right: true, + word: "站姿及坐姿" + }, + { + word: "卧姿及坐姿" + }, + { + word: "不知道" + } + ] + }, + // 第9题 + { + introduction: "冬残奥会冰球混合团体项目相当于冬奥运会中的冰球项目。参加这项运动的为下肢残疾运动员。比赛时,双方上场队员各6人,比赛分3局进行,每局15分钟,中间休息15分钟,每进一球得1分,得分多者为胜。", + question: "你知道参加冬残奥会冰球比赛的运动员是用什么工具代替冰鞋进行比赛吗?", + answer: [ + { + right: true, + word: "冰橇" + }, + { + word: "滑雪板" + }, + { + word: "不知道" + } + ] + }, + // 第10题 + { + introduction: "冬残奥会中,轮椅冰壶运动员使用的冰壶石与普通冰壶比赛使用的冰壶石是一样的,冰壶场地和比赛规则也相同,只是轮椅冰壶比赛允许不使用刷子,而选择使用有传石和稳定轮椅作用的手杖(棍)。", + question: "你知道轮椅冰壶赛每场比赛要比几局吗?", + answer: [ + { + right: true, + word: "8局" + }, + { + word: "6局" + }, + { + word: "不知道" + } + ] + }, + // 第11题 + { + introduction: "2022年北京冬季残奥会共设6个大项,78个小项,北京承办所有冰上项目,延庆和张家口承办所有的雪上项目。", + question: "以下哪一项不是冬季残奥会6个大项中的比赛项目?", + answer: [ + { + right: true, + word: "残奥双板滑雪" + }, + { + word: "残奥单板滑雪" + }, + { + word: "不知道" + } + ] + }, + ], + // 类型三 项目知识 + [ + // 第1题 + { + + introduction: "冬奥会项目“雪车”起源于瑞士。雪车用金属制成,形如小舟,因此也被称为“雪地之舟”。", + question: "你知道雪车还有一个名称是什么吗?", + answer: [ + { + right: true, + word: "集体雪橇" + }, + { + word: "钢架雪车" + }, + { + word: "不知道" + } + ] + }, + // 第2题 + { + + introduction: "雪上竞速运动项目高山滑雪是在越野滑雪的基础上逐步形成的,1936年起被列为冬奥会比赛项目。", + question: "冬奥会中的高山滑雪项目起源于哪一个地区?", + answer: [ + { + right: true, + word: "阿尔卑斯地区" + }, + { + word: "斯堪的纳维亚半岛" + }, + { + word: "不知道" + } + ] + }, + // 第3题 + { + + introduction: "钢架雪车在19世纪发源于瑞士山区的小城圣莫里茨,2002年被列为冬奥会正式比赛项目。", + question: "钢架雪车又被称为什么?", + answer: [ + { + right: true, + word: "无舵雪车" + }, + { + word: "有舵雪橇" + }, + { + word: "不知道" + } + ] + }, + // 第4题 + { + + introduction: "1998年冰壶项目被列入冬奥会正式比赛项目,它以冰壶距离营垒圆心的远近决定胜负,两队轮流掷球。", + question: "你知道冰壶队参赛队员的人数是多少吗?", + answer: [ + { + right: true, + word: "4人" + }, + { + word: "6人" + }, + { + word: "不知道" + } + ] + }, + // 第5题 + { + + introduction: "1860年挪威德拉门地区的两位农民在奥斯陆举行的首届全国滑雪比赛上表演了飞跃动作,此后逐渐发展成为独立项目并得到广泛开展。", + question: "由两位挪威农民在滑雪比赛上的飞跃动作所衍生的冬奥会比赛项目,是哪一个项目? ", + answer: [ + { + right: true, + word: "跳台滑雪" + }, + { + word: "越野滑雪" + }, + { + word: "不知道" + } + ] + }, + // 第6题 + { + + introduction: "20世纪60年代在美国诞生了一项冰雪运动,它结合了滑板和冲浪运动,并在1998年首次进入冬奥会。", + question: "结合了滑板和冲浪运动的冰雪比赛项目是什么?", + answer: [ + { + right: true, + word: "单板滑雪" + }, + { + word: "自由式滑雪" + }, + { + word: "不知道" + } + ] + }, + // 第7题 + { + + introduction: "2022年北京冬奥会女性运动员的参赛比例进一步提高,参赛运动员男女比例更趋于平衡。迄今为止,在冬奥会比赛项目中仍有一项是只有男性运动员可以参加的。", + question: "只有男性运动员参加的冬奥会比赛项目是什么?", + answer: [ + { + right: true, + word: "北欧两项" + }, + { + word: "冬季两项" + }, + { + word: "不知道" + } + ] + }, + // 第8题 + { + + introduction: "钢架雪车在19世纪发源于瑞士山区的小城圣莫里兹,于2002年盐湖城冬奥会被列为冬奥会正式比赛项目。", + question: "你知道钢架雪车因其运动姿势又被称为什么项目吗?", + answer: [ + { + right: true, + word: "俯式冰撬" + }, + { + word: "仰式冰撬" + }, + { + word: "不知道" + } + ] + }, + // 第9题 + { + + introduction: "速度滑冰、单板滑雪、跳台滑雪、短道速滑等项目都有严格的最低年龄限制。", + question: "短道速滑的最低参赛年龄是多少岁?", + answer: [ + { + right: true, + word: "16岁" + }, + { + word: "18岁" + }, + { + word: "不知道" + } + ] + }, + // 第10题 + { + introduction: "速度滑冰个人赛和团体赛有不同的胜负标准,一个是以时间为评判标准,另一个是以计时+计分的方式评判。", + question: "速度滑冰个人赛的胜负评判标准是什么?", + answer: [ + { + right: true, + word: "以时间为评判标准" + }, + { + word: "同时计时和计分" + }, + { + word: "不知道" + } + ] + }, + // 第11题 + { + introduction: "冰壶项目运动员的比赛鞋分为“蹬冰脚鞋”和“滑动脚鞋”,它们的底部材质不同。", + question: "冰壶运动员“蹬冰脚鞋” 底部是用什么材质制作的?", + answer: [ + { + right: true, + word: "橡胶" + }, + { + word: "塑料" + }, + { + word: "不知道" + } + ] + }, + // 第12题 + { + introduction: "花样滑冰对选手比赛着装有严格的要求和标准,男选手必须穿长裤,不能穿紧身裤;女选手不得穿上下分开的服装,裙子前后长度也要合规。", + question: "女性花样滑冰选手的裙子前后长度不能超过身体的什么部位?", + answer: [ + { + right: true, + word: "臀部" + }, + { + word: "膝盖" + }, + { + word: "不知道" + } + ] + }, + // 第13题 + { + introduction: "在速度滑冰项目里,为避免运动员冲撞,外道选手拥有换道优先权,如果发生冲撞,内道选手在特定情况下会失去比赛资格。", + question: "你知道在什么情况下发生冲撞的内道选手会失去比赛资格吗?", + answer: [ + { + right: true, + word: "换道" + }, + { + word: "冲刺" + }, + { + word: "不知道" + } + ] + } + ], + // 类型四 本届知识 + [ + // 第1题 + { + introduction: "国家速滑馆是2022年北京冬奥会北京主赛区标志性场馆之一,也是这届冬奥会赛事唯一新建冰上竞赛场馆,与“鸟巢”“水立方”共同组成“双奥”之城的标志性建筑群。", + question: "国家速滑馆还有个可爱的别称是什么?", + answer: [ + { + right: true, + word: "冰丝带" + }, + { + word: "冰如意" + }, + { + word: "不知道" + } + ] + }, + // 第2题 + { + introduction: "高山滑雪比赛惊险刺激,是冬奥会最具观赏性的项目之一。", + question: "2022年北京冬奥会高山滑雪比赛将在哪一个赛区进行?", + answer: [ + { + right: true, + word: "北京冬奥会延庆赛区" + }, + { + word: "北京冬奥会张家口赛区" + }, + { + word: "不知道" + } + ] + }, + // 第3题 + { + introduction: "首钢滑雪大跳台是北京冬奥会北京赛区内第一个完工的新建场馆,也是唯一的雪上比赛场地,它的设计理念源自中国敦煌壁画。", + question: "首钢滑雪大跳台还有一个好听的名字是什么?", + answer: [ + { + right: true, + word: "雪飞天" + }, + { + word: "雪飞燕" + }, + { + word: "不知道" + } + ] + }, + // 第4题 + { + introduction: "与2018年平昌冬奥会相比,北京冬奥会将新增7个项目,包括短道速滑混合团体接力、跳台滑雪混合团体、自由式滑雪大跳台(男子、女子)、自由式滑雪空中技巧混合团体、单板滑雪障碍追逐混合团体赛。", + question: "以下哪个选项也是北京冬奥会新增项目?", + answer: [ + { + right: true, + word: "女子单人雪车" + }, + { + word: "男子单人雪车" + }, + { + word: "不知道" + } + ] + }, + // 第5题 + { + introduction: "每届冬奥会都有一句大会主题语,如2018年平昌冬奥会的主题语为“激情同在”,2014年索契冬奥会主题语是“激情冰火属于你”。", + question: "你知道2022年北京冬奥会的主题语是什么吗?", + answer: [ + { + right: true, + word: "一起向未来" + }, + { + word: "奔向新世界" + }, + { + word: "不知道" + } + ] + }, + // 第6题 + { + introduction: "国家跳台滑雪中心是中国首座跳台滑雪场馆,滑道分为HS140大跳台和HS106标准跳台。HS140大跳台长度110米,落差135米;HS106标准跳台长度106米,落差115米。", + question: "你知道国家跳台滑雪中心的别名是什么吗?", + answer: [ + { + right: true, + word: "雪如意" + }, + { + word: "雪玉带" + }, + { + word: "不知道" + } + ] + }, + ], + // 类型五 运动员 + [ + // 第1题 + { + introduction: "自由式滑雪始于20世纪60年代,在高山滑雪基础上发展而成。1971年在美国新罕布什尔州举行了世界首次自由式滑雪比赛,1992年被列为冬奥会正式比赛项目。", + question: "以下哪一位不是自由式滑雪的代表人物?", + answer: [ + { + right: true, + word: "王春丽" + }, + { + word: "徐梦桃" + }, + { + word: "不知道" + } + ] + }, + // 第2题 + { + introduction: "2022年北京冬奥会的形象大使是六位中国著名的运动员,他们担负着向世界宣传推介冬奥会承办城市北京和张家口的使命。", + question: "除了姚明、申雪、赵宏博、张虹之外,还有两位北京冬奥会形象大使是谁?", + answer: [ + { + right: true, + word: "李妮娜、侯斌" + }, + { + word: "杨扬、谷爱凌" + }, + { + word: "不知道" + } + ] + }, + // 第3题 + // { + // introduction: "作为中国奥运事业的好朋友,萨马兰奇先生、罗格先生均已卸任奥委会职务。这届冬奥会主席于2013年当选第九任国际奥委会主席,任期八年,成为首位当选国际奥委会主席的奥运冠军,并于2021年成功连任第十任国际奥委会主席。", + // question: "你知道这一届冬奥会主席是谁吗?", + // answer: [ + // { + // right: true, + // word: "托马斯·巴赫" + // }, + // { + // word: "胡安·安东尼奥·萨马兰奇" + // }, + // { + // word: "不知道" + // } + // ] + // }, + ], +] + +// 英文题 +export const english = [ + // 类型一 冬奥历史 + [ + // 第1题 暂删 + // { + // introduction: "Curling, which shows dynamic and static beauty and the wisdom of choice, was officially included in Olympic Winter Games in 1998. The curling events of Beijing 2022 will start on February 2, 2022 at the National Aquatics Center.", + // question: "Do you know where curling was originated from?", + // answer: [ + // "Scotland ", + // "Ireland", + // "No idea" + // ], + // id: 'Y-1-1', + // rightIndex: 0 + // }, + // 第2题 + { + introduction: "The 11th Olympic Winter Games, held in Asia in 1972, were the first Olympic Winter Games hosted outside Europe and the USA.", + question: "Do you know which Asian country hosted the 11th Olympic Winter Games?", + answer: [ + { + right: true, + word: "Japan" + }, + { + word: "Korea" + }, + { + word: "No idea" + } + ], + id: 'Y-1-2' + }, + // 第3题 + { + introduction: "Sweden, Norway and Denmark are known as “Scandinavian countries”. The 6th Olympic Winter Games were held in one of the three countries, which was the first country that hosted the Olympic Winter Games in its capital.", + question: "Do you know which Scandinavian country was the first to host the Olympic Winter Games?", + answer: [ + { + right: true, + word: "Norway" + }, + { + word: "Denmark" + }, + { + word: "No idea" + } + ], + id: 'Y-1-3' + }, + // 第4题 暂删 + // { + // introduction: "By 2021, China had taken part in 11 Olympic Winter Games. Beijing 2022 will be the first Olympic Winter Games held in China.", + // question: "Do you know in which year China participated in the Olympic Winter Games for the first time?", + // answer: [ + // "1980 ", + // "1983", + // "No idea" + // ], + // id: 'Y-1-4', + // rightIndex: 0 + // }, + // 第5题 + { + introduction: "Speed skating is the most popular skating sport with the longest history.", + question: "Do you know which country was the first to host a speed skating competition?", + answer: [ + { + right: true, + word: "UK" + }, + { + word: "Netherlands" + }, + { + word: "No idea" + } + ], + id: 'Y-1-5' + }, + // 第6题 暂删 + // { + // introduction: "Figure skating originated from the 18th century. The first figure skating competition was held in Austria in 1872. In 1924, it was included as a discipline in the first Olympic Winter Games.", + // question: "Do you know which of the following countries was figure skating, a discipline in Olympic Winter Games, originated from?", + // answer: [ + // "UK ", + // "Canada", + // "No idea" + // ], + // id: 'Y-1-6', + // rightIndex: 0 + // }, + // 第7题 + { + introduction: "Luge originated from Northern Europe.According to records,it appeared in Norway as early as 1480.", + question: "Do you know which country held the first luge competition?", + answer: [ + { + right: true, + word: "Switzerland" + }, + { + word: "Norway" + }, + { + word: "No idea" + } + ], + id: 'Y-1-7' + }, + // 第8题 暂删 + // { + // introduction: "The 19th Olympic Winter Games were held in the USA from February 8 to 24, 2002. The number of countries with gold medalists in the Olympic Games was 18, a record high.", + // question: "Do you know which city hosted the 19th Olympic Winter Games?", + // answer: [ + // "Salt Lake City", + // "Chicago", + // "No idea" + // ], + // id: 'Y-1-8', + // rightIndex: 0 + // }, + // 第9题 暂删 + // { + // introduction: "The 16th Olympic Winter Games were the last held in the same year as the Olympic Summer Games. It also had the most scattered venues in history.", + // question: "Do you know where the Olympic Winter Games were held in the same year as the Olympic Summer Games for the last time?", + // answer: [ + // "France", + // "Japan", + // "No idea" + // ], + // id: 'Y-1-9', + // rightIndex: 0 + // }, + // 第10题 暂删 + // { + // introduction: "Up to Beijing 2022, the longest Olympic Winter Games were held for 17 days.", + // question: "Do you know how many days the shortest Olympic Winter Games lasted?", + // answer: [ + // "9 days (both the first and second Olympic Winter Games)", + // "7 days", + // "No idea" + // ], + // id: 'Y-1-10', + // rightIndex: 0 + // }, + // 第11题 + { + introduction: "The 25th Olympic Winter Games will be held in Milan and Cortina d’Ampezzo in 2026. This is not the first time that Italy hosts Olympic Winter Games.", + question: "Do you know the number of Olympic Winter Games Italy has hosted?", + answer: [ + { + right: true, + word: "4" + }, + { + word: "3" + }, + { + word: "No idea" + } + ], + id: 'Y-1-11', + rightIndex: 0 + }, + ], + // 类型二 冬奥项目 + [ + // 第1题 暂删 + // { + // introduction: "There is a sport in Olympic Winter Games that evolved from skiing and hunting in ancient times. It is a sport that combines skiing and shooting.", + // question: "Do you know the name of the event that combines skiing and shooting?", + // answer: [ + // "Biathlon", + // "Nordic combined", + // "No idea" + // ], + // id: 'Y-2-1', + // rightIndex: 0 + // }, + // 第2题 + // { + // introduction: "There is a sport played on ice in which two teams compete in throwing, also known as “ice chess”.", + // question: "Do you know the name of the team sport on ice?", + // answer: [ + // "Curling", + // "Ice hockey", + // "No idea" + // ], + // id: 'Y-2-2', + // rightIndex: 0 + // }, + // 第3题 + // { + // introduction: "Nordic combined originated from the Nordic countries and had been popular for a long time in Norway and Sweden before being spread to all over the world at the beginning of the 20th century. It was listed as a discipline in the first Olympic Winter Games in 1924.", + // question: "Do you know which of the following event is included in Nordic combined besides cross-country skiing?", + // answer: [ + // "Ski jumping", + // "Alpine skiing", + // "No idea" + // ], + // id: 'Y-2-3', + // rightIndex: 0 + // }, + // 第4题 + // { + // introduction: "Biathlon originated from Scandinavia and evolved from skiing and hunting in ancient times. It was listed as a discipline in the Olympic Winter Games in 1960.", + // question: "Do you know which of the following event is included in biathlon besides cross-country skiing?", + // answer: [ + // "Shooting", + // "Archery", + // "No idea" + // ], + // id: 'Y-2-4', + // rightIndex: 0 + // }, + // 第5题 + { + introduction: "Ice hockey is a combination of multiple skating skills and agile hockey skills, and is one of the most competitive team ice sports. Players wear ice skates and strive for the puck with ice-hockey sticks in their hands, and score goals by shooting a puck into the opponents’ cage.", + question: "Do you know what ice hockey is also called?", + answer: [ + { + right: true, + word: "Hockey" + }, + { + word: "Ice puck chasing" + }, + { + word: "No idea" + } + ], + id: 'Y-2-5' + }, + // 第6题 + { + introduction: "There are five events of alpine skiing in Sochi 2014 Paralympic Winter Games, each includes three categories, Standing, Visually Impaired and another one.", + question: "Do you know which of the following the third category was?", + answer: [ + { + right: true, + word: "Sitting" + }, + { + word: "Prone" + }, + { + word: "No idea" + } + ], + id: 'Y-2-6' + }, + // 第7题 + { + introduction: "In para biathlon, the total distance is 6-15 km, 2.0-2.5 km per lap, and free techniques for 3-5 laps. In the meantime, the athletes must hit the target at a distance of 10 m, and each miss will increase the total time as a penalty.", + question: "Which of the following methods assists the visually impaired athletes to shoot in para biathlon?", + answer: [ + { + right: true, + word: "Sound signal assistance" + }, + { + word: "Human assistance" + }, + { + word: "No idea" + } + ], + id: 'Y-2-7' + }, + // 第8题 暂删 + // { + // introduction: "Athletes participating in para cross-country skiing are physically disabled or blind/visually impaired. Male and female athletes compete or participate in team relays in short, medium and long distances (2.5-20 km) using classic or free techniques.", + // question: "Do you know which of the following can be chosen by non-visually impaired athletes in para cross-country skiing?", + // answer: [ + // "Standing and sitting", + // "Prone and sitting", + // "No idea" + // ], + // id: 'Y-2-8', + // rightIndex: 0 + // }, + // 第9题 暂删 + // { + // introduction: "The para ice hockey mixed team event is equivalent to the ice hockey events in Olympic Winter Games. The athletes all have leg disabilities. In a competition, there are six players from each side, and three periods of 15 minutes each and 15-minute breaks in between. The team that scores more goals wins.", + // question: "Do you know what tools the Paralympic ice hockey players use instead of skates?", + // answer: [ + // "Sledge", + // "Snowboard", + // "No idea" + // ], + // id: 'Y-2-9', + // rightIndex: 0 + // }, + // 第10题 + { + introduction: "The curling stones used by wheelchair curling athletes are the same as in ordinary curling competitions. They also use the same ice sheets and follow the same rules of competition.But there is no sweeping in wheelchair curling competitions. Players are allowed to use sticks to deliver stones and to stabilize wheelchairs.", + question: "Do you know how many ends there are in a wheelchair curling competition?", + answer: [ + { + right: true, + word: "8" + }, + { + word: "6" + }, + { + word: "No idea" + } + ], + id: 'Y-2-10' + }, + // 第11题 + { + introduction: "There are 6 sports and 78 events in Beijing 2022 Paralympic Winter Games. Beijing will host all the ice sports. Yanqing and Zhangjiakou will host all the snow sports.", + question: "Which of the following is not one of the six sports in the Paralympic Winter Games?", + answer: [ + { + right: true, + word: "Para skiing" + }, + { + word: "Para snowboarding" + }, + { + word: "No idea" + } + ], + id: 'Y-2-11' + }, + ], + // 类型三 项目知识 + [ + // 第1题 + { + introduction: "The Olympic Winter Games sport “Bobsleigh” originated from Switzerland. A bob is made of metal and in the shape of a boat, hence also known as “Snow Boat”.", + question: "Do you know what bobsleigh is also called?", + answer: [ + { + right: true, + word: "Bobsled" + }, + { + word: "Skeleton" + }, + { + word: "No idea" + } + ], + id: 'Y-3-1' + }, + // 第2题 暂删 + // { + // introduction: "The speed snow sport “alpine skiing” was gradually evolved from cross-country skiing and was listed as a discipline in Olympic Winter Games in 1936.", + // question: "Where was the origin of alpine skiing?", + // answer: [ + // "Alps", + // "Scandinavia", + // "No idea" + // ], + // id: 'Y-3-2', + // rightIndex: 0 + // }, + // 第3题 + { + introduction: "Skeleton originated from the Swiss mountain town of St. Moritz in the 19th century and was listed as an official discipline of the Olympic Winter Games in 2002.", + question: "What skeleton is also called?", + answer: [ + { + right: true, + word: "Tobogganing" + }, + { + word: "Bobsleigh" + }, + { + word: "No idea" + } + ], + id: 'Y-3-3' + }, + // 第4题 + { + introduction: "Curling was officially included in the Olympic Winter Games in 1998. Two teams take turns to deliver stones. The team scores a point for each stone that is closer to the center of the circles than the opponents’ best stone.", + question: "Do you know how many players there are in a curling team?", + answer: [ + { + right: true, + word: "4" + }, + { + word: "6" + }, + { + word: "No idea" + } + ], + id: 'Y-3-4' + }, + // 第5题 + // { + // introduction: "In 1860, two farmers from Drammen of Norway performed leaps at the first national ski competition in Oslo. The leaps gradually evolved into an independent discipline and became popular.", + // question: "Which of the following discipline was originated from the leaps performed by the two Norwegian farmers?", + // answer: [ + // "Ski jumping", + // "Cross-country skiing", + // "No idea" + // ], + // id: 'Y-3-5', + // rightIndex: 0 + // }, + // 第6题 + { + introduction: "A winter sport born in the USA in the 1960s combines skateboarding and surfing, and was included in the Olympic Winter Games for the first time in 1998.", + question: "What is the winter sport that combines skateboarding and surfing?", + answer: [ + { + right: true, + word: "Snowboarding" + }, + { + word: "Freestyle skiing" + }, + { + word: "No idea" + } + ], + id: 'Y-3-6' + }, + // 第7题 + { + introduction: "The proportion of female athletes participating in Beijing 2022 Olympic Winter Games will further increase. The ratio of male-to-female athletes will be more balanced. However, there is still one discipline that only men can take part in.", + question: "What is the discipline exclusive to male athletes?", + answer: [ + { + right: true, + word: "Nordic combined" + }, + { + word: "Biathlon" + }, + { + word: "No idea" + } + ], + id: 'Y-3-7' + }, + // 第8题 + { + introduction: "Skeleton originated from the Swiss mountain town of St. Moritz in the 19th century, and was listed as an official discipline in Salt Lake City 2002 Olympic Winter Games.", + question: "Do you know the other name of Skeleton for the posture?", + answer: [ + { + right: true, + word: "Sled (prone)" + }, + { + word: "Sled (supine)" + }, + { + word: "No idea" + } + ], + id: 'Y-3-8' + }, + // 第9题 + { + introduction: "There is a strict minimum age limit for speed skating, snowboarding, ski jumping, short-track speed skating, etc.", + question: "What is the minimum age for participants in short-track speed skating?", + answer: [ + { + right: true, + word: "16 years old" + }, + { + word: "18 years old" + }, + { + word: "No idea" + } + ], + id: 'Y-3-9' + }, + // 第10题 + { + introduction: "There are different criteria in individual and team speed skating competitions, judged by “time” or by “time plus score”.", + question: "What is the judging criterion for individual speed skating competitions?", + answer: [ + { + right: true, + word: "Judged by time" + }, + { + word: "Judged by time plus score" + }, + { + word: "No idea" + } + ], + id: 'Y-3-10' + }, + // 第11题 暂删 + // { + // introduction: "There are different criteria in individual and team speed skating competitions, by time or by time + score.", + // question: "What is the judging criterion for individual speed skating competitions?", + // answer: [ + // "Judged by time", + // "Judged by time + score", + // "No idea" + // ], + // id: 'Y-3-11', + // rightIndex: 0 + // }, + // 第12题 暂删 + // { + // introduction: "The shoes for curling athletes include a “grippy shoe” and a “sliding shoe”, with different soles.", + // question: "What is the sole of “grippy shoe” made of?", + // answer: [ + // "Rubber", + // "Plastic", + // "No idea" + // ], + // id: 'Y-3-12', + // rightIndex: 0 + // }, + // 第13题 + { + introduction: "In speed skating, players on the outer lane have priority in changing lanes in order to avoid collision. In the event of a collision, players on the inner lane will be disqualified under certain circumstances.", + question: "Do you know under which situation a player who causes a crash in the inner lane will be disqualified in the competition?", + answer: [ + { + right: true, + word: "Changing lane" + }, + { + word: "Sprinting" + }, + { + word: "No idea" + } + ], + id: 'Y-3-13' + }, + ], + // 类型四 本届知识 + [ + // 第1题 + { + introduction: "The National Speed Skating Oval is one of the landmark venues in Beijing Competition Zone of Beijing 2022, and is also the only new ice competition venue. The National Speed Skating Oval, the Bird’s Nest and the Water Cube constitute the landmark cluster of the “Dual Olympic City”.", + question: "What is the nick name of the National Speed Skating Oval?", + answer: [ + { + right: true, + word: "Ice Ribbon" + }, + { + word: "Ice Ruyi Scepter" + }, + { + word: "No idea" + } + ], + id: 'Y-4-1' + }, + // 第2题 + { + introduction: "Alpine skiing is a thrilling and one of the most spectacular disciplines in the Olympic Winter Games.", + question: "Which of the following zones will host the alpine skiing competitions of Beijing 2022 Olympic Winter Games?", + answer: [ + { + right: true, + word: "Yanqing Competition Zone" + }, + { + word: "Zhangjiakou Competition Zone" + }, + { + word: "No idea" + } + ], + id: 'Y-4-2' + }, + // 第3题 暂删 + // { + // introduction: "Big Air Shougang is the first constructed new venue and the only snow sport venue in the Beijing Zone. The design was inspired by the Dunhuang frescos in China.", + // question: "What is another nice name of Big Air Shougang?", + // answer: [ + // "Snow Apsaras", + // "Snow Swallow", + // "No idea" + // ], + // id: 'Y-4-3', + // rightIndex: 0 + // }, + // 第4题 暂删 + // { + // introduction: "Compared with Pyeongchang 2018 Olympic Winter Games, there will be seven new events in Beijing, including short-track speed skating mixed team relay, ski jumping mixed team, freestyle ski jumping, freestyle skiing aerials mixed team and snowboard cross mixed team.", + // question: "Which of the following is a new event of the Beijing 2022 Olympic Winter Games?", + // answer: [ + // "Bobsleigh (women’s singles)", + // "Bobsleigh (men’s singles)", + // "No idea" + // ], + // id: 'Y-4-4', + // rightIndex: 0 + // }, + // 第5题 暂删 + // { + // introduction: "Olympic Winter Games have slogans. For example, the slogan of Sochi 2014 was “Hot. Cool. Yours”; and the slogan of Pyeongchang 2018 was “Passion. Connected”. ", + // question: "Do you know the slogan of Beijing 2022?", + // answer: [ + // "Together for a Shared Future", + // "Toward a New World", + // "No idea" + // ], + // id: 'Y-4-5', + // rightIndex: 0 + // }, + // 第6题 + { + introduction: "The National Ski jumping Center is the first ski jumping venue in China. The hills are divided into HS140 (length 110 m, drop 135 m) and HS106 (length 106 m, drop 115 m). ", + question: "What is the nick name of the National Ski Jumping Center?", + answer: [ + { + right: true, + word: "Snow Ruyi Scepter" + }, + { + word: "Snow Jade Belt" + }, + { + word: "No idea" + } + ], + id: 'Y-4-6' + }, + ], + // 类型五 运动员 + [ + // 第1题 + { + introduction: "Freestyle skiing originated from the 1960s on the basis of alpine skiing. The world’s first formal freestyle skiing competition was held in New Hampshire in 1971. It was officially listed as a Winter Olympic discipline in 1992.", + question: "Which one of the following is not a representative of freestyle skiing?", + answer: [ + { + right: true, + word: "Wang Chunli" + }, + { + word: "Xu Mengtao" + }, + { + word: "No idea" + } + ], + id: 'Y-5-1' + }, + // 第2题 + { + introduction: "The six Ambassadors of Beijing 2022 are famous Chinese athletes responsible for publicizing and promoting the joint bid of Beijing and Zhangjiakou to host the Olympic Winter Games to the world.", + question: "Apart from Yao Ming, Shen Xue, Zhao Hongbo, and Zhang Hong, who are the other two Ambassadors for the Beijing 2022 Olympic Winter Games?", + answer: [ + { + right: true, + word: "Li Nina, Hou Bin" + }, + { + word: "Yang Yang, Gu Ailing" + }, + { + word: "No idea" + } + ], + id: 'Y-5-2' + }, + // // 第3题 + // { + // introduction: "Mr. Samaranch and Mr. Rogge, good friends of the Chinese people and promoters of China’s Olympic cause, successively resigned from the International Olympic Committee (IOC). The current President of the Olympic Winter Games was elected as the 9th President of the IOC in 2013 for a term of eight years, and was successfully re-elected as the 10th President of the IOC in 2021.", + // question: "Do you know who the President of the Olympic Winter Games is?", + // answer: [ + // "Thomas Bach", + // "Juan Antonio Samaranch", + // "No idea" + // ], + // id: 'Y-5-3' + // }, + ], +] + +// 反馈 +export const reaction = [ + // 东北话反应 + { + right: [ + { + id: 'D-R-1', + word: '你这有两把刷子啊' + }, + { + id: 'D-R-2', + word: '哎哟哦 可以啊' + }, + { + id: 'D-R-3', + word: '哦了妥妥的' + }, + { + id: 'D-R-4', + word: '你这老厉害了啊' + }, + { + id: 'D-R-5', + word: '这脑瓜子杠杠滴' + }, + ], + wrong: [ + { + id: 'D-W-1', + word: '可长点心吧!选错了都' + }, + { + id: 'D-W-2', + word: '拉倒吧,选错了都' + }, + { + id: 'D-W-3', + word: '你在寻思寻思呗' + }, + ], + noIdea: [ + { + id: 'D-N-1', + word: '多大点事儿啊~一会就告诉你' + }, + { + id: 'D-N-2', + word: '小case!一会就给你整明白' + }, + { + id: 'D-N-3', + word: '麻捏儿滴,一会跟我学吧' + }, + { + id: 'D-N-4', + word: '这老简单了,你咋能不会呢' + }, + ] + }, + // 普通 话反应 + { + right: [ + { + id: 'P-R-1', + word: '答对了,不愧是你!' + }, + { + id: 'P-R-2', + word: '厉害了,这都没难住你' + }, + { + id: 'P-R-3', + word: '太棒了!你可真厉害!' + }, + ], + wrong: [ + { + id: 'P-W-1', + word: '阿哦,答错了!' + }, + { + id: 'P-W-2', + word: '再仔细想想?' + }, + { + id: 'P-W-3', + word: '嗯?是这样的吗?' + }, + ], + noIdea: [ + { + id: 'P-N-1', + word: '这都不是事,答案马上揭晓哦' + }, + { + id: 'P-N-2', + word: '别气馁,继续和我学习吧' + }, + { + id: 'P-N-3', + word: '没关系,聪明的我一会告诉你哟' + }, + ] + }, + // 英语 话反应 + { + right: [ + { + id: 'Y-R-1', + word: 'Awesome!Good job.' + }, + { + id: 'Y-R-2', + word: 'Perfect! Way to go!' + }, + { + id: 'Y-R-3', + word: 'You are something else.' + }, + { + id: 'Y-R-4', + word: 'You Rock.' + }, + ], + wrong: [ + { + id: 'Y-W-1', + word: 'No No No~' + }, + { + id: 'Y-W-2', + word: 'Hey!chin up!' + }, + { + id: 'Y-W-3', + word: "A ou~ you've got that wrong~" + }, + ], + noIdea: [ + { + id: 'Y-N-1', + word: 'Keep learning! Continue' + }, + { + id: 'Y-N-2', + word: 'Keep pushing!you are the best.' + }, + { + id: 'Y-N-3', + word: 'Go get them! You can do it' + }, + ] + } +] \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/stage.js b/src/page/index/PushCoinGame/game/stage.js new file mode 100755 index 0000000..ee14b82 --- /dev/null +++ b/src/page/index/PushCoinGame/game/stage.js @@ -0,0 +1,177 @@ +// import 'createjs'; +// import '../plugins/easeljs-0.8.2.min'; +import '@/utils/plugins/easeljs-1.0.0.min'; +import Stats from '@/utils/plugins/stats-2d'; //frame rate +import Stats3d from '@/utils/plugins/stats-3d.min'; //frame rate +import { gsap } from 'gsap' //动画插件 +import utils from '@/utils/index.js' + +class creater { + constructor() { + this.FPS = 60; + window.createjs = createjs; + } + + createStage(APP) { + this.app = APP; + let that = this; + let stage = document.createElement('canvas'); + // stage.width = 750; + // stage.height = 1450; + stage.id = 'stageCanvas'; + let container = document.getElementById('container'); + container.appendChild(stage); + if (this.app.webGL) { + this.stage = new createjs.StageGL(stage, { transparent: true, antialias: true }); + this.stage.setTextureParams = function (gl, isPOT) { + if (this._antialias) { + //non POT linear works in some devices, but performance is NOT good, investigate + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + } else { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + } + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + }; + console.log('开启了webgl') + } else { + this.stage = new createjs.Stage(stage); + console.log('未开启webgl,canvas2d模式') + } + this.setStage(); + + //add stage frame rate stats + // if (this.app.debug) { + Stats.startFPS(this.stage, { x: 0, y: 200 }, this.app) + // } + + // 3d stats + if (this.app.debug) { + this.stats = new Stats3d(); + container.appendChild(this.stats.domElement); + } + + createjs.Ticker.timingMode = createjs.Ticker.RAF//TIMEOUT || RAF_SYNCHED || RAF + createjs.Ticker.framerate = this.FPS; + + let count = 0; + + createjs.Ticker.on("tick", function handleTicker(event) { + that.stage.update(); + that.app.FPS = Stats.FPS; + // 3d states + that.app.debug && that.stats.update(); + // count++; + // if (count % 100 == 0) { + // console.log("Paused:", event.delta); + // } + if (APP.status == 2 && !APP.paused) APP.update() + if (APP.needUpdate && APP.gameView) { + APP.gameView.update(); + } + }); + + return this + } + + //屏幕自适应 + adaptScreen() { + if (this.app.needAdaptScreen === false) return + this.currentStageWidth = window.innerWidth; + this.currentStageHeight = 1624 / 750 * window.innerWidth; + this.currentWidthHeightScale = this.currentStageWidth / this.currentStageHeight; + + if (this.currentStageWidth > this.currentStageHeight) { + if (this.initWidthHeightScale < this.currentWidthHeightScale) + this.stageCanvas.scaleX = this.stageCanvas.scaleY = this.currentStageWidth / this.initStageWidth; + else + this.stageCanvas.scaleX = this.stageCanvas.scaleY = this.currentStageHeight / this.initStageHeight; + } + else { + if (this.initWidthHeightScale < this.currentWidthHeightScale) + this.stageCanvas.scaleX = this.stageCanvas.scaleY = this.currentStageWidth / this.initStageWidth; + else + this.stageCanvas.scaleX = this.stageCanvas.scaleY = this.currentStageHeight / this.initStageHeight; + } + this.stage.x = 0//(this.currentStageWidth - this.initStageWidth) * this.stageCanvas.scaleX / 2; + this.stage.y = 0//(window.innerHeight - this.currentStageHeight) * this.stageCanvas.scaleY / 2; + + this.offsetTop = (window.innerHeight - this.currentStageHeight) * this.stageCanvas.scaleY; + + if (window.innerHeight < this.currentStageHeight) + gsap.set(this.stageCanvas, { y: this.offsetTop }); //+ (window.deviceInfo.screenSize <= 2 ? 20 : 0) + else + gsap.set(this.stageCanvas, { y: 0 }); + + // console.log(this.stageCanvas.scaleX,this.stageCanvas.scaleY,window.devicePixelRatio) + // console.log(this.stageContainer.x,this.stageContainer.y,this.currentStageHeight,this.offsetTop) + + if (!this.ratio) { + this.ratio = /*appPlugins.isAndriod() ? 1 :*/ 2 //window.devicePixelRatio //appPlugins.getDevicePixelRatio(this.stageCanvas.getContext("3d")); + } + this.stageCanvas.width = this.currentStageWidth * this.ratio; + this.stageCanvas.height = this.currentStageHeight * this.ratio; + this.stageCanvas.style.width = this.currentStageWidth + "px"; + this.stageCanvas.style.height = this.currentStageHeight + "px"; + this.stage.scaleX = this.ratio * this.stageCanvas.scaleX; + this.stage.scaleY = this.ratio * this.stageCanvas.scaleY; + this.stageRenderWidth = 750; + this.stageRenderHeight = this.currentStageHeight / this.currentStageWidth * this.stageRenderWidth; + + // console.log(this.stageRenderWidth,this.stageCanvas.height) + + if (this.app.webGL) { + this.stage.updateViewport(this.stageCanvas.width, this.stageCanvas.height) + } + // this.stage.updateViewport(this.stageCanvas.width,this.stageCanvas.height) + // + return (this.currentStageHeight - this.initStageHeight) * this.stageCanvas.scaleY / 2 + } + + setStage() { + var initWidth = 750; + var initHeight = 1624; + + this.stageCanvas = this.stage.canvas; + this.stageCanvas.width = initHeight; + this.stageCanvas.height = initHeight; + this.initStageWidth = initWidth; + this.initStageHeight = initHeight; + this.initWidthHeightScale = initWidth / initHeight; + + + // this.backgroundContainer = new createjs.Container();//加载层 + this.loadingContainer = new createjs.Container(); //加载层 + this.mainContainer = new createjs.Container().set({ alpha: 0 }); //游戏层 + + // this.mission_success_Container = new createjs.Container().set({alpha:0}); //通关层 + // this.timeCount_Container = new createjs.Container().set({alpha:0}); //timeCount层 + + // this.resultContainer = new createjs.Container(); //游戏结果页 + this.stageContainer = new createjs.Container(); //我的 最外层 + // this.panelContainer = new createjs.Container().set({alpha:0}); + + this.stageContainer.addChild(this.loadingContainer, this.mainContainer); + + this.stage.addChild(this.stageContainer); + // this.app.webGL && this.stage.setClearColor("#051e56"); + + createjs.Touch.enable(this.stage); + // console.log(this.stage) + this.stage.enableMouseOver(10); + this.stage.mouseMoveOutside = true; + + this.adaptScreen(); + + window.addEventListener("resize", (event) => { + utils.sleep(300).then(() => { + this.adaptScreen(); + }) + }); + } + +} + +module.exports = creater; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/game/view.js b/src/page/index/PushCoinGame/game/view.js new file mode 100644 index 0000000..4bb6de8 --- /dev/null +++ b/src/page/index/PushCoinGame/game/view.js @@ -0,0 +1,539 @@ +// import frameData from './frameData'; +import layoutData from './layout'; +import createLayout from './createView'; +// import maskCreater from './maskCreater'; //mask creater +import { gsap } from "gsap"; +// import utils from '@/utils/index.js' +// import { MotionPathPlugin } from "gsap/MotionPathPlugin.js"; +// import Soul from './plugins/ScrollContainer'; //app scroll plugin module + +class layout { + constructor() { + this.filterMatrix = new createjs.ColorMatrix().adjustSaturation(-200); + + // 注册路径插件 + // gsap.registerPlugin(MotionPathPlugin); + } + + init() { + + + //update btns position by viewport + // this.updatePosByViewport(); + + return this + } + + upgrate(GAME, VIEW, ANI) { + this.game = GAME; + this.view = VIEW; + this.ani = ANI; + + return this + } + + //根据页面更新适配内容 + updatePosByViewport() { + // console.log(this.game.scene.oHeight) + if (this.game.oHeight <= 1181 / 2) { + if (this.game.scene.oHeight > 1110 / 2) { + //iphone 5 5s + console.log('iphone 5 5s') + this.game_score_text.y += 140; + this.game_time_bar.y += 140; + this.game_score_bar.y += 140; + this.game_time_text.y += 140; + + } else { + //suitable huawei + console.log('suitable huawei') + this.game_score_text.y += 220; + this.game_time_bar.y += 220; + this.game_score_bar.y += 220; + this.game_time_text.y += 220; + + } + } else if (this.game.scene.oHeight <= 673) { + console.log('iphone8p') + this.game_score_text.y += 120; + this.game_time_bar.y += 120; + this.game_score_bar.y += 120; + this.game_time_text.y += 120; + + } else { + console.log('适配机型x') + } + } + + createBitmap(spriteSheet, name) { + return new createjs.Sprite(spriteSheet, name); + } + + //创建loading页 + loading(GAME) { + this.game = GAME; + this.loadingCacheContainer = new createjs.Container(); + this.loadingAnimation = {}; + //create layout + for (let i in layoutData['loading']) { + let item = layoutData['loading'][i]; + item.layout = this; + item.game = this.game; + item.loader = this.game.loadingLoader; + item.container = this.game.stage.loadingContainer; + item.cacheContainer = this.loadingCacheContainer; + + if (item.singleSprite && item.singleSprite.visible) { + item.singleSprite.parent = this.loadingSprite; + } + + createLayout(item); + } + + gsap.to(this.loading_snow, { rotation: 360, ease: 'none', repeat: -1, duration: 5 }) + + // 创建粒子动画 + this.createLoadingParticle(); + + return this + } + + //隐藏loading页面 + hideLoading(step = 1) { + //create story index + this.game.scene = 2; + gsap.to(this.game.stage.loadingContainer, { + alpha: 0, duration: 0.65, delay: step == 3 ? 1 : 0, onComplete: () => { + // 将loading重置ui显示 为二次加载资源做显示 + this.changeLoadingLayout(step); + } + }) + gsap.to(this.game.stage.mainContainer, { alpha: 1, duration: 0.65 }); + } + + // 准备下一次loading + changeLoadingLayout(step) { + if (step == 1) { + // 进度归零 + this.loading_progress_text.text = '0%'; + // 隐藏元素 + gsap.set([this.loading_start, this.loading_progress_bg, this.loading_progress_bar, this.loading_snow, this.loading_text], { alpha: 0 }) + // 显示元素 + gsap.set([this.loading_text2, this.loading_box, this.loading_light, this.loading_person], { alpha: 1 }) + gsap.set(this.loading_progress_text, { alpha: 1, y: 1260 }) + // 准备动画 + this.readyLangLoaderAni(); + } else if (step == 2) { + // 隐藏元素 + gsap.set([this.loading_text2, this.loading_light, this.loading_person], { alpha: 0 }) + gsap.set(this.loading_progress_text, { alpha: 0 }) + // 显示元素 + gsap.set([this.loading_text3, this.loading_light2, this.loading_arrow], { alpha: 1 }) + // 如果是英文 显示英文文案 + if (this.game.langConfig.id == 3) { + gsap.set([this.loading_text2_en, this.loading_text3], { alpha: 0 }) + gsap.set([this.loading_text3_en], { alpha: 1 }) + } + // 准备动画 + this.readyPosterLoaderAni(); + } + } + + // 准备语言加载动画 + readyLangLoaderAni() { + this.langLoaderAni = []; + let ani1 = new gsap.timeline({ repeat: -1, paused: true }) + .to([this.loading_light, this.loading_person], { alpha: 0.86, duration: 0.2 }) + .to([this.loading_light, this.loading_person], { alpha: 1, duration: 0.15 }) + .to([this.loading_light, this.loading_person], { alpha: 0.6, duration: 0.2 }) + .to([this.loading_light, this.loading_person], { alpha: 1, duration: 0.1 }) + + let ani2 = gsap.to([this.loading_person, this.loading_box], { y: '+=15', yoyo: true, repeat: -1, duration: 1.5 }) + + + this.langLoaderAni.push(ani1, ani2) + } + + // 播放语言加载时动画 + playLangLoaderAni() { + this.langLoaderAni.forEach((item) => { + item.restart(); + }) + } + + // 暂停语言加载时动画 + pauseLangLoaderAni() { + this.langLoaderAni.forEach((item) => { + item.pause(); + }) + } + + // 准备语言加载动画 + readyPosterLoaderAni() { + this.posterLoaderAni = []; + let ani1 = new gsap.timeline({ repeat: -1, paused: true }) + .to(this.loading_light2, { alpha: 0.86, duration: 0.2 }) + .to(this.loading_light2, { alpha: 1, duration: 0.15 }) + .to(this.loading_light2, { alpha: 0.6, duration: 0.2 }) + .to(this.loading_light2, { alpha: 1, duration: 0.1 }) + + let ani2 = gsap.to([this.loading_box], { y: '+=15', yoyo: true, repeat: -1, duration: 1.5 }) + + let ani3 = gsap.to([this.loading_arrow], { y: '+=15', scaleX: 0.95, yoyo: true, repeat: -1, duration: 1.5 }) + + + this.posterLoaderAni.push(ani1, ani2, ani3) + } + + // 播放语言加载时动画 + playPosterLoaderAni() { + this.posterLoaderAni.forEach((item) => { + item.restart(); + }) + } + + // 暂停语言加载时动画 + pausePosterLoaderAni() { + this.posterLoaderAni.forEach((item) => { + item.pause(); + }) + } + + + // 帧生成动画 + framePlayer(config) { + // 图像资源 + // 容器 + // const container = new createjs.Container(); + + // loader + const loader = this.game[config.name]; + + // images + const images = []; + config.imgIds.forEach((item) => { + images.push(loader.getResult(item)); + }) + + // handle speed + Object.keys(config.sprite.animations).forEach((key) => { + // console.log('speed=', this.game.globalSpeed * 0.18) + config.sprite.animations[key].speed = this.game.globalSpeed * 0.18; + config.sprite.animations[key].next = 'wait' + }); + + // animation config + const aniData = { + images, + frames: config.sprite.frames, + animations: config.sprite.animations + } + + const spriteSheet = new createjs.SpriteSheet(aniData); + const animation = new createjs.Sprite(spriteSheet); + + // default setting + if (config.name === 'guide' || config.name === 'wait') { + animation.set({ + name: config.name, + x: 390, + y: 280 + 512, + scaleX: 1.25, + scaleY: 1.25, + regX: 750 * 0.85 / 2, + regY: 1624 * 0.85 / 2, + alpha: 0 + }) + } else { + animation.set({ + name: config.name, + x: 220, + y: 565 + 512, + scaleX: 1, + scaleY: 1, + regX: 750 * 1 / 2, + regY: 1624 * 1 / 2, + alpha: 0 + }) + } + + + + + + return animation + } + + // 生成海报 + createPoster(nickname = '', level = 1) { + this.posterContainer = new createjs.Container().set({ alpha: 1, name: 'posterContainer' }); + // this.game.stage.mainContainer.addChild(this.posterContainer); + + // 海报图片 + let posterImg = this.game.posterLoader.getResult('poster_bg'); + // 海报对象 + let poster = new createjs.Bitmap(posterImg); + + // nickname + let nt; + if (nickname) { + nt = this.game.vue.$Utils.cutString(nickname, 20, true); + } + let nicknameText = new createjs.Text(nt, "38px Helvetica, Arial, sans-serif", "#31425b").set({ + x: 375, + y: 1086, + textAlign: 'center' + }); + + let levelImg = this.game.posterLoader.getResult(`word_${level}`); + let posConfig = [ + { + x: 50, + y: 239 + }, + { + x: 70, + y: 242 + }, + { + x: 54, + y: 243 + }, + { + x: 57, + y: 224 + }, + { + x: 50, + y: 243 + } + ] + // 等级称号 + let levelTitle = new createjs.Bitmap(levelImg).set( + this.game.langConfig.id == 3 ? posConfig[Number(level) - 1] : posConfig[4] + ); + + + let personImg = this.game.posterLoader.getResult('person'); + // 王冰冰 + let person = new createjs.Bitmap(personImg).set({ + x: this.game.langConfig.id == 3 ? 76 : 86, + y: this.game.langConfig.id == 3 ? 381 : 256 + }); + + // 根据版本选择不同的二维码 目前全部选用微信版本二维码 + let codeName = 'qrcode'; + // switch (process.env.VUE_APP_CURRENTMODE) { + // case 'ysprod': + // codeName = 'ys_qrcode'; + // break; + // case 'wbprod': + // codeName = 'wb_qrcode'; + // break; + // default: + // codeName = 'qrcode'; + // break; + // } + let qrcodeImg = this.game.posterLoader.getResult(codeName); + // 海报对象 + let qrcode = new createjs.Bitmap(qrcodeImg).set({ + x: this.game.langConfig.id == 3 ? 305 : 306, + y: this.game.langConfig.id == 3 ? 1256 : 1275, + scaleX: 0.34, + scaleY: 0.34, + width: 136, + height: 136 + }); + + let logoImg = this.game.posterLoader.getResult('logo'); + // 海报对象 + let logo = new createjs.Bitmap(logoImg).set({ + x: this.game.langConfig.id == 3 ? 341 : 341, + y: this.game.langConfig.id == 3 ? 1482 : 1482, + }); + + // 插入container + this.posterContainer.addChild(poster, nicknameText, qrcode, levelTitle, person, logo); + + this.posterContainer.cache(0, 0, 750, 1538); + + // easejs > 1.0.0 getCacheDataURL报错 0.8.2版本正常 + let baseUrl = this.posterContainer.cacheCanvas.toDataURL('image/png'); + // let baseUrl = this.posterContainer.getCacheDataURL(); + + setTimeout(() => { + this.destroyPosterCreater(); + }, 1000); + + return baseUrl + } + + // 销毁海报生成器 + destroyPosterCreater() { + this.posterContainer.uncache(); + this.posterContainer.removeAllChildren(); + this.game.stage.mainContainer.removeChild(this.posterContainer); + this.posterContainer = null; + } + + // index 粒子制造机 + createParticle() { + + // 容器 + // const loadingContainer = this.game.stage.loadingContainer; + + // loader + const loader = this.game.vue.$beforeLoader; + + // sprite image + const spriteImg = loader.getResult('snowSprite'); + + + const container = new createjs.Container(); + + + const aniData = { + images: [spriteImg], + frames: [ + [1, 1, 77, 82, 0, 0, 0], + [1, 85, 57, 55, 0, 0, 0], + [1, 142, 46, 45, 0, 0, 0], + [49, 142, 15, 15, 0, 0, 0], + [60, 85, 8, 12, 0, 0, 0], + [60, 99, 6, 6, 0, 0, 0] + ], + animations: { + "snow-1": { "frames": [0] }, + "snow-2": { "frames": [1] }, + "snow-3": { "frames": [2] }, + "snow-4": { "frames": [3] }, + "snow-5": { "frames": [4] }, + "snow-6": { "frames": [3] }, + "snow-7": { "frames": [4] }, + "snow-8": { "frames": [2] }, + "snow-9": { "frames": [3] }, + "snow-10": { "frames": [1] }, + } + } + + const spriteSheet = new createjs.SpriteSheet(aniData); + + const arr = []; + for (let i = 0; i < (window.deviceInfo.system == 'IOS' ? 50 : 50); i++) { + const scale = Math.random() * 0.35 + 0.5; + const name = `snow-${this.game.vue.$Utils.rangeRandom(1, 10)}`; + const sprite = this.createBitmap(spriteSheet, name).set({ + x: Math.random() * 750 - 30, + y: Math.random() * 1300, + ox: Math.random() * 750, + oy: -50, + // regX:14, + // regY:14, + scaleX: scale, + scaleY: scale, + speedX: (Math.random() > 0.5 ? 1 : -1) * (Math.random() * 0.5 + 0.25), + speedY: Math.random() * 1 + 1, + speedR: Math.random() * 0.5 + 0.5, + alpha: Math.random() * 0.3 + 0.5, + }) + + arr.push(sprite) + } + // const mask = new createjs.Shape().setTransform(0, 0, 1, 1); + // mask.graphics.f('#000000').drawRoundRect(0, 0, 750, 1300, 0).es(); + // contianer.mask = mask; + // contianer.compositeOperation = 'darker'; + // arr.push(mask) + container.children = arr; + + this.prarticleContainer = container; + this.game.stage.mainContainer.addChild(container); + return container + } + + + // loading 粒子制造机 + createLoadingParticle() { + const container = new createjs.Container(); + + const arr = []; + for (let i = 0; i < (window.deviceInfo.system == 'IOS' ? 200 : 250); i++) { + const scale = Math.random() * 0.35 + 0.5; + const name = `snow_${this.game.utils.rangeRandom(1, 20)}`; + const sprite = this.createBitmap(this.loadingSprite.spriteSheet, name).set({ + x: Math.random() * 750 - 30, + y: Math.random() * 1624, + ox: Math.random() * 750, + oy: -100, + // regX:14, + // regY:14, + scaleX: scale, + scaleY: scale, + speedX: (Math.random() > 0.5 ? 1 : -1) * (Math.random() * 0.25 + 0.25), + speedY: Math.random() * 1 + 0.5, + alpha: Math.random() * 0.3 + 0.5 + }) + + arr.push(sprite) + } + // const mask = new createjs.Shape().setTransform(0, 0, 1, 1); + // mask.graphics.f('#000000').drawRoundRect(0, 0, 750, 1300, 0).es(); + // contianer.mask = mask; + // contianer.compositeOperation = 'darker'; + // arr.push(mask) + container.children = arr; + + this.loadingPrarticleContainer = container; + this.game.stage.loadingContainer.addChild(container); + return container + } + + //粒子动画更新 + update() { + if (!this.game) return + if (this.game.scene == 1 && this.loadingPrarticleContainer) { + if (this.loadingPrarticleContainer.alpha == 0) { + // console.log('2=>1') + this.loadingPrarticleContainer.alpha = 1; + } + if (this.prarticleContainer && this.prarticleContainer.alpha == 1) { + this.prarticleContainer.alpha = 0; + } + this.loadingPrarticleContainer.children.forEach((item, index) => { + + if (item.x < -30 || item.x > 800 || item.y > 1624) { + item.y = item.oy; + item.x = item.ox; + } + item.x += item.speedX + item.y += item.speedY + + }) + } + if (this.game.scene == 2 && this.prarticleContainer) { + if (this.prarticleContainer.alpha == 0) { + // console.log('1=>2') + this.prarticleContainer.alpha = 1; + } + + if (this.loadingPrarticleContainer.alpha == 1) { + this.loadingPrarticleContainer.alpha = 0; + } //题目一 粒子运动 + this.prarticleContainer.children.forEach((item, index) => { + + if (item.x < -30 || item.x > 800 || item.y > 1400) { + item.y = item.oy; + item.x = item.ox; + item.rotation = 0; + } + item.x += item.speedX * this.game.globalSpeed + item.y += item.speedY * this.game.globalSpeed + item.rotation += item.speedR * this.game.globalSpeed + + }) + } + + } +} + +module.exports = layout; \ No newline at end of file diff --git a/src/page/index/PushCoinGame/index.vue b/src/page/index/PushCoinGame/index.vue new file mode 100644 index 0000000..e6b2995 --- /dev/null +++ b/src/page/index/PushCoinGame/index.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/src/page/index/colorSort/index.vue b/src/page/index/colorSort/index.vue index 8cb5f59..e3ac939 100644 --- a/src/page/index/colorSort/index.vue +++ b/src/page/index/colorSort/index.vue @@ -22,7 +22,7 @@ v-for="(item, index) in newColorArr" :key="index" > -
Group {{item.name}}
+
Group {{ item.name }}
- +
-

最小值: {{item.min}}

-
+

最小值: {{ item.min }}

+
-

平均值: {{item.average}}

-
+

平均值: {{ item.average }}

+
-

最大值: {{item.max}}

-
+

最大值: {{ item.max }}

+
@@ -91,7 +100,6 @@ // @ is an alias to /src import colorUtil from "color-util"; import colors from "@/data/color.json"; -import Snap from "snapsvg-cjs"; import gsap from "gsap"; export default { name: "ColorSort", @@ -106,87 +114,88 @@ export default { hlsColorArr: [], newColorArr: [ { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', - },{ - name: '', - data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", }, { - name: '', + name: "", data: [], - average: '', - min: '', - max: '', + average: "", + min: "", + max: "", + }, + { + name: "", + data: [], + average: "", + min: "", + max: "", }, ], sortedColorArr: [], @@ -224,8 +233,7 @@ export default { autoAlpha: 1, x: this.hideOrigin ? 0 : "100%", zIndex: this.hideOrigin ? 2 : 10, - onStart: () => { - }, + onStart: () => {}, }); }, // 颜色数据转换为hsl @@ -319,11 +327,14 @@ export default { this.newColorArr[index].data.push(...sortedArr); // let other = this.getOtherInfo(sortedArr); - console.log(sortedArr[0]) + console.log(sortedArr[0]); this.newColorArr[index].min = sortedArr[0].hex; - this.newColorArr[index].max = sortedArr[sortedArr.length-1].hex; - this.newColorArr[index].average = sortedArr[Math.ceil(sortedArr.length/2)].hex; - this.newColorArr[index].name = this.newColorArr[index].average + this.newColorArr[index].max = + sortedArr[sortedArr.length - 1].hex; + this.newColorArr[index].average = + sortedArr[Math.ceil(sortedArr.length / 2)].hex; + this.newColorArr[index].name = + this.newColorArr[index].average; }); } else { // this.hlsColorArr.sort((a, b) => { @@ -514,7 +525,7 @@ export default { .prLayout(30px,30px); } } - .spans{ + .spans { .prLayout(100%,auto); display: flex; flex-direction: row; @@ -522,21 +533,21 @@ export default { align-items: center; flex-wrap: wrap; } - .desc{ + .desc { padding: 20px; display: flex; flex-direction: column; align-content: center; align-items: center; flex-wrap: wrap; - .row{ + .row { .prLayout(100%,60px); line-height: 60px; display: flex; flex-direction: row; align-content: center; align-items: center; - p{ + p { width: 200px; margin-right: 20px; } diff --git a/src/page/index/router/index.js b/src/page/index/router/index.js index aa85dcb..2f2b721 100644 --- a/src/page/index/router/index.js +++ b/src/page/index/router/index.js @@ -18,6 +18,7 @@ import Video from '../Video/index.vue' import Curve from '../modifier_curve/index.vue' import Drawing from '../Drawing/index.vue' import ColorSort from '../colorSort/index.vue' +import PushCoin from '../PushCoinGame/index.vue' @@ -123,6 +124,16 @@ const routes = [ keepAlive: false, // 是否保持活跃 }, }, + { + path: "/pushcoin", + name: "PushCoin", + component: PushCoin, + meta: { + title: "Push Coin Game", // 标题 + keepAlive: false, // 是否保持活跃 + }, + }, + // { // path: "/example", diff --git a/src/utils/plugins/easeljs-1.0.0.min.js b/src/utils/plugins/easeljs-1.0.0.min.js new file mode 100644 index 0000000..fa5833e --- /dev/null +++ b/src/utils/plugins/easeljs-1.0.0.min.js @@ -0,0 +1,18 @@ +/*! +* @license EaselJS +* Visit http://createjs.com/ for documentation, updates and examples. +* +* Copyright (c) 2011-2015 gskinner.com, inc. +* +* Distributed under the terms of the MIT license. +* http://www.opensource.org/licenses/mit-license.html +* +* This notice shall be included in all copies or substantial portions of the Software. +*/ +window.createjs=window.createjs||{},createjs.extend=function(a,b){"use strict";function c(){this.constructor=a}return c.prototype=b.prototype,a.prototype=new c},window.createjs=window.createjs||{},createjs.promote=function(a,b){"use strict";var c=a.prototype,d=Object.getPrototypeOf&&Object.getPrototypeOf(c)||c.__proto__;if(d){c[(b+="_")+"constructor"]=d.constructor;for(var e in d)c.hasOwnProperty(e)&&"function"==typeof d[e]&&(c[b+e]=d[e])}return a},window.createjs=window.createjs||{},createjs.indexOf=function(a,b){"use strict";for(var c=0,d=a.length;d>c;c++)if(b===a[c])return c;return-1},window.createjs=window.createjs||{},function(){"use strict";function a(){throw"UID cannot be instantiated"}a._nextID=0,a.get=function(){return a._nextID++},createjs.UID=a}(),window.createjs=window.createjs||{},createjs.deprecate=function(a,b){"use strict";return function(){var c="Deprecated property or method '"+b+"'. See docs for info.";return console&&(console.warn?console.warn(c):console.log(c)),a&&a.apply(this,arguments)}},window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c){this.type=a,this.target=null,this.currentTarget=null,this.eventPhase=0,this.bubbles=!!b,this.cancelable=!!c,this.timeStamp=(new Date).getTime(),this.defaultPrevented=!1,this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.removed=!1}var b=a.prototype;b.preventDefault=function(){this.defaultPrevented=this.cancelable&&!0},b.stopPropagation=function(){this.propagationStopped=!0},b.stopImmediatePropagation=function(){this.immediatePropagationStopped=this.propagationStopped=!0},b.remove=function(){this.removed=!0},b.clone=function(){return new a(this.type,this.bubbles,this.cancelable)},b.set=function(a){for(var b in a)this[b]=a[b];return this},b.toString=function(){return"[Event (type="+this.type+")]"},createjs.Event=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(){this._listeners=null,this._captureListeners=null}var b=a.prototype;a.initialize=function(a){a.addEventListener=b.addEventListener,a.on=b.on,a.removeEventListener=a.off=b.removeEventListener,a.removeAllEventListeners=b.removeAllEventListeners,a.hasEventListener=b.hasEventListener,a.dispatchEvent=b.dispatchEvent,a._dispatchEvent=b._dispatchEvent,a.willTrigger=b.willTrigger},b.addEventListener=function(a,b,c){var d;d=c?this._captureListeners=this._captureListeners||{}:this._listeners=this._listeners||{};var e=d[a];return e&&this.removeEventListener(a,b,c),e=d[a],e?e.push(b):d[a]=[b],b},b.on=function(a,b,c,d,e,f){return b.handleEvent&&(c=c||b,b=b.handleEvent),c=c||this,this.addEventListener(a,function(a){b.call(c,a,e),d&&a.remove()},f)},b.removeEventListener=function(a,b,c){var d=c?this._captureListeners:this._listeners;if(d){var e=d[a];if(e)for(var f=0,g=e.length;g>f;f++)if(e[f]==b){1==g?delete d[a]:e.splice(f,1);break}}},b.off=b.removeEventListener,b.removeAllEventListeners=function(a){a?(this._listeners&&delete this._listeners[a],this._captureListeners&&delete this._captureListeners[a]):this._listeners=this._captureListeners=null},b.dispatchEvent=function(a,b,c){if("string"==typeof a){var d=this._listeners;if(!(b||d&&d[a]))return!0;a=new createjs.Event(a,b,c)}else a.target&&a.clone&&(a=a.clone());try{a.target=this}catch(e){}if(a.bubbles&&this.parent){for(var f=this,g=[f];f.parent;)g.push(f=f.parent);var h,i=g.length;for(h=i-1;h>=0&&!a.propagationStopped;h--)g[h]._dispatchEvent(a,1+(0==h));for(h=1;i>h&&!a.propagationStopped;h++)g[h]._dispatchEvent(a,3)}else this._dispatchEvent(a,2);return!a.defaultPrevented},b.hasEventListener=function(a){var b=this._listeners,c=this._captureListeners;return!!(b&&b[a]||c&&c[a])},b.willTrigger=function(a){for(var b=this;b;){if(b.hasEventListener(a))return!0;b=b.parent}return!1},b.toString=function(){return"[EventDispatcher]"},b._dispatchEvent=function(a,b){var c,d,e=2>=b?this._captureListeners:this._listeners;if(a&&e&&(d=e[a.type])&&(c=d.length)){try{a.currentTarget=this}catch(f){}try{a.eventPhase=0|b}catch(f){}a.removed=!1,d=d.slice();for(var g=0;c>g&&!a.immediatePropagationStopped;g++){var h=d[g];h.handleEvent?h.handleEvent(a):h(a),a.removed&&(this.off(a.type,h,1==b),a.removed=!1)}}2===b&&this._dispatchEvent(a,2.1)},createjs.EventDispatcher=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(){throw"Ticker cannot be instantiated."}a.RAF_SYNCHED="synched",a.RAF="raf",a.TIMEOUT="timeout",a.timingMode=null,a.maxDelta=0,a.paused=!1,a.removeEventListener=null,a.removeAllEventListeners=null,a.dispatchEvent=null,a.hasEventListener=null,a._listeners=null,createjs.EventDispatcher.initialize(a),a._addEventListener=a.addEventListener,a.addEventListener=function(){return!a._inited&&a.init(),a._addEventListener.apply(a,arguments)},a._inited=!1,a._startTime=0,a._pausedTime=0,a._ticks=0,a._pausedTicks=0,a._interval=50,a._lastTime=0,a._times=null,a._tickTimes=null,a._timerId=null,a._raf=!0,a._setInterval=function(b){a._interval=b,a._inited&&a._setupTick()},a.setInterval=createjs.deprecate(a._setInterval,"Ticker.setInterval"),a._getInterval=function(){return a._interval},a.getInterval=createjs.deprecate(a._getInterval,"Ticker.getInterval"),a._setFPS=function(b){a._setInterval(1e3/b)},a.setFPS=createjs.deprecate(a._setFPS,"Ticker.setFPS"),a._getFPS=function(){return 1e3/a._interval},a.getFPS=createjs.deprecate(a._getFPS,"Ticker.getFPS");try{Object.defineProperties(a,{interval:{get:a._getInterval,set:a._setInterval},framerate:{get:a._getFPS,set:a._setFPS}})}catch(b){console.log(b)}a.init=function(){a._inited||(a._inited=!0,a._times=[],a._tickTimes=[],a._startTime=a._getTime(),a._times.push(a._lastTime=0),a.interval=a._interval)},a.reset=function(){if(a._raf){var b=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame;b&&b(a._timerId)}else clearTimeout(a._timerId);a.removeAllEventListeners("tick"),a._timerId=a._times=a._tickTimes=null,a._startTime=a._lastTime=a._ticks=a._pausedTime=0,a._inited=!1},a.getMeasuredTickTime=function(b){var c=0,d=a._tickTimes;if(!d||d.length<1)return-1;b=Math.min(d.length,b||0|a._getFPS());for(var e=0;b>e;e++)c+=d[e];return c/b},a.getMeasuredFPS=function(b){var c=a._times;return!c||c.length<2?-1:(b=Math.min(c.length-1,b||0|a._getFPS()),1e3/((c[0]-c[b])/b))},a.getTime=function(b){return a._startTime?a._getTime()-(b?a._pausedTime:0):-1},a.getEventTime=function(b){return a._startTime?(a._lastTime||a._startTime)-(b?a._pausedTime:0):-1},a.getTicks=function(b){return a._ticks-(b?a._pausedTicks:0)},a._handleSynch=function(){a._timerId=null,a._setupTick(),a._getTime()-a._lastTime>=.97*(a._interval-1)&&a._tick()},a._handleRAF=function(){a._timerId=null,a._setupTick(),a._tick()},a._handleTimeout=function(){a._timerId=null,a._setupTick(),a._tick()},a._setupTick=function(){if(null==a._timerId){var b=a.timingMode;if(b==a.RAF_SYNCHED||b==a.RAF){var c=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame;if(c)return a._timerId=c(b==a.RAF?a._handleRAF:a._handleSynch),void(a._raf=!0)}a._raf=!1,a._timerId=setTimeout(a._handleTimeout,a._interval)}},a._tick=function(){var b=a.paused,c=a._getTime(),d=c-a._lastTime;if(a._lastTime=c,a._ticks++,b&&(a._pausedTicks++,a._pausedTime+=d),a.hasEventListener("tick")){var e=new createjs.Event("tick"),f=a.maxDelta;e.delta=f&&d>f?f:d,e.paused=b,e.time=c,e.runTime=c-a._pausedTime,a.dispatchEvent(e)}for(a._tickTimes.unshift(a._getTime()-c);a._tickTimes.length>100;)a._tickTimes.pop();for(a._times.unshift(c);a._times.length>100;)a._times.pop()};var c=window,d=c.performance.now||c.performance.mozNow||c.performance.msNow||c.performance.oNow||c.performance.webkitNow;a._getTime=function(){return(d&&d.call(c.performance)||(new Date).getTime())-a._startTime},createjs.Ticker=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a){this.readyState=a.readyState,this._video=a,this._canvas=null,this._lastTime=-1,this.readyState<2&&a.addEventListener("canplaythrough",this._videoReady.bind(this))}var b=a.prototype;b.getImage=function(){if(!(this.readyState<2)){var a=this._canvas,b=this._video;if(a||(a=this._canvas=createjs.createCanvas?createjs.createCanvas():document.createElement("canvas"),a.width=b.videoWidth,a.height=b.videoHeight),b.readyState>=2&&b.currentTime!==this._lastTime){var c=a.getContext("2d");c.clearRect(0,0,a.width,a.height),c.drawImage(b,0,0,a.width,a.height),this._lastTime=b.currentTime}return a}},b._videoReady=function(){this.readyState=2},createjs.VideoBuffer=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d,e,f,g,h,i,j,k){this.Event_constructor(a,b,c),this.stageX=d,this.stageY=e,this.rawX=null==i?d:i,this.rawY=null==j?e:j,this.nativeEvent=f,this.pointerID=g,this.primary=!!h,this.relatedTarget=k}var b=createjs.extend(a,createjs.Event);b._get_localX=function(){return this.currentTarget.globalToLocal(this.rawX,this.rawY).x},b._get_localY=function(){return this.currentTarget.globalToLocal(this.rawX,this.rawY).y},b._get_isTouch=function(){return-1!==this.pointerID};try{Object.defineProperties(b,{localX:{get:b._get_localX},localY:{get:b._get_localY},isTouch:{get:b._get_isTouch}})}catch(c){}b.clone=function(){return new a(this.type,this.bubbles,this.cancelable,this.stageX,this.stageY,this.nativeEvent,this.pointerID,this.primary,this.rawX,this.rawY)},b.toString=function(){return"[MouseEvent (type="+this.type+" stageX="+this.stageX+" stageY="+this.stageY+")]"},createjs.MouseEvent=createjs.promote(a,"Event")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d,e,f){this.setValues(a,b,c,d,e,f)}var b=a.prototype;a.DEG_TO_RAD=Math.PI/180,a.identity=null,b.setValues=function(a,b,c,d,e,f){return this.a=null==a?1:a,this.b=b||0,this.c=c||0,this.d=null==d?1:d,this.tx=e||0,this.ty=f||0,this},b.append=function(a,b,c,d,e,f){var g=this.a,h=this.b,i=this.c,j=this.d;return(1!=a||0!=b||0!=c||1!=d)&&(this.a=g*a+i*b,this.b=h*a+j*b,this.c=g*c+i*d,this.d=h*c+j*d),this.tx=g*e+i*f+this.tx,this.ty=h*e+j*f+this.ty,this},b.prepend=function(a,b,c,d,e,f){var g=this.a,h=this.c,i=this.tx;return this.a=a*g+c*this.b,this.b=b*g+d*this.b,this.c=a*h+c*this.d,this.d=b*h+d*this.d,this.tx=a*i+c*this.ty+e,this.ty=b*i+d*this.ty+f,this},b.appendMatrix=function(a){return this.append(a.a,a.b,a.c,a.d,a.tx,a.ty)},b.prependMatrix=function(a){return this.prepend(a.a,a.b,a.c,a.d,a.tx,a.ty)},b.appendTransform=function(b,c,d,e,f,g,h,i,j){if(f%360)var k=f*a.DEG_TO_RAD,l=Math.cos(k),m=Math.sin(k);else l=1,m=0;return g||h?(g*=a.DEG_TO_RAD,h*=a.DEG_TO_RAD,this.append(Math.cos(h),Math.sin(h),-Math.sin(g),Math.cos(g),b,c),this.append(l*d,m*d,-m*e,l*e,0,0)):this.append(l*d,m*d,-m*e,l*e,b,c),(i||j)&&(this.tx-=i*this.a+j*this.c,this.ty-=i*this.b+j*this.d),this},b.prependTransform=function(b,c,d,e,f,g,h,i,j){if(f%360)var k=f*a.DEG_TO_RAD,l=Math.cos(k),m=Math.sin(k);else l=1,m=0;return(i||j)&&(this.tx-=i,this.ty-=j),g||h?(g*=a.DEG_TO_RAD,h*=a.DEG_TO_RAD,this.prepend(l*d,m*d,-m*e,l*e,0,0),this.prepend(Math.cos(h),Math.sin(h),-Math.sin(g),Math.cos(g),b,c)):this.prepend(l*d,m*d,-m*e,l*e,b,c),this},b.rotate=function(b){b*=a.DEG_TO_RAD;var c=Math.cos(b),d=Math.sin(b),e=this.a,f=this.b;return this.a=e*c+this.c*d,this.b=f*c+this.d*d,this.c=-e*d+this.c*c,this.d=-f*d+this.d*c,this},b.skew=function(b,c){return b*=a.DEG_TO_RAD,c*=a.DEG_TO_RAD,this.append(Math.cos(c),Math.sin(c),-Math.sin(b),Math.cos(b),0,0),this},b.scale=function(a,b){return this.a*=a,this.b*=a,this.c*=b,this.d*=b,this},b.translate=function(a,b){return this.tx+=this.a*a+this.c*b,this.ty+=this.b*a+this.d*b,this},b.identity=function(){return this.a=this.d=1,this.b=this.c=this.tx=this.ty=0,this},b.invert=function(){var a=this.a,b=this.b,c=this.c,d=this.d,e=this.tx,f=a*d-b*c;return this.a=d/f,this.b=-b/f,this.c=-c/f,this.d=a/f,this.tx=(c*this.ty-d*e)/f,this.ty=-(a*this.ty-b*e)/f,this},b.isIdentity=function(){return 0===this.tx&&0===this.ty&&1===this.a&&0===this.b&&0===this.c&&1===this.d},b.equals=function(a){return this.tx===a.tx&&this.ty===a.ty&&this.a===a.a&&this.b===a.b&&this.c===a.c&&this.d===a.d},b.transformPoint=function(a,b,c){return c=c||{},c.x=a*this.a+b*this.c+this.tx,c.y=a*this.b+b*this.d+this.ty,c},b.decompose=function(b){null==b&&(b={}),b.x=this.tx,b.y=this.ty,b.scaleX=Math.sqrt(this.a*this.a+this.b*this.b),b.scaleY=Math.sqrt(this.c*this.c+this.d*this.d);var c=Math.atan2(-this.c,this.d),d=Math.atan2(this.b,this.a),e=Math.abs(1-c/d);return 1e-5>e?(b.rotation=d/a.DEG_TO_RAD,this.a<0&&this.d>=0&&(b.rotation+=b.rotation<=0?180:-180),b.skewX=b.skewY=0):(b.skewX=c/a.DEG_TO_RAD,b.skewY=d/a.DEG_TO_RAD),b},b.copy=function(a){return this.setValues(a.a,a.b,a.c,a.d,a.tx,a.ty)},b.clone=function(){return new a(this.a,this.b,this.c,this.d,this.tx,this.ty)},b.toString=function(){return"[Matrix2D (a="+this.a+" b="+this.b+" c="+this.c+" d="+this.d+" tx="+this.tx+" ty="+this.ty+")]"},a.identity=new a,createjs.Matrix2D=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d,e){this.setValues(a,b,c,d,e)}var b=a.prototype;b.setValues=function(a,b,c,d,e){return this.visible=null==a?!0:!!a,this.alpha=null==b?1:b,this.shadow=c,this.compositeOperation=d,this.matrix=e||this.matrix&&this.matrix.identity()||new createjs.Matrix2D,this},b.append=function(a,b,c,d,e){return this.alpha*=b,this.shadow=c||this.shadow,this.compositeOperation=d||this.compositeOperation,this.visible=this.visible&&a,e&&this.matrix.appendMatrix(e),this},b.prepend=function(a,b,c,d,e){return this.alpha*=b,this.shadow=this.shadow||c,this.compositeOperation=this.compositeOperation||d,this.visible=this.visible&&a,e&&this.matrix.prependMatrix(e),this},b.identity=function(){return this.visible=!0,this.alpha=1,this.shadow=this.compositeOperation=null,this.matrix.identity(),this},b.clone=function(){return new a(this.alpha,this.shadow,this.compositeOperation,this.visible,this.matrix.clone())},createjs.DisplayProps=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b){this.setValues(a,b)}var b=a.prototype;b.setValues=function(a,b){return this.x=a||0,this.y=b||0,this},b.copy=function(a){return this.x=a.x,this.y=a.y,this},b.clone=function(){return new a(this.x,this.y)},b.toString=function(){return"[Point (x="+this.x+" y="+this.y+")]"},createjs.Point=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d){this.setValues(a,b,c,d)}var b=a.prototype;b.setValues=function(a,b,c,d){return this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0,this},b.extend=function(a,b,c,d){return c=c||0,d=d||0,a+c>this.x+this.width&&(this.width=a+c-this.x),b+d>this.y+this.height&&(this.height=b+d-this.y),a=this.x&&a+c<=this.x+this.width&&b>=this.y&&b+d<=this.y+this.height},b.union=function(a){return this.clone().extend(a.x,a.y,a.width,a.height)},b.intersection=function(b){var c=b.x,d=b.y,e=c+b.width,f=d+b.height;return this.x>c&&(c=this.x),this.y>d&&(d=this.y),this.x+this.width=e||d>=f?null:new a(c,d,e-c,f-d)},b.intersects=function(a){return a.x<=this.x+this.width&&this.x<=a.x+a.width&&a.y<=this.y+this.height&&this.y<=a.y+a.height},b.isEmpty=function(){return this.width<=0||this.height<=0},b.clone=function(){return new a(this.x,this.y,this.width,this.height)},b.toString=function(){return"[Rectangle (x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+")]"},createjs.Rectangle=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d,e,f,g){a.addEventListener&&(this.target=a,this.overLabel=null==c?"over":c,this.outLabel=null==b?"out":b,this.downLabel=null==d?"down":d,this.play=e,this._isPressed=!1,this._isOver=!1,this._enabled=!1,a.mouseChildren=!1,this.enabled=!0,this.handleEvent({}),f&&(g&&(f.actionsEnabled=!1,f.gotoAndStop&&f.gotoAndStop(g)),a.hitArea=f))}var b=a.prototype;b._setEnabled=function(a){if(a!=this._enabled){var b=this.target;this._enabled=a,a?(b.cursor="pointer",b.addEventListener("rollover",this),b.addEventListener("rollout",this),b.addEventListener("mousedown",this),b.addEventListener("pressup",this),b._reset&&(b.__reset=b._reset,b._reset=this._reset)):(b.cursor=null,b.removeEventListener("rollover",this),b.removeEventListener("rollout",this),b.removeEventListener("mousedown",this),b.removeEventListener("pressup",this),b.__reset&&(b._reset=b.__reset,delete b.__reset))}},b.setEnabled=createjs.deprecate(b._setEnabled,"ButtonHelper.setEnabled"),b._getEnabled=function(){return this._enabled},b.getEnabled=createjs.deprecate(b._getEnabled,"ButtonHelper.getEnabled");try{Object.defineProperties(b,{enabled:{get:b._getEnabled,set:b._setEnabled}})}catch(c){}b.toString=function(){return"[ButtonHelper]"},b.handleEvent=function(a){var b,c=this.target,d=a.type;"mousedown"==d?(this._isPressed=!0,b=this.downLabel):"pressup"==d?(this._isPressed=!1,b=this._isOver?this.overLabel:this.outLabel):"rollover"==d?(this._isOver=!0,b=this._isPressed?this.downLabel:this.overLabel):(this._isOver=!1,b=this._isPressed?this.overLabel:this.outLabel),this.play?c.gotoAndPlay&&c.gotoAndPlay(b):c.gotoAndStop&&c.gotoAndStop(b)},b._reset=function(){var a=this.paused;this.__reset(),this.paused=a},createjs.ButtonHelper=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c,d){this.color=a||"black",this.offsetX=b||0,this.offsetY=c||0,this.blur=d||0}var b=a.prototype;a.identity=new a("transparent",0,0,0),b.toString=function(){return"[Shadow]"},b.clone=function(){return new a(this.color,this.offsetX,this.offsetY,this.blur)},createjs.Shadow=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(a){this.EventDispatcher_constructor(),this.complete=!0,this.framerate=0,this._animations=null,this._frames=null,this._images=null,this._data=null,this._loadCount=0,this._frameHeight=0,this._frameWidth=0,this._numFrames=0,this._regX=0,this._regY=0,this._spacing=0,this._margin=0,this._parseData(a)}var b=createjs.extend(a,createjs.EventDispatcher);b._getAnimations=function(){return this._animations.slice()},b.getAnimations=createjs.deprecate(b._getAnimations,"SpriteSheet.getAnimations");try{Object.defineProperties(b,{animations:{get:b._getAnimations}})}catch(c){}b.getNumFrames=function(a){if(null==a)return this._frames?this._frames.length:this._numFrames||0;var b=this._data[a];return null==b?0:b.frames.length},b.getAnimation=function(a){return this._data[a]},b.getFrame=function(a){var b;return this._frames&&(b=this._frames[a])?b:null},b.getFrameBounds=function(a,b){var c=this.getFrame(a);return c?(b||new createjs.Rectangle).setValues(-c.regX,-c.regY,c.rect.width,c.rect.height):null},b.toString=function(){return"[SpriteSheet]"},b.clone=function(){throw"SpriteSheet cannot be cloned."},b._parseData=function(a){var b,c,d,e;if(null!=a){if(this.framerate=a.framerate||0,a.images&&(c=a.images.length)>0)for(e=this._images=[],b=0;c>b;b++){var f=a.images[b];if("string"==typeof f){var g=f;f=document.createElement("img"),f.src=g}e.push(f),f.getContext||f.naturalWidth||(this._loadCount++,this.complete=!1,function(a,b){f.onload=function(){a._handleImageLoad(b)}}(this,g),function(a,b){f.onerror=function(){a._handleImageError(b)}}(this,g))}if(null==a.frames);else if(Array.isArray(a.frames))for(this._frames=[],e=a.frames,b=0,c=e.length;c>b;b++){var h=e[b];this._frames.push({image:this._images[h[4]?h[4]:0],rect:new createjs.Rectangle(h[0],h[1],h[2],h[3]),regX:h[5]||0,regY:h[6]||0})}else d=a.frames,this._frameWidth=d.width,this._frameHeight=d.height,this._regX=d.regX||0,this._regY=d.regY||0,this._spacing=d.spacing||0,this._margin=d.margin||0,this._numFrames=d.count,0==this._loadCount&&this._calculateFrames();if(this._animations=[],null!=(d=a.animations)){this._data={};var i;for(i in d){var j={name:i},k=d[i];if("number"==typeof k)e=j.frames=[k];else if(Array.isArray(k))if(1==k.length)j.frames=[k[0]];else for(j.speed=k[3],j.next=k[2],e=j.frames=[],b=k[0];b<=k[1];b++)e.push(b);else{j.speed=k.speed,j.next=k.next;var l=k.frames;e=j.frames="number"==typeof l?[l]:l.slice(0)}(j.next===!0||void 0===j.next)&&(j.next=i),(j.next===!1||e.length<2&&j.next==i)&&(j.next=null),j.speed||(j.speed=1),this._animations.push(i),this._data[i]=j}}}},b._handleImageLoad=function(){0==--this._loadCount&&(this._calculateFrames(),this.complete=!0,this.dispatchEvent("complete"))},b._handleImageError=function(a){var b=new createjs.Event("error");b.src=a,this.dispatchEvent(b),0==--this._loadCount&&this.dispatchEvent("complete")},b._calculateFrames=function(){if(!this._frames&&0!=this._frameWidth){this._frames=[];var a=this._numFrames||1e5,b=0,c=this._frameWidth,d=this._frameHeight,e=this._spacing,f=this._margin;a:for(var g=0,h=this._images;g=l;){for(var m=f;j-f-c>=m;){if(b>=a)break a;b++,this._frames.push({image:i,rect:new createjs.Rectangle(m,l,c,d),regX:this._regX,regY:this._regY}),m+=c+e}l+=d+e}this._numFrames=b}},createjs.SpriteSheet=createjs.promote(a,"EventDispatcher")}(),window.createjs=window.createjs||{},function(){"use strict";function a(){this.command=null,this._stroke=null,this._strokeStyle=null,this._oldStrokeStyle=null,this._strokeDash=null,this._oldStrokeDash=null,this._strokeIgnoreScale=!1,this._fill=null,this._instructions=[],this._commitIndex=0,this._activeInstructions=[],this._dirty=!1,this._storeIndex=0,this.clear()}var b=a.prototype,c=a;a.getRGB=function(a,b,c,d){return null!=a&&null==c&&(d=b,c=255&a,b=a>>8&255,a=a>>16&255),null==d?"rgb("+a+","+b+","+c+")":"rgba("+a+","+b+","+c+","+d+")"},a.getHSL=function(a,b,c,d){return null==d?"hsl("+a%360+","+b+"%,"+c+"%)":"hsla("+a%360+","+b+"%,"+c+"%,"+d+")"},a.BASE_64={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,a:26,b:27,c:28,d:29,e:30,f:31,g:32,h:33,i:34,j:35,k:36,l:37,m:38,n:39,o:40,p:41,q:42,r:43,s:44,t:45,u:46,v:47,w:48,x:49,y:50,z:51,0:52,1:53,2:54,3:55,4:56,5:57,6:58,7:59,8:60,9:61,"+":62,"/":63},a.STROKE_CAPS_MAP=["butt","round","square"],a.STROKE_JOINTS_MAP=["miter","round","bevel"];var d=createjs.createCanvas?createjs.createCanvas():document.createElement("canvas");d.getContext&&(a._ctx=d.getContext("2d"),d.width=d.height=1),b._getInstructions=function(){return this._updateInstructions(),this._instructions},b.getInstructions=createjs.deprecate(b._getInstructions,"Graphics.getInstructions");try{Object.defineProperties(b,{instructions:{get:b._getInstructions}})}catch(e){}b.isEmpty=function(){return!(this._instructions.length||this._activeInstructions.length)},b.draw=function(a,b){this._updateInstructions();for(var c=this._instructions,d=this._storeIndex,e=c.length;e>d;d++)c[d].exec(a,b)},b.drawAsPath=function(a){this._updateInstructions();for(var b,c=this._instructions,d=this._storeIndex,e=c.length;e>d;d++)(b=c[d]).path!==!1&&b.exec(a)},b.moveTo=function(a,b){return this.append(new c.MoveTo(a,b),!0)},b.lineTo=function(a,b){return this.append(new c.LineTo(a,b))},b.arcTo=function(a,b,d,e,f){return this.append(new c.ArcTo(a,b,d,e,f))},b.arc=function(a,b,d,e,f,g){return this.append(new c.Arc(a,b,d,e,f,g))},b.quadraticCurveTo=function(a,b,d,e){return this.append(new c.QuadraticCurveTo(a,b,d,e))},b.bezierCurveTo=function(a,b,d,e,f,g){return this.append(new c.BezierCurveTo(a,b,d,e,f,g))},b.rect=function(a,b,d,e){return this.append(new c.Rect(a,b,d,e))},b.closePath=function(){return this._activeInstructions.length?this.append(new c.ClosePath):this},b.clear=function(){return this._instructions.length=this._activeInstructions.length=this._commitIndex=0,this._strokeStyle=this._oldStrokeStyle=this._stroke=this._fill=this._strokeDash=this._oldStrokeDash=null,this._dirty=this._strokeIgnoreScale=!1,this},b.beginFill=function(a){return this._setFill(a?new c.Fill(a):null)},b.beginLinearGradientFill=function(a,b,d,e,f,g){return this._setFill((new c.Fill).linearGradient(a,b,d,e,f,g))},b.beginRadialGradientFill=function(a,b,d,e,f,g,h,i){return this._setFill((new c.Fill).radialGradient(a,b,d,e,f,g,h,i))},b.beginBitmapFill=function(a,b,d){return this._setFill(new c.Fill(null,d).bitmap(a,b))},b.endFill=function(){return this.beginFill()},b.setStrokeStyle=function(a,b,d,e,f){return this._updateInstructions(!0),this._strokeStyle=this.command=new c.StrokeStyle(a,b,d,e,f),this._stroke&&(this._stroke.ignoreScale=f),this._strokeIgnoreScale=f,this},b.setStrokeDash=function(a,b){return this._updateInstructions(!0),this._strokeDash=this.command=new c.StrokeDash(a,b),this},b.beginStroke=function(a){return this._setStroke(a?new c.Stroke(a):null)},b.beginLinearGradientStroke=function(a,b,d,e,f,g){return this._setStroke((new c.Stroke).linearGradient(a,b,d,e,f,g))},b.beginRadialGradientStroke=function(a,b,d,e,f,g,h,i){return this._setStroke((new c.Stroke).radialGradient(a,b,d,e,f,g,h,i))},b.beginBitmapStroke=function(a,b){return this._setStroke((new c.Stroke).bitmap(a,b))},b.endStroke=function(){return this.beginStroke()},b.curveTo=b.quadraticCurveTo,b.drawRect=b.rect,b.drawRoundRect=function(a,b,c,d,e){return this.drawRoundRectComplex(a,b,c,d,e,e,e,e)},b.drawRoundRectComplex=function(a,b,d,e,f,g,h,i){return this.append(new c.RoundRect(a,b,d,e,f,g,h,i))},b.drawCircle=function(a,b,d){return this.append(new c.Circle(a,b,d))},b.drawEllipse=function(a,b,d,e){return this.append(new c.Ellipse(a,b,d,e))},b.drawPolyStar=function(a,b,d,e,f,g){return this.append(new c.PolyStar(a,b,d,e,f,g))},b.append=function(a,b){return this._activeInstructions.push(a),this.command=a,b||(this._dirty=!0),this},b.decodePath=function(b){for(var c=[this.moveTo,this.lineTo,this.quadraticCurveTo,this.bezierCurveTo,this.closePath],d=[2,2,4,6,0],e=0,f=b.length,g=[],h=0,i=0,j=a.BASE_64;f>e;){var k=b.charAt(e),l=j[k],m=l>>3,n=c[m];if(!n||3&l)throw"bad path data (@"+e+"): "+k;var o=d[m];m||(h=i=0),g.length=0,e++;for(var p=(l>>2&1)+2,q=0;o>q;q++){var r=j[b.charAt(e)],s=r>>5?-1:1;r=(31&r)<<6|j[b.charAt(e+1)],3==p&&(r=r<<6|j[b.charAt(e+2)]),r=s*r/10,q%2?h=r+=h:i=r+=i,g[q]=r,e+=p}n.apply(this,g)}return this},b.store=function(){return this._updateInstructions(!0),this._storeIndex=this._instructions.length,this},b.unstore=function(){return this._storeIndex=0,this},b.clone=function(){var b=new a;return b.command=this.command,b._stroke=this._stroke,b._strokeStyle=this._strokeStyle,b._strokeDash=this._strokeDash,b._strokeIgnoreScale=this._strokeIgnoreScale,b._fill=this._fill,b._instructions=this._instructions.slice(),b._commitIndex=this._commitIndex,b._activeInstructions=this._activeInstructions.slice(),b._dirty=this._dirty,b._storeIndex=this._storeIndex,b},b.toString=function(){return"[Graphics]"},b.mt=b.moveTo,b.lt=b.lineTo,b.at=b.arcTo,b.bt=b.bezierCurveTo,b.qt=b.quadraticCurveTo,b.a=b.arc,b.r=b.rect,b.cp=b.closePath,b.c=b.clear,b.f=b.beginFill,b.lf=b.beginLinearGradientFill,b.rf=b.beginRadialGradientFill,b.bf=b.beginBitmapFill,b.ef=b.endFill,b.ss=b.setStrokeStyle,b.sd=b.setStrokeDash,b.s=b.beginStroke,b.ls=b.beginLinearGradientStroke,b.rs=b.beginRadialGradientStroke,b.bs=b.beginBitmapStroke,b.es=b.endStroke,b.dr=b.drawRect,b.rr=b.drawRoundRect,b.rc=b.drawRoundRectComplex,b.dc=b.drawCircle,b.de=b.drawEllipse,b.dp=b.drawPolyStar,b.p=b.decodePath,b._updateInstructions=function(b){var c=this._instructions,d=this._activeInstructions,e=this._commitIndex;if(this._dirty&&d.length){c.length=e,c.push(a.beginCmd);var f=d.length,g=c.length;c.length=g+f;for(var h=0;f>h;h++)c[h+g]=d[h];this._fill&&c.push(this._fill),this._stroke&&(this._strokeDash!==this._oldStrokeDash&&c.push(this._strokeDash),this._strokeStyle!==this._oldStrokeStyle&&c.push(this._strokeStyle),b&&(this._oldStrokeStyle=this._strokeStyle,this._oldStrokeDash=this._strokeDash),c.push(this._stroke)),this._dirty=!1}b&&(d.length=0,this._commitIndex=c.length)},b._setFill=function(a){return this._updateInstructions(!0),this.command=this._fill=a,this},b._setStroke=function(a){return this._updateInstructions(!0),(this.command=this._stroke=a)&&(a.ignoreScale=this._strokeIgnoreScale),this},(c.LineTo=function(a,b){this.x=a,this.y=b}).prototype.exec=function(a){a.lineTo(this.x,this.y)},(c.MoveTo=function(a,b){this.x=a,this.y=b}).prototype.exec=function(a){a.moveTo(this.x,this.y)},(c.ArcTo=function(a,b,c,d,e){this.x1=a,this.y1=b,this.x2=c,this.y2=d,this.radius=e}).prototype.exec=function(a){a.arcTo(this.x1,this.y1,this.x2,this.y2,this.radius)},(c.Arc=function(a,b,c,d,e,f){this.x=a,this.y=b,this.radius=c,this.startAngle=d,this.endAngle=e,this.anticlockwise=!!f}).prototype.exec=function(a){a.arc(this.x,this.y,this.radius,this.startAngle,this.endAngle,this.anticlockwise)},(c.QuadraticCurveTo=function(a,b,c,d){this.cpx=a,this.cpy=b,this.x=c,this.y=d}).prototype.exec=function(a){a.quadraticCurveTo(this.cpx,this.cpy,this.x,this.y)},(c.BezierCurveTo=function(a,b,c,d,e,f){this.cp1x=a,this.cp1y=b,this.cp2x=c,this.cp2y=d,this.x=e,this.y=f}).prototype.exec=function(a){a.bezierCurveTo(this.cp1x,this.cp1y,this.cp2x,this.cp2y,this.x,this.y)},(c.Rect=function(a,b,c,d){this.x=a,this.y=b,this.w=c,this.h=d}).prototype.exec=function(a){a.rect(this.x,this.y,this.w,this.h)},(c.ClosePath=function(){}).prototype.exec=function(a){a.closePath()},(c.BeginPath=function(){}).prototype.exec=function(a){a.beginPath()},b=(c.Fill=function(a,b){this.style=a,this.matrix=b}).prototype,b.exec=function(a){if(this.style){a.fillStyle=this.style;var b=this.matrix;b&&(a.save(),a.transform(b.a,b.b,b.c,b.d,b.tx,b.ty)),a.fill(),b&&a.restore()}},b.linearGradient=function(b,c,d,e,f,g){for(var h=this.style=a._ctx.createLinearGradient(d,e,f,g),i=0,j=b.length;j>i;i++)h.addColorStop(c[i],b[i]);return h.props={colors:b,ratios:c,x0:d,y0:e,x1:f,y1:g,type:"linear"},this},b.radialGradient=function(b,c,d,e,f,g,h,i){for(var j=this.style=a._ctx.createRadialGradient(d,e,f,g,h,i),k=0,l=b.length;l>k;k++)j.addColorStop(c[k],b[k]);return j.props={colors:b,ratios:c,x0:d,y0:e,r0:f,x1:g,y1:h,r1:i,type:"radial"},this},b.bitmap=function(b,c){if(b.naturalWidth||b.getContext||b.readyState>=2){var d=this.style=a._ctx.createPattern(b,c||"");d.props={image:b,repetition:c,type:"bitmap"}}return this},b.path=!1,b=(c.Stroke=function(a,b){this.style=a,this.ignoreScale=b}).prototype,b.exec=function(a){this.style&&(a.strokeStyle=this.style,this.ignoreScale&&(a.save(),a.setTransform(1,0,0,1,0,0)),a.stroke(),this.ignoreScale&&a.restore())},b.linearGradient=c.Fill.prototype.linearGradient,b.radialGradient=c.Fill.prototype.radialGradient,b.bitmap=c.Fill.prototype.bitmap,b.path=!1,b=(c.StrokeStyle=function(a,b,c,d,e){this.width=a,this.caps=b,this.joints=c,this.miterLimit=d,this.ignoreScale=e}).prototype,b.exec=function(b){b.lineWidth=null==this.width?"1":this.width,b.lineCap=null==this.caps?"butt":isNaN(this.caps)?this.caps:a.STROKE_CAPS_MAP[this.caps],b.lineJoin=null==this.joints?"miter":isNaN(this.joints)?this.joints:a.STROKE_JOINTS_MAP[this.joints],b.miterLimit=null==this.miterLimit?"10":this.miterLimit,b.ignoreScale=null==this.ignoreScale?!1:this.ignoreScale},b.path=!1,(c.StrokeDash=function(a,b){this.segments=a,this.offset=b||0}).prototype.exec=function(a){a.setLineDash&&(a.setLineDash(this.segments||c.StrokeDash.EMPTY_SEGMENTS),a.lineDashOffset=this.offset||0)},c.StrokeDash.EMPTY_SEGMENTS=[],(c.RoundRect=function(a,b,c,d,e,f,g,h){this.x=a,this.y=b,this.w=c,this.h=d,this.radiusTL=e,this.radiusTR=f,this.radiusBR=g,this.radiusBL=h}).prototype.exec=function(a){var b=(j>i?i:j)/2,c=0,d=0,e=0,f=0,g=this.x,h=this.y,i=this.w,j=this.h,k=this.radiusTL,l=this.radiusTR,m=this.radiusBR,n=this.radiusBL;0>k&&(k*=c=-1),k>b&&(k=b),0>l&&(l*=d=-1),l>b&&(l=b),0>m&&(m*=e=-1),m>b&&(m=b),0>n&&(n*=f=-1),n>b&&(n=b),a.moveTo(g+i-l,h),a.arcTo(g+i+l*d,h-l*d,g+i,h+l,l),a.lineTo(g+i,h+j-m),a.arcTo(g+i+m*e,h+j+m*e,g+i-m,h+j,m),a.lineTo(g+n,h+j),a.arcTo(g-n*f,h+j+n*f,g,h+j-n,n),a.lineTo(g,h+k),a.arcTo(g-k*c,h-k*c,g+k,h,k),a.closePath() +},(c.Circle=function(a,b,c){this.x=a,this.y=b,this.radius=c}).prototype.exec=function(a){a.arc(this.x,this.y,this.radius,0,2*Math.PI)},(c.Ellipse=function(a,b,c,d){this.x=a,this.y=b,this.w=c,this.h=d}).prototype.exec=function(a){var b=this.x,c=this.y,d=this.w,e=this.h,f=.5522848,g=d/2*f,h=e/2*f,i=b+d,j=c+e,k=b+d/2,l=c+e/2;a.moveTo(b,l),a.bezierCurveTo(b,l-h,k-g,c,k,c),a.bezierCurveTo(k+g,c,i,l-h,i,l),a.bezierCurveTo(i,l+h,k+g,j,k,j),a.bezierCurveTo(k-g,j,b,l+h,b,l)},(c.PolyStar=function(a,b,c,d,e,f){this.x=a,this.y=b,this.radius=c,this.sides=d,this.pointSize=e,this.angle=f}).prototype.exec=function(a){var b=this.x,c=this.y,d=this.radius,e=(this.angle||0)/180*Math.PI,f=this.sides,g=1-(this.pointSize||0),h=Math.PI/f;a.moveTo(b+Math.cos(e)*d,c+Math.sin(e)*d);for(var i=0;f>i;i++)e+=h,1!=g&&a.lineTo(b+Math.cos(e)*d*g,c+Math.sin(e)*d*g),e+=h,a.lineTo(b+Math.cos(e)*d,c+Math.sin(e)*d);a.closePath()},a.beginCmd=new c.BeginPath,createjs.Graphics=a}(),window.createjs=window.createjs||{},function(){"use strict";function a(){this.EventDispatcher_constructor(),this.alpha=1,this.cacheCanvas=null,this.bitmapCache=null,this.id=createjs.UID.get(),this.mouseEnabled=!0,this.tickEnabled=!0,this.name=null,this.parent=null,this.regX=0,this.regY=0,this.rotation=0,this.scaleX=1,this.scaleY=1,this.skewX=0,this.skewY=0,this.shadow=null,this.visible=!0,this.x=0,this.y=0,this.transformMatrix=null,this.compositeOperation=null,this.snapToPixel=!0,this.filters=null,this.mask=null,this.hitArea=null,this.cursor=null,this._props=new createjs.DisplayProps,this._rectangle=new createjs.Rectangle,this._bounds=null,this._webGLRenderStyle=a._StageGL_NONE}var b=createjs.extend(a,createjs.EventDispatcher);a._MOUSE_EVENTS=["click","dblclick","mousedown","mouseout","mouseover","pressmove","pressup","rollout","rollover"],a.suppressCrossDomainErrors=!1,a._snapToPixelEnabled=!1,a._StageGL_NONE=0,a._StageGL_SPRITE=1,a._StageGL_BITMAP=2;var c=createjs.createCanvas?createjs.createCanvas():document.createElement("canvas");c.getContext&&(a._hitTestCanvas=c,a._hitTestContext=c.getContext("2d"),c.width=c.height=1),b._getStage=function(){for(var a=this,b=createjs.Stage;a.parent;)a=a.parent;return a instanceof b?a:null},b.getStage=createjs.deprecate(b._getStage,"DisplayObject.getStage");try{Object.defineProperties(b,{stage:{get:b._getStage},cacheID:{get:function(){return this.bitmapCache&&this.bitmapCache.cacheID},set:function(a){this.bitmapCache&&(this.bitmapCache.cacheID=a)}},scale:{get:function(){return this.scaleX},set:function(a){this.scaleX=this.scaleY=a}}})}catch(d){}b.isVisible=function(){return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY)},b.draw=function(a,b){var c=this.bitmapCache;return c&&!b?c.draw(a):!1},b.updateContext=function(b){var c=this,d=c.mask,e=c._props.matrix;d&&d.graphics&&!d.graphics.isEmpty()&&(d.getMatrix(e),b.transform(e.a,e.b,e.c,e.d,e.tx,e.ty),d.graphics.drawAsPath(b),b.clip(),e.invert(),b.transform(e.a,e.b,e.c,e.d,e.tx,e.ty)),this.getMatrix(e);var f=e.tx,g=e.ty;a._snapToPixelEnabled&&c.snapToPixel&&(f=f+(0>f?-.5:.5)|0,g=g+(0>g?-.5:.5)|0),b.transform(e.a,e.b,e.c,e.d,f,g),b.globalAlpha*=c.alpha,c.compositeOperation&&(b.globalCompositeOperation=c.compositeOperation),c.shadow&&this._applyShadow(b,c.shadow)},b.cache=function(a,b,c,d,e,f){this.bitmapCache||(this.bitmapCache=new createjs.BitmapCache),this.bitmapCache.define(this,a,b,c,d,e,f)},b.updateCache=function(a){if(!this.bitmapCache)throw"cache() must be called before updateCache()";this.bitmapCache.update(a)},b.uncache=function(){this.bitmapCache&&(this.bitmapCache.release(),this.bitmapCache=void 0)},b.getCacheDataURL=function(){return this.bitmapCache?this.bitmapCache.getDataURL():null},b.localToGlobal=function(a,b,c){return this.getConcatenatedMatrix(this._props.matrix).transformPoint(a,b,c||new createjs.Point)},b.globalToLocal=function(a,b,c){return this.getConcatenatedMatrix(this._props.matrix).invert().transformPoint(a,b,c||new createjs.Point)},b.localToLocal=function(a,b,c,d){return d=this.localToGlobal(a,b,d),c.globalToLocal(d.x,d.y,d)},b.setTransform=function(a,b,c,d,e,f,g,h,i){return this.x=a||0,this.y=b||0,this.scaleX=null==c?1:c,this.scaleY=null==d?1:d,this.rotation=e||0,this.skewX=f||0,this.skewY=g||0,this.regX=h||0,this.regY=i||0,this},b.getMatrix=function(a){var b=this,c=a&&a.identity()||new createjs.Matrix2D;return b.transformMatrix?c.copy(b.transformMatrix):c.appendTransform(b.x,b.y,b.scaleX,b.scaleY,b.rotation,b.skewX,b.skewY,b.regX,b.regY)},b.getConcatenatedMatrix=function(a){for(var b=this,c=this.getMatrix(a);b=b.parent;)c.prependMatrix(b.getMatrix(b._props.matrix));return c},b.getConcatenatedDisplayProps=function(a){a=a?a.identity():new createjs.DisplayProps;var b=this,c=b.getMatrix(a.matrix);do a.prepend(b.visible,b.alpha,b.shadow,b.compositeOperation),b!=this&&c.prependMatrix(b.getMatrix(b._props.matrix));while(b=b.parent);return a},b.hitTest=function(b,c){var d=a._hitTestContext;d.setTransform(1,0,0,1,-b,-c),this.draw(d);var e=this._testHit(d);return d.setTransform(1,0,0,1,0,0),d.clearRect(0,0,2,2),e},b.set=function(a){for(var b in a)this[b]=a[b];return this},b.getBounds=function(){if(this._bounds)return this._rectangle.copy(this._bounds);var a=this.cacheCanvas;if(a){var b=this._cacheScale;return this._rectangle.setValues(this._cacheOffsetX,this._cacheOffsetY,a.width/b,a.height/b)}return null},b.getTransformedBounds=function(){return this._getBounds()},b.setBounds=function(a,b,c,d){return null==a?void(this._bounds=a):void(this._bounds=(this._bounds||new createjs.Rectangle).setValues(a,b,c,d))},b.clone=function(){return this._cloneProps(new a)},b.toString=function(){return"[DisplayObject (name="+this.name+")]"},b._updateState=null,b._cloneProps=function(a){return a.alpha=this.alpha,a.mouseEnabled=this.mouseEnabled,a.tickEnabled=this.tickEnabled,a.name=this.name,a.regX=this.regX,a.regY=this.regY,a.rotation=this.rotation,a.scaleX=this.scaleX,a.scaleY=this.scaleY,a.shadow=this.shadow,a.skewX=this.skewX,a.skewY=this.skewY,a.visible=this.visible,a.x=this.x,a.y=this.y,a.compositeOperation=this.compositeOperation,a.snapToPixel=this.snapToPixel,a.filters=null==this.filters?null:this.filters.slice(0),a.mask=this.mask,a.hitArea=this.hitArea,a.cursor=this.cursor,a._bounds=this._bounds,a},b._applyShadow=function(a,b){b=b||Shadow.identity,a.shadowColor=b.color,a.shadowOffsetX=b.offsetX,a.shadowOffsetY=b.offsetY,a.shadowBlur=b.blur},b._tick=function(a){var b=this._listeners;b&&b.tick&&(a.target=null,a.propagationStopped=a.immediatePropagationStopped=!1,this.dispatchEvent(a))},b._testHit=function(b){try{var c=b.getImageData(0,0,1,1).data[3]>1}catch(d){if(!a.suppressCrossDomainErrors)throw"An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images."}return c},b._getBounds=function(a,b){return this._transformBounds(this.getBounds(),a,b)},b._transformBounds=function(a,b,c){if(!a)return a;var d=a.x,e=a.y,f=a.width,g=a.height,h=this._props.matrix;h=c?h.identity():this.getMatrix(h),(d||e)&&h.appendTransform(0,0,1,1,0,0,0,-d,-e),b&&h.prependMatrix(b);var i=f*h.a,j=f*h.b,k=g*h.c,l=g*h.d,m=h.tx,n=h.ty,o=m,p=m,q=n,r=n;return(d=i+m)p&&(p=d),(d=i+k+m)p&&(p=d),(d=k+m)p&&(p=d),(e=j+n)r&&(r=e),(e=j+l+n)r&&(r=e),(e=l+n)r&&(r=e),a.setValues(o,q,p-o,r-q)},b._hasMouseEventListener=function(){for(var b=a._MOUSE_EVENTS,c=0,d=b.length;d>c;c++)if(this.hasEventListener(b[c]))return!0;return!!this.cursor},createjs.DisplayObject=createjs.promote(a,"EventDispatcher")}(),window.createjs=window.createjs||{},function(){"use strict";function a(){this.DisplayObject_constructor(),this.children=[],this.mouseChildren=!0,this.tickChildren=!0}var b=createjs.extend(a,createjs.DisplayObject);b._getNumChildren=function(){return this.children.length},b.getNumChildren=createjs.deprecate(b._getNumChildren,"Container.getNumChildren");try{Object.defineProperties(b,{numChildren:{get:b._getNumChildren}})}catch(c){}b.initialize=a,b.isVisible=function(){var a=this.cacheCanvas||this.children.length;return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY&&a)},b.draw=function(a,b){if(this.DisplayObject_draw(a,b))return!0;for(var c=this.children.slice(),d=0,e=c.length;e>d;d++){var f=c[d];f.isVisible()&&(a.save(),f.updateContext(a),f.draw(a),a.restore())}return!0},b.addChild=function(a){if(null==a)return a;var b=arguments.length;if(b>1){for(var c=0;b>c;c++)this.addChild(arguments[c]);return arguments[b-1]}var d=a.parent,e=d===this;return d&&d._removeChildAt(createjs.indexOf(d.children,a),e),a.parent=this,this.children.push(a),e||a.dispatchEvent("added"),a},b.addChildAt=function(a,b){var c=arguments.length,d=arguments[c-1];if(0>d||d>this.children.length)return arguments[c-2];if(c>2){for(var e=0;c-1>e;e++)this.addChildAt(arguments[e],d+e);return arguments[c-2]}var f=a.parent,g=f===this;return f&&f._removeChildAt(createjs.indexOf(f.children,a),g),a.parent=this,this.children.splice(b,0,a),g||a.dispatchEvent("added"),a},b.removeChild=function(a){var b=arguments.length;if(b>1){for(var c=!0,d=0;b>d;d++)c=c&&this.removeChild(arguments[d]);return c}return this._removeChildAt(createjs.indexOf(this.children,a))},b.removeChildAt=function(a){var b=arguments.length;if(b>1){for(var c=[],d=0;b>d;d++)c[d]=arguments[d];c.sort(function(a,b){return b-a});for(var e=!0,d=0;b>d;d++)e=e&&this._removeChildAt(c[d]);return e}return this._removeChildAt(a)},b.removeAllChildren=function(){for(var a=this.children;a.length;)this._removeChildAt(0)},b.getChildAt=function(a){return this.children[a]},b.getChildByName=function(a){for(var b=this.children,c=0,d=b.length;d>c;c++)if(b[c].name==a)return b[c];return null},b.sortChildren=function(a){this.children.sort(a)},b.getChildIndex=function(a){return createjs.indexOf(this.children,a)},b.swapChildrenAt=function(a,b){var c=this.children,d=c[a],e=c[b];d&&e&&(c[a]=e,c[b]=d)},b.swapChildren=function(a,b){for(var c,d,e=this.children,f=0,g=e.length;g>f&&(e[f]==a&&(c=f),e[f]==b&&(d=f),null==c||null==d);f++);f!=g&&(e[c]=b,e[d]=a)},b.setChildIndex=function(a,b){var c=this.children,d=c.length;if(!(a.parent!=this||0>b||b>=d)){for(var e=0;d>e&&c[e]!=a;e++);e!=d&&e!=b&&(c.splice(e,1),c.splice(b,0,a))}},b.contains=function(a){for(;a;){if(a==this)return!0;a=a.parent}return!1},b.hitTest=function(a,b){return null!=this.getObjectUnderPoint(a,b)},b.getObjectsUnderPoint=function(a,b,c){var d=[],e=this.localToGlobal(a,b);return this._getObjectsUnderPoint(e.x,e.y,d,c>0,1==c),d},b.getObjectUnderPoint=function(a,b,c){var d=this.localToGlobal(a,b);return this._getObjectsUnderPoint(d.x,d.y,null,c>0,1==c)},b.getBounds=function(){return this._getBounds(null,!0)},b.getTransformedBounds=function(){return this._getBounds()},b.clone=function(b){var c=this._cloneProps(new a);return b&&this._cloneChildren(c),c},b.toString=function(){return"[Container (name="+this.name+")]"},b._tick=function(a){if(this.tickChildren)for(var b=this.children.length-1;b>=0;b--){var c=this.children[b];c.tickEnabled&&c._tick&&c._tick(a)}this.DisplayObject__tick(a)},b._cloneChildren=function(a){a.children.length&&a.removeAllChildren();for(var b=a.children,c=0,d=this.children.length;d>c;c++){var e=this.children[c].clone(!0);e.parent=a,b.push(e)}},b._removeChildAt=function(a,b){if(0>a||a>this.children.length-1)return!1;var c=this.children[a];return c&&(c.parent=null),this.children.splice(a,1),b||c.dispatchEvent("removed"),!0},b._getObjectsUnderPoint=function(b,c,d,e,f,g){if(g=g||0,!g&&!this._testMask(this,b,c))return null;var h,i=createjs.DisplayObject._hitTestContext;f=f||e&&this._hasMouseEventListener();for(var j=this.children,k=j.length,l=k-1;l>=0;l--){var m=j[l],n=m.hitArea;if(m.visible&&(n||m.isVisible())&&(!e||m.mouseEnabled)&&(n||this._testMask(m,b,c)))if(!n&&m instanceof a){var o=m._getObjectsUnderPoint(b,c,d,e,f,g+1);if(!d&&o)return e&&!this.mouseChildren?this:o}else{if(e&&!f&&!m._hasMouseEventListener())continue;var p=m.getConcatenatedDisplayProps(m._props);if(h=p.matrix,n&&(h.appendMatrix(n.getMatrix(n._props.matrix)),p.alpha=n.alpha),i.globalAlpha=p.alpha,i.setTransform(h.a,h.b,h.c,h.d,h.tx-b,h.ty-c),(n||m).draw(i),!this._testHit(i))continue;if(i.setTransform(1,0,0,1,0,0),i.clearRect(0,0,2,2),!d)return e&&!this.mouseChildren?this:m;d.push(m)}}return null},b._testMask=function(a,b,c){var d=a.mask;if(!d||!d.graphics||d.graphics.isEmpty())return!0;var e=this._props.matrix,f=a.parent;e=f?f.getConcatenatedMatrix(e):e.identity(),e=d.getMatrix(d._props.matrix).prependMatrix(e);var g=createjs.DisplayObject._hitTestContext;return g.setTransform(e.a,e.b,e.c,e.d,e.tx-b,e.ty-c),d.graphics.drawAsPath(g),g.fillStyle="#000",g.fill(),this._testHit(g)?(g.setTransform(1,0,0,1,0,0),g.clearRect(0,0,2,2),!0):!1},b._getBounds=function(a,b){var c=this.DisplayObject_getBounds();if(c)return this._transformBounds(c,a,b);var d=this._props.matrix;d=b?d.identity():this.getMatrix(d),a&&d.prependMatrix(a);for(var e=this.children.length,f=null,g=0;e>g;g++){var h=this.children[g];h.visible&&(c=h._getBounds(d))&&(f?f.extend(c.x,c.y,c.width,c.height):f=c.clone())}return f},createjs.Container=createjs.promote(a,"DisplayObject")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a){this.Container_constructor(),this.autoClear=!0,this.canvas="string"==typeof a?document.getElementById(a):a,this.mouseX=0,this.mouseY=0,this.drawRect=null,this.snapToPixelEnabled=!1,this.mouseInBounds=!1,this.tickOnUpdate=!0,this.mouseMoveOutside=!1,this.preventSelection=!0,this._pointerData={},this._pointerCount=0,this._primaryPointerID=null,this._mouseOverIntervalID=null,this._nextStage=null,this._prevStage=null,this.enableDOMEvents(!0)}var b=createjs.extend(a,createjs.Container);b._get_nextStage=function(){return this._nextStage},b._set_nextStage=function(a){this._nextStage&&(this._nextStage._prevStage=null),a&&(a._prevStage=this),this._nextStage=a};try{Object.defineProperties(b,{nextStage:{get:b._get_nextStage,set:b._set_nextStage}})}catch(c){}b.update=function(a){if(this.canvas&&(this.tickOnUpdate&&this.tick(a),this.dispatchEvent("drawstart",!1,!0)!==!1)){createjs.DisplayObject._snapToPixelEnabled=this.snapToPixelEnabled;var b=this.drawRect,c=this.canvas.getContext("2d");c.setTransform(1,0,0,1,0,0),this.autoClear&&(b?c.clearRect(b.x,b.y,b.width,b.height):c.clearRect(0,0,this.canvas.width+1,this.canvas.height+1)),c.save(),this.drawRect&&(c.beginPath(),c.rect(b.x,b.y,b.width,b.height),c.clip()),this.updateContext(c),this.draw(c,!1),c.restore(),this.dispatchEvent("drawend")}},b.tick=function(a){if(this.tickEnabled&&this.dispatchEvent("tickstart",!1,!0)!==!1){var b=new createjs.Event("tick");if(a)for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);this._tick(b),this.dispatchEvent("tickend")}},b.handleEvent=function(a){"tick"==a.type&&this.update(a)},b.clear=function(){if(this.canvas){var a=this.canvas.getContext("2d");a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,this.canvas.width+1,this.canvas.height+1)}},b.toDataURL=function(a,b){var c,d=this.canvas.getContext("2d"),e=this.canvas.width,f=this.canvas.height;if(a){c=d.getImageData(0,0,e,f);var g=d.globalCompositeOperation;d.globalCompositeOperation="destination-over",d.fillStyle=a,d.fillRect(0,0,e,f)}var h=this.canvas.toDataURL(b||"image/png");return a&&(d.putImageData(c,0,0),d.globalCompositeOperation=g),h},b.enableMouseOver=function(a){if(this._mouseOverIntervalID&&(clearInterval(this._mouseOverIntervalID),this._mouseOverIntervalID=null,0==a&&this._testMouseOver(!0)),null==a)a=20;else if(0>=a)return;var b=this;this._mouseOverIntervalID=setInterval(function(){b._testMouseOver()},1e3/Math.min(50,a))},b.enableDOMEvents=function(a){null==a&&(a=!0);var b,c,d=this._eventListeners;if(!a&&d){for(b in d)c=d[b],c.t.removeEventListener(b,c.f,!1);this._eventListeners=null}else if(a&&!d&&this.canvas){var e=window.addEventListener?window:document,f=this;d=this._eventListeners={},d.mouseup={t:e,f:function(a){f._handleMouseUp(a)}},d.mousemove={t:e,f:function(a){f._handleMouseMove(a)}},d.dblclick={t:this.canvas,f:function(a){f._handleDoubleClick(a)}},d.mousedown={t:this.canvas,f:function(a){f._handleMouseDown(a)}};for(b in d)c=d[b],c.t.addEventListener(b,c.f,!1)}},b.clone=function(){throw"Stage cannot be cloned."},b.toString=function(){return"[Stage (name="+this.name+")]"},b._getElementRect=function(a){var b;try{b=a.getBoundingClientRect()}catch(c){b={top:a.offsetTop,left:a.offsetLeft,width:a.offsetWidth,height:a.offsetHeight}}var d=(window.pageXOffset||document.scrollLeft||0)-(document.clientLeft||document.body.clientLeft||0),e=(window.pageYOffset||document.scrollTop||0)-(document.clientTop||document.body.clientTop||0),f=window.getComputedStyle?getComputedStyle(a,null):a.currentStyle,g=parseInt(f.paddingLeft)+parseInt(f.borderLeftWidth),h=parseInt(f.paddingTop)+parseInt(f.borderTopWidth),i=parseInt(f.paddingRight)+parseInt(f.borderRightWidth),j=parseInt(f.paddingBottom)+parseInt(f.borderBottomWidth);return{left:b.left+d+g,right:b.right+d-i,top:b.top+e+h,bottom:b.bottom+e-j}},b._getPointerData=function(a){var b=this._pointerData[a];return b||(b=this._pointerData[a]={x:0,y:0}),b},b._handleMouseMove=function(a){a||(a=window.event),this._handlePointerMove(-1,a,a.pageX,a.pageY)},b._handlePointerMove=function(a,b,c,d,e){if((!this._prevStage||void 0!==e)&&this.canvas){var f=this._nextStage,g=this._getPointerData(a),h=g.inBounds;this._updatePointerPosition(a,b,c,d),(h||g.inBounds||this.mouseMoveOutside)&&(-1===a&&g.inBounds==!h&&this._dispatchMouseEvent(this,h?"mouseleave":"mouseenter",!1,a,g,b),this._dispatchMouseEvent(this,"stagemousemove",!1,a,g,b),this._dispatchMouseEvent(g.target,"pressmove",!0,a,g,b)),f&&f._handlePointerMove(a,b,c,d,null)}},b._updatePointerPosition=function(a,b,c,d){var e=this._getElementRect(this.canvas);c-=e.left,d-=e.top;var f=this.canvas.width,g=this.canvas.height;c/=(e.right-e.left)/f,d/=(e.bottom-e.top)/g;var h=this._getPointerData(a);(h.inBounds=c>=0&&d>=0&&f-1>=c&&g-1>=d)?(h.x=c,h.y=d):this.mouseMoveOutside&&(h.x=0>c?0:c>f-1?f-1:c,h.y=0>d?0:d>g-1?g-1:d),h.posEvtObj=b,h.rawX=c,h.rawY=d,(a===this._primaryPointerID||-1===a)&&(this.mouseX=h.x,this.mouseY=h.y,this.mouseInBounds=h.inBounds)},b._handleMouseUp=function(a){this._handlePointerUp(-1,a,!1)},b._handlePointerUp=function(a,b,c,d){var e=this._nextStage,f=this._getPointerData(a);if(!this._prevStage||void 0!==d){var g=null,h=f.target;d||!h&&!e||(g=this._getObjectsUnderPoint(f.x,f.y,null,!0)),f.down&&(this._dispatchMouseEvent(this,"stagemouseup",!1,a,f,b,g),f.down=!1),g==h&&this._dispatchMouseEvent(h,"click",!0,a,f,b),this._dispatchMouseEvent(h,"pressup",!0,a,f,b),c?(a==this._primaryPointerID&&(this._primaryPointerID=null),delete this._pointerData[a]):f.target=null,e&&e._handlePointerUp(a,b,c,d||g&&this)}},b._handleMouseDown=function(a){this._handlePointerDown(-1,a,a.pageX,a.pageY)},b._handlePointerDown=function(a,b,c,d,e){this.preventSelection&&b.preventDefault(),(null==this._primaryPointerID||-1===a)&&(this._primaryPointerID=a),null!=d&&this._updatePointerPosition(a,b,c,d);var f=null,g=this._nextStage,h=this._getPointerData(a);e||(f=h.target=this._getObjectsUnderPoint(h.x,h.y,null,!0)),h.inBounds&&(this._dispatchMouseEvent(this,"stagemousedown",!1,a,h,b,f),h.down=!0),this._dispatchMouseEvent(f,"mousedown",!0,a,h,b),g&&g._handlePointerDown(a,b,c,d,e||f&&this)},b._testMouseOver=function(a,b,c){if(!this._prevStage||void 0!==b){var d=this._nextStage;if(!this._mouseOverIntervalID)return void(d&&d._testMouseOver(a,b,c));var e=this._getPointerData(-1);if(e&&(a||this.mouseX!=this._mouseOverX||this.mouseY!=this._mouseOverY||!this.mouseInBounds)){var f,g,h,i=e.posEvtObj,j=c||i&&i.target==this.canvas,k=null,l=-1,m="";!b&&(a||this.mouseInBounds&&j)&&(k=this._getObjectsUnderPoint(this.mouseX,this.mouseY,null,!0),this._mouseOverX=this.mouseX,this._mouseOverY=this.mouseY);var n=this._mouseOverTarget||[],o=n[n.length-1],p=this._mouseOverTarget=[];for(f=k;f;)p.unshift(f),m||(m=f.cursor),f=f.parent;for(this.canvas.style.cursor=m,!b&&c&&(c.canvas.style.cursor=m),g=0,h=p.length;h>g&&p[g]==n[g];g++)l=g;for(o!=k&&this._dispatchMouseEvent(o,"mouseout",!0,-1,e,i,k),g=n.length-1;g>l;g--)this._dispatchMouseEvent(n[g],"rollout",!1,-1,e,i,k);for(g=p.length-1;g>l;g--)this._dispatchMouseEvent(p[g],"rollover",!1,-1,e,i,o);o!=k&&this._dispatchMouseEvent(k,"mouseover",!0,-1,e,i,o),d&&d._testMouseOver(a,b||k&&this,c||j&&this)}}},b._handleDoubleClick=function(a,b){var c=null,d=this._nextStage,e=this._getPointerData(-1);b||(c=this._getObjectsUnderPoint(e.x,e.y,null,!0),this._dispatchMouseEvent(c,"dblclick",!0,-1,e,a)),d&&d._handleDoubleClick(a,b||c&&this)},b._dispatchMouseEvent=function(a,b,c,d,e,f,g){if(a&&(c||a.hasEventListener(b))){var h=new createjs.MouseEvent(b,c,!1,e.x,e.y,f,d,d===this._primaryPointerID||-1===d,e.rawX,e.rawY,g);a.dispatchEvent(h)}},createjs.Stage=createjs.promote(a,"Container")}(),window.createjs=window.createjs||{},function(){"use strict";function a(b,c){if(this.Stage_constructor(b),void 0!==c){if("object"!=typeof c)throw"Invalid options object";var d=c.premultiply,e=c.transparent,f=c.antialias,g=c.preserveBuffer,h=c.autoPurge}this.vocalDebug=!1,this._preserveBuffer=g||!1,this._antialias=f||!1,this._transparent=e||!1,this._premultiply=d||!1,this._autoPurge=void 0,this.autoPurge=h,this._viewportWidth=0,this._viewportHeight=0,this._projectionMatrix=null,this._webGLContext=null,this._clearColor={r:.5,g:.5,b:.5,a:0},this._maxCardsPerBatch=a.DEFAULT_MAX_BATCH_SIZE,this._activeShader=null,this._vertices=null,this._vertexPositionBuffer=null,this._uvs=null,this._uvPositionBuffer=null,this._indices=null,this._textureIndexBuffer=null,this._alphas=null,this._alphaBuffer=null,this._textureDictionary=[],this._textureIDs={},this._batchTextures=[],this._baseTextures=[],this._batchTextureCount=8,this._lastTextureInsert=-1,this._batchID=0,this._drawID=0,this._slotBlacklist=[],this._isDrawing=0,this._lastTrackedCanvas=0,this.isCacheControlled=!1,this._cacheContainer=new createjs.Container,this._initializeWebGL()}var b=createjs.extend(a,createjs.Stage);a.buildUVRects=function(a,b,c){if(!a||!a._frames)return null;void 0===b&&(b=-1),void 0===c&&(c=!1);for(var d=-1!=b&&c?b:0,e=-1!=b&&c?b+1:a._frames.length,f=d;e>f;f++){var g=a._frames[f];if(!(g.uvRect||g.image.width<=0||g.image.height<=0)){var h=g.rect;g.uvRect={t:h.y/g.image.height,l:h.x/g.image.width,b:(h.y+h.height)/g.image.height,r:(h.x+h.width)/g.image.width}}}return a._frames[-1!=b?b:0].uvRect||{t:0,l:0,b:1,r:1}},a.isWebGLActive=function(a){return a&&a instanceof WebGLRenderingContext&&"undefined"!=typeof WebGLRenderingContext},a.VERTEX_PROPERTY_COUNT=6,a.INDICIES_PER_CARD=6,a.DEFAULT_MAX_BATCH_SIZE=1e4,a.WEBGL_MAX_INDEX_NUM=Math.pow(2,16),a.UV_RECT={t:0,l:0,b:1,r:1};try{a.COVER_VERT=new Float32Array([-1,1,1,1,-1,-1,1,1,1,-1,-1,-1]),a.COVER_UV=new Float32Array([0,0,1,0,0,1,1,0,1,1,0,1]),a.COVER_UV_FLIP=new Float32Array([0,1,1,1,0,0,1,1,1,0,0,0])}catch(c){}a.REGULAR_VARYING_HEADER="precision mediump float;varying vec2 vTextureCoord;varying lowp float indexPicker;varying lowp float alphaValue;",a.REGULAR_VERTEX_HEADER=a.REGULAR_VARYING_HEADER+"attribute vec2 vertexPosition;attribute vec2 uvPosition;attribute lowp float textureIndex;attribute lowp float objectAlpha;uniform mat4 pMatrix;",a.REGULAR_FRAGMENT_HEADER=a.REGULAR_VARYING_HEADER+"uniform sampler2D uSampler[{{count}}];",a.REGULAR_VERTEX_BODY="void main(void) {gl_Position = vec4((vertexPosition.x * pMatrix[0][0]) + pMatrix[3][0],(vertexPosition.y * pMatrix[1][1]) + pMatrix[3][1],pMatrix[3][2],1.0);alphaValue = objectAlpha;indexPicker = textureIndex;vTextureCoord = uvPosition;}",a.REGULAR_FRAGMENT_BODY="void main(void) {vec4 color = vec4(1.0, 0.0, 0.0, 1.0);if (indexPicker <= 0.5) {color = texture2D(uSampler[0], vTextureCoord);{{alternates}}}{{fragColor}}}",a.REGULAR_FRAG_COLOR_NORMAL="gl_FragColor = vec4(color.rgb, color.a * alphaValue);",a.REGULAR_FRAG_COLOR_PREMULTIPLY="if(color.a > 0.0035) {gl_FragColor = vec4(color.rgb/color.a, color.a * alphaValue);} else {gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);}",a.PARTICLE_VERTEX_BODY=a.REGULAR_VERTEX_BODY,a.PARTICLE_FRAGMENT_BODY=a.REGULAR_FRAGMENT_BODY,a.COVER_VARYING_HEADER="precision mediump float;varying highp vec2 vRenderCoord;varying highp vec2 vTextureCoord;",a.COVER_VERTEX_HEADER=a.COVER_VARYING_HEADER+"attribute vec2 vertexPosition;attribute vec2 uvPosition;uniform float uUpright;",a.COVER_FRAGMENT_HEADER=a.COVER_VARYING_HEADER+"uniform sampler2D uSampler;",a.COVER_VERTEX_BODY="void main(void) {gl_Position = vec4(vertexPosition.x, vertexPosition.y, 0.0, 1.0);vRenderCoord = uvPosition;vTextureCoord = vec2(uvPosition.x, abs(uUpright - uvPosition.y));}",a.COVER_FRAGMENT_BODY="void main(void) {vec4 color = texture2D(uSampler, vRenderCoord);gl_FragColor = color;}",b._get_isWebGL=function(){return!!this._webGLContext},b._set_autoPurge=function(a){a=isNaN(a)?1200:a,-1!=a&&(a=10>a?10:a),this._autoPurge=a},b._get_autoPurge=function(){return Number(this._autoPurge)};try{Object.defineProperties(b,{isWebGL:{get:b._get_isWebGL},autoPurge:{get:b._get_autoPurge,set:b._set_autoPurge}})}catch(c){}b._initializeWebGL=function(){if(this.canvas){if(!this._webGLContext||this._webGLContext.canvas!==this.canvas){var a={depth:!1,alpha:this._transparent,stencil:!0,antialias:this._antialias,premultipliedAlpha:this._premultiply,preserveDrawingBuffer:this._preserveBuffer},b=this._webGLContext=this._fetchWebGLContext(this.canvas,a);if(!b)return null;this.updateSimultaneousTextureCount(b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS)),this._maxTextureSlots=b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS),this._createBuffers(b),this._initTextures(b),b.disable(b.DEPTH_TEST),b.enable(b.BLEND),b.blendFuncSeparate(b.SRC_ALPHA,b.ONE_MINUS_SRC_ALPHA,b.ONE,b.ONE_MINUS_SRC_ALPHA),b.pixelStorei(b.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiply),this._webGLContext.clearColor(this._clearColor.r,this._clearColor.g,this._clearColor.b,this._clearColor.a),this.updateViewport(this._viewportWidth||this.canvas.width,this._viewportHeight||this.canvas.height)}}else this._webGLContext=null;return this._webGLContext},b.update=function(a){if(this.canvas){if(this.tickOnUpdate&&this.tick(a),this.dispatchEvent("drawstart"),this.autoClear&&this.clear(),this._webGLContext)this._batchDraw(this,this._webGLContext),-1==this._autoPurge||this._drawID%(this._autoPurge/2|0)||this.purgeTextures(this._autoPurge);else{var b=this.canvas.getContext("2d");b.save(),this.updateContext(b),this.draw(b,!1),b.restore()}this.dispatchEvent("drawend")}},b.clear=function(){if(this.canvas)if(a.isWebGLActive(this._webGLContext)){var b=this._webGLContext,c=this._clearColor,d=this._transparent?c.a:1;this._webGLContext.clearColor(c.r*d,c.g*d,c.b*d,d),b.clear(b.COLOR_BUFFER_BIT),this._webGLContext.clearColor(c.r,c.g,c.b,c.a)}else this.Stage_clear()},b.draw=function(b,c){if(b===this._webGLContext&&a.isWebGLActive(this._webGLContext)){var d=this._webGLContext;return this._batchDraw(this,d,c),!0}return this.Stage_draw(b,c)},b.cacheDraw=function(b,c,d){if(a.isWebGLActive(this._webGLContext)){var e=this._webGLContext;return this._cacheDraw(e,b,c,d),!0}return!1},b.protectTextureSlot=function(a,b){if(a>this._maxTextureSlots||0>a)throw"Slot outside of acceptable range";this._slotBlacklist[a]=!!b},b.getTargetRenderTexture=function(a,b,c){var d,e=!1,f=this._webGLContext;if(void 0!==a.__lastRT&&a.__lastRT===a.__rtA&&(e=!0),e?(void 0===a.__rtB?a.__rtB=this.getRenderBufferTexture(b,c):((b!=a.__rtB._width||c!=a.__rtB._height)&&this.resizeTexture(a.__rtB,b,c),this.setTextureParams(f)),d=a.__rtB):(void 0===a.__rtA?a.__rtA=this.getRenderBufferTexture(b,c):((b!=a.__rtA._width||c!=a.__rtA._height)&&this.resizeTexture(a.__rtA,b,c),this.setTextureParams(f)),d=a.__rtA),!d)throw"Problems creating render textures, known causes include using too much VRAM by not releasing WebGL texture instances";return a.__lastRT=d,d},b.releaseTexture=function(a){var b,c;if(a){if(a.children)for(b=0,c=a.children.length;c>b;b++)this.releaseTexture(a.children[b]);a.cacheCanvas&&a.uncache();var d=void 0;if(void 0!==a._storeID){if(a===this._textureDictionary[a._storeID])return this._killTextureObject(a),void(a._storeID=void 0);d=a}else if(2===a._webGLRenderStyle)d=a.image;else if(1===a._webGLRenderStyle){for(b=0,c=a.spriteSheet._images.length;c>b;b++)this.releaseTexture(a.spriteSheet._images[b]);return}if(void 0===d)return void(this.vocalDebug&&console.log("No associated texture found on release"));this._killTextureObject(this._textureDictionary[d._storeID]),d._storeID=void 0}},b.purgeTextures=function(a){void 0==a&&(a=100);for(var b=this._textureDictionary,c=b.length,d=0;c>d;d++){var e=b[d];e&&e._drawID+a<=this._drawID&&this._killTextureObject(e)}},b.updateSimultaneousTextureCount=function(a){var b=this._webGLContext,c=!1;for((1>a||isNaN(a))&&(a=1),this._batchTextureCount=a;!c;)try{this._activeShader=this._fetchShaderProgram(b),c=!0}catch(d){if(1==this._batchTextureCount)throw"Cannot compile shader "+d;this._batchTextureCount-=4,this._batchTextureCount<1&&(this._batchTextureCount=1),this.vocalDebug&&console.log("Reducing desired texture count due to errors: "+this._batchTextureCount)}},b.updateViewport=function(a,b){this._viewportWidth=0|a,this._viewportHeight=0|b;var c=this._webGLContext;c&&(c.viewport(0,0,this._viewportWidth,this._viewportHeight),this._projectionMatrix=new Float32Array([2/this._viewportWidth,0,0,0,0,-2/this._viewportHeight,1,0,0,0,1,0,-1,1,.1,0]),this._projectionMatrixFlip=new Float32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),this._projectionMatrixFlip.set(this._projectionMatrix),this._projectionMatrixFlip[5]*=-1,this._projectionMatrixFlip[13]*=-1)},b.getFilterShader=function(a){a||(a=this);var b=this._webGLContext,c=this._activeShader;if(a._builtShader)c=a._builtShader,a.shaderParamSetup&&(b.useProgram(c),a.shaderParamSetup(b,this,c));else try{c=this._fetchShaderProgram(b,"filter",a.VTX_SHADER_BODY,a.FRAG_SHADER_BODY,a.shaderParamSetup&&a.shaderParamSetup.bind(a)),a._builtShader=c,c._name=a.toString()}catch(d){console&&console.log("SHADER SWITCH FAILURE",d)}return c},b.getBaseTexture=function(a,b){var c=Math.ceil(a>0?a:1)||1,d=Math.ceil(b>0?b:1)||1,e=this._webGLContext,f=e.createTexture();return this.resizeTexture(f,c,d),this.setTextureParams(e,!1),f},b.resizeTexture=function(a,b,c){var d=this._webGLContext;d.bindTexture(d.TEXTURE_2D,a),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,b,c,0,d.RGBA,d.UNSIGNED_BYTE,null),a.width=b,a.height=c},b.getRenderBufferTexture=function(a,b){var c=this._webGLContext,d=this.getBaseTexture(a,b);if(!d)return null;var e=c.createFramebuffer();return e?(d.width=a,d.height=b,c.bindFramebuffer(c.FRAMEBUFFER,e),c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,d,0),e._renderTexture=d,d._frameBuffer=e,d._storeID=this._textureDictionary.length,this._textureDictionary[d._storeID]=d,c.bindFramebuffer(c.FRAMEBUFFER,null),d):null},b.setTextureParams=function(a,b){b&&this._antialias?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST)),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE)},b.setClearColor=function(a){var b,c,d,e,f;"string"==typeof a?0==a.indexOf("#")?(4==a.length&&(a="#"+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2)+a.charAt(3)+a.charAt(3)),b=Number("0x"+a.slice(1,3))/255,c=Number("0x"+a.slice(3,5))/255,d=Number("0x"+a.slice(5,7))/255,e=Number("0x"+a.slice(7,9))/255):0==a.indexOf("rgba(")&&(f=a.slice(5,-1).split(","),b=Number(f[0])/255,c=Number(f[1])/255,d=Number(f[2])/255,e=Number(f[3])):(b=((4278190080&a)>>>24)/255,c=((16711680&a)>>>16)/255,d=((65280&a)>>>8)/255,e=(255&a)/255),this._clearColor.r=b||0,this._clearColor.g=c||0,this._clearColor.b=d||0,this._clearColor.a=e||0,this._webGLContext&&this._webGLContext.clearColor(this._clearColor.r,this._clearColor.g,this._clearColor.b,this._clearColor.a)},b.toString=function(){return"[StageGL (name="+this.name+")]" +},b._fetchWebGLContext=function(a,b){var c;try{c=a.getContext("webgl",b)||a.getContext("experimental-webgl",b)}catch(d){}if(c)c.viewportWidth=a.width,c.viewportHeight=a.height;else{var e="Could not initialize WebGL";console.error?console.error(e):console.log(e)}return c},b._fetchShaderProgram=function(b,c,d,e,f){b.useProgram(null);var g,h;switch(c){case"filter":h=a.COVER_VERTEX_HEADER+(d||a.COVER_VERTEX_BODY),g=a.COVER_FRAGMENT_HEADER+(e||a.COVER_FRAGMENT_BODY);break;case"particle":h=a.REGULAR_VERTEX_HEADER+a.PARTICLE_VERTEX_BODY,g=a.REGULAR_FRAGMENT_HEADER+a.PARTICLE_FRAGMENT_BODY;break;case"override":h=a.REGULAR_VERTEX_HEADER+(d||a.REGULAR_VERTEX_BODY),g=a.REGULAR_FRAGMENT_HEADER+(e||a.REGULAR_FRAGMENT_BODY);break;case"regular":default:h=a.REGULAR_VERTEX_HEADER+a.REGULAR_VERTEX_BODY,g=a.REGULAR_FRAGMENT_HEADER+a.REGULAR_FRAGMENT_BODY}var i=this._createShader(b,b.VERTEX_SHADER,h),j=this._createShader(b,b.FRAGMENT_SHADER,g),k=b.createProgram();if(b.attachShader(k,i),b.attachShader(k,j),b.linkProgram(k),k._type=c,!b.getProgramParameter(k,b.LINK_STATUS))throw b.useProgram(this._activeShader),b.getProgramInfoLog(k);switch(b.useProgram(k),c){case"filter":k.vertexPositionAttribute=b.getAttribLocation(k,"vertexPosition"),b.enableVertexAttribArray(k.vertexPositionAttribute),k.uvPositionAttribute=b.getAttribLocation(k,"uvPosition"),b.enableVertexAttribArray(k.uvPositionAttribute),k.samplerUniform=b.getUniformLocation(k,"uSampler"),b.uniform1i(k.samplerUniform,0),k.uprightUniform=b.getUniformLocation(k,"uUpright"),b.uniform1f(k.uprightUniform,0),f&&f(b,this,k);break;case"override":case"particle":case"regular":default:k.vertexPositionAttribute=b.getAttribLocation(k,"vertexPosition"),b.enableVertexAttribArray(k.vertexPositionAttribute),k.uvPositionAttribute=b.getAttribLocation(k,"uvPosition"),b.enableVertexAttribArray(k.uvPositionAttribute),k.textureIndexAttribute=b.getAttribLocation(k,"textureIndex"),b.enableVertexAttribArray(k.textureIndexAttribute),k.alphaAttribute=b.getAttribLocation(k,"objectAlpha"),b.enableVertexAttribArray(k.alphaAttribute);for(var l=[],m=0;md;d+=c)h[d]=h[d+1]=0;b.bufferData(b.ARRAY_BUFFER,h,b.DYNAMIC_DRAW),g.itemSize=c,g.numItems=f;var i=this._uvPositionBuffer=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,i),c=2;var j=this._uvs=new Float32Array(f*c);for(d=0,e=j.length;e>d;d+=c)j[d]=j[d+1]=0;b.bufferData(b.ARRAY_BUFFER,j,b.DYNAMIC_DRAW),i.itemSize=c,i.numItems=f;var k=this._textureIndexBuffer=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,k),c=1;var l=this._indices=new Float32Array(f*c);for(d=0,e=l.length;e>d;d++)l[d]=0;b.bufferData(b.ARRAY_BUFFER,l,b.DYNAMIC_DRAW),k.itemSize=c,k.numItems=f;var m=this._alphaBuffer=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,m),c=1;var n=this._alphas=new Float32Array(f*c);for(d=0,e=n.length;e>d;d++)n[d]=1;b.bufferData(b.ARRAY_BUFFER,n,b.DYNAMIC_DRAW),m.itemSize=c,m.numItems=f},b._initTextures=function(){this._lastTextureInsert=-1,this._textureDictionary=[],this._textureIDs={},this._baseTextures=[],this._batchTextures=[];for(var a=0;aa.MAX_TEXTURE_SIZE||b.height>a.MAX_TEXTURE_SIZE)&&console&&console.error("Oversized Texture: "+b.width+"x"+b.height+" vs "+a.MAX_TEXTURE_SIZE+"max"))},b._insertTextureInBatch=function(a,b){if(this._batchTextures[b._activeIndex]!==b){var c=-1,d=(this._lastTextureInsert+1)%this._batchTextureCount,e=d;do{if(this._batchTextures[e]._batchID!=this._batchID&&!this._slotBlacklist[e]){c=e;break}e=(e+1)%this._batchTextureCount}while(e!==d);-1===c&&(this.batchReason="textureOverflow",this._drawBuffers(a),this.batchCardCount=0,c=d),this._batchTextures[c]=b,b._activeIndex=c;var f=b._imageData;f&&f._invalid&&void 0!==b._drawID?this._updateTextureImageData(a,f):(a.activeTexture(a.TEXTURE0+c),a.bindTexture(a.TEXTURE_2D,b),this.setTextureParams(a)),this._lastTextureInsert=c}else{var f=b._imageData;void 0!=b._storeID&&f&&f._invalid&&this._updateTextureImageData(a,f)}b._drawID=this._drawID,b._batchID=this._batchID},b._killTextureObject=function(a){if(a){var b=this._webGLContext;if(void 0!==a._storeID&&a._storeID>=0){this._textureDictionary[a._storeID]=void 0;for(var c in this._textureIDs)this._textureIDs[c]==a._storeID&&delete this._textureIDs[c];a._imageData&&(a._imageData._storeID=void 0),a._imageData=a._storeID=void 0}void 0!==a._activeIndex&&this._batchTextures[a._activeIndex]===a&&(this._batchTextures[a._activeIndex]=this._baseTextures[a._activeIndex]);try{a._frameBuffer&&b.deleteFramebuffer(a._frameBuffer),a._frameBuffer=void 0}catch(d){this.vocalDebug&&console.log(d)}try{b.deleteTexture(a)}catch(d){this.vocalDebug&&console.log(d)}}},b._backupBatchTextures=function(a,b){var c=this._webGLContext;this._backupTextures||(this._backupTextures=[]),void 0===b&&(b=this._backupTextures);for(var d=0;d0&&this._drawBuffers(b),this._isDrawing++,this._drawID++,this.batchCardCount=0,this.depth=0,this._appendToBatchGroup(a,b,new createjs.Matrix2D,this.alpha,c),this.batchReason="drawFinish",this._drawBuffers(b),this._isDrawing--},b._cacheDraw=function(a,b,c,d){var e,f=this._activeShader,g=this._slotBlacklist,h=this._maxTextureSlots-1,i=this._viewportWidth,j=this._viewportHeight;this.protectTextureSlot(h,!0);var k=b.getMatrix();k=k.clone(),k.scale(1/d.scale,1/d.scale),k=k.invert(),k.translate(-d.offX/d.scale*b.scaleX,-d.offY/d.scale*b.scaleY);var l=this._cacheContainer;l.children=[b],l.transformMatrix=k,this._backupBatchTextures(!1),c&&c.length?this._drawFilters(b,c,d):this.isCacheControlled?(a.clear(a.COLOR_BUFFER_BIT),this._batchDraw(l,a,!0)):(a.activeTexture(a.TEXTURE0+h),b.cacheCanvas=this.getTargetRenderTexture(b,d._drawWidth,d._drawHeight),e=b.cacheCanvas,a.bindFramebuffer(a.FRAMEBUFFER,e._frameBuffer),this.updateViewport(d._drawWidth,d._drawHeight),this._projectionMatrix=this._projectionMatrixFlip,a.clear(a.COLOR_BUFFER_BIT),this._batchDraw(l,a,!0),a.bindFramebuffer(a.FRAMEBUFFER,null),this.updateViewport(i,j)),this._backupBatchTextures(!0),this.protectTextureSlot(h,!1),this._activeShader=f,this._slotBlacklist=g},b._drawFilters=function(a,b,c){var d,e=this._webGLContext,f=this._maxTextureSlots-1,g=this._viewportWidth,h=this._viewportHeight,i=this._cacheContainer,j=b.length;e.activeTexture(e.TEXTURE0+f),d=this.getTargetRenderTexture(a,c._drawWidth,c._drawHeight),e.bindFramebuffer(e.FRAMEBUFFER,d._frameBuffer),this.updateViewport(c._drawWidth,c._drawHeight),e.clear(e.COLOR_BUFFER_BIT),this._batchDraw(i,e,!0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,d),this.setTextureParams(e);var k=!1,l=0,m=b[l];do this._activeShader=this.getFilterShader(m),this._activeShader&&(e.activeTexture(e.TEXTURE0+f),d=this.getTargetRenderTexture(a,c._drawWidth,c._drawHeight),e.bindFramebuffer(e.FRAMEBUFFER,d._frameBuffer),e.viewport(0,0,c._drawWidth,c._drawHeight),e.clear(e.COLOR_BUFFER_BIT),this._drawCover(e,k),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,d),this.setTextureParams(e),(j>1||b[0]._multiPass)&&(k=!k),m=null!==m._multiPass?m._multiPass:b[++l]);while(m);this.isCacheControlled?(e.bindFramebuffer(e.FRAMEBUFFER,null),this.updateViewport(g,h),this._activeShader=this.getFilterShader(this),e.clear(e.COLOR_BUFFER_BIT),this._drawCover(e,k)):(k&&(e.activeTexture(e.TEXTURE0+f),d=this.getTargetRenderTexture(a,c._drawWidth,c._drawHeight),e.bindFramebuffer(e.FRAMEBUFFER,d._frameBuffer),this._activeShader=this.getFilterShader(this),e.viewport(0,0,c._drawWidth,c._drawHeight),e.clear(e.COLOR_BUFFER_BIT),this._drawCover(e,!k)),e.bindFramebuffer(e.FRAMEBUFFER,null),this.updateViewport(g,h),a.cacheCanvas=d)},b._appendToBatchGroup=function(b,c,d,e,f){b._glMtx||(b._glMtx=new createjs.Matrix2D);var g=b._glMtx;g.copy(d),b.transformMatrix?g.appendMatrix(b.transformMatrix):g.appendTransform(b.x,b.y,b.scaleX,b.scaleY,b.rotation,b.skewX,b.skewY,b.regX,b.regY);for(var h,i,j,k,l=b.children.length,m=0;l>m;m++){var n=b.children[m];if(n.visible&&e)if(n.cacheCanvas&&!f||(n._updateState&&n._updateState(),!n.children)){this.batchCardCount+1>this._maxCardsPerBatch&&(this.batchReason="vertexOverflow",this._drawBuffers(c),this.batchCardCount=0),n._glMtx||(n._glMtx=new createjs.Matrix2D);var o=n._glMtx;o.copy(g),n.transformMatrix?o.appendMatrix(n.transformMatrix):o.appendTransform(n.x,n.y,n.scaleX,n.scaleY,n.rotation,n.skewX,n.skewY,n.regX,n.regY);var p,q,r,s,t,u,v=n.cacheCanvas&&!f;if(2===n._webGLRenderStyle||v)r=(f?!1:n.cacheCanvas)||n.image;else{if(1!==n._webGLRenderStyle)continue;if(s=n.spriteSheet.getFrame(n.currentFrame),null===s)continue;r=s.image}var w=this._uvs,x=this._vertices,y=this._indices,z=this._alphas;if(r){if(void 0===r._storeID)t=this._loadTextureImage(c,r),this._insertTextureInBatch(c,t);else{if(t=this._textureDictionary[r._storeID],!t){this.vocalDebug&&console.log("Texture should not be looked up while not being stored.");continue}t._batchID!==this._batchID&&this._insertTextureInBatch(c,t)}if(q=t._activeIndex,2===n._webGLRenderStyle||v)!v&&n.sourceRect?(n._uvRect||(n._uvRect={}),u=n.sourceRect,p=n._uvRect,p.t=u.y/r.height,p.l=u.x/r.width,p.b=(u.y+u.height)/r.height,p.r=(u.x+u.width)/r.width,h=0,i=0,j=u.width+h,k=u.height+i):(p=a.UV_RECT,v?(u=n.bitmapCache,h=u.x+u._filterOffX/u.scale,i=u.y+u._filterOffY/u.scale,j=u._drawWidth/u.scale+h,k=u._drawHeight/u.scale+i):(h=0,i=0,j=r.width+h,k=r.height+i));else if(1===n._webGLRenderStyle){var A=s.rect;p=s.uvRect,p||(p=a.buildUVRects(n.spriteSheet,n.currentFrame,!1)),h=-s.regX,i=-s.regY,j=A.width-s.regX,k=A.height-s.regY}var B=this.batchCardCount*a.INDICIES_PER_CARD,C=2*B;x[C]=h*o.a+i*o.c+o.tx,x[C+1]=h*o.b+i*o.d+o.ty,x[C+2]=h*o.a+k*o.c+o.tx,x[C+3]=h*o.b+k*o.d+o.ty,x[C+4]=j*o.a+i*o.c+o.tx,x[C+5]=j*o.b+i*o.d+o.ty,x[C+6]=x[C+2],x[C+7]=x[C+3],x[C+8]=x[C+4],x[C+9]=x[C+5],x[C+10]=j*o.a+k*o.c+o.tx,x[C+11]=j*o.b+k*o.d+o.ty,w[C]=p.l,w[C+1]=p.t,w[C+2]=p.l,w[C+3]=p.b,w[C+4]=p.r,w[C+5]=p.t,w[C+6]=p.l,w[C+7]=p.b,w[C+8]=p.r,w[C+9]=p.t,w[C+10]=p.r,w[C+11]=p.b,y[B]=y[B+1]=y[B+2]=y[B+3]=y[B+4]=y[B+5]=q,z[B]=z[B+1]=z[B+2]=z[B+3]=z[B+4]=z[B+5]=n.alpha*e,this.batchCardCount++}}else this._appendToBatchGroup(n,c,g,n.alpha*e)}},b._drawBuffers=function(b){if(!(this.batchCardCount<=0)){this.vocalDebug&&console.log("Draw["+this._drawID+":"+this._batchID+"] : "+this.batchReason);var c=this._activeShader,d=this._vertexPositionBuffer,e=this._textureIndexBuffer,f=this._uvPositionBuffer,g=this._alphaBuffer;b.useProgram(c),b.bindBuffer(b.ARRAY_BUFFER,d),b.vertexAttribPointer(c.vertexPositionAttribute,d.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,this._vertices),b.bindBuffer(b.ARRAY_BUFFER,e),b.vertexAttribPointer(c.textureIndexAttribute,e.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,this._indices),b.bindBuffer(b.ARRAY_BUFFER,f),b.vertexAttribPointer(c.uvPositionAttribute,f.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,this._uvs),b.bindBuffer(b.ARRAY_BUFFER,g),b.vertexAttribPointer(c.alphaAttribute,g.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,this._alphas),b.uniformMatrix4fv(c.pMatrixUniform,b.FALSE,this._projectionMatrix);for(var h=0;h0&&this._drawBuffers(b),this.vocalDebug&&console.log("Draw["+this._drawID+":"+this._batchID+"] : Cover");var d=this._activeShader,e=this._vertexPositionBuffer,f=this._uvPositionBuffer;b.clear(b.COLOR_BUFFER_BIT),b.useProgram(d),b.bindBuffer(b.ARRAY_BUFFER,e),b.vertexAttribPointer(d.vertexPositionAttribute,e.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,a.COVER_VERT),b.bindBuffer(b.ARRAY_BUFFER,f),b.vertexAttribPointer(d.uvPositionAttribute,f.itemSize,b.FLOAT,!1,0,0),b.bufferSubData(b.ARRAY_BUFFER,0,c?a.COVER_UV_FLIP:a.COVER_UV),b.uniform1i(d.samplerUniform,0),b.uniform1f(d.uprightUniform,c?0:1),b.drawArrays(b.TRIANGLES,0,a.INDICIES_PER_CARD)},createjs.StageGL=createjs.promote(a,"Stage")}(),window.createjs=window.createjs||{},function(){function a(a){this.DisplayObject_constructor(),"string"==typeof a?(this.image=document.createElement("img"),this.image.src=a):this.image=a,this.sourceRect=null,this._webGLRenderStyle=createjs.DisplayObject._StageGL_BITMAP}var b=createjs.extend(a,createjs.DisplayObject);b.initialize=a,b.isVisible=function(){var a=this.image,b=this.cacheCanvas||a&&(a.naturalWidth||a.getContext||a.readyState>=2);return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY&&b)},b.draw=function(a,b){if(this.DisplayObject_draw(a,b))return!0;var c=this.image,d=this.sourceRect;if(c.getImage&&(c=c.getImage()),!c)return!0;if(d){var e=d.x,f=d.y,g=e+d.width,h=f+d.height,i=0,j=0,k=c.width,l=c.height;0>e&&(i-=e,e=0),g>k&&(g=k),0>f&&(j-=f,f=0),h>l&&(h=l),a.drawImage(c,e,f,g-e,h-f,i,j,g-e,h-f)}else a.drawImage(c,0,0);return!0},b.getBounds=function(){var a=this.DisplayObject_getBounds();if(a)return a;var b=this.image,c=this.sourceRect||b,d=b&&(b.naturalWidth||b.getContext||b.readyState>=2);return d?this._rectangle.setValues(0,0,c.width,c.height):null},b.clone=function(b){var c=this.image;c&&b&&(c=c.cloneNode());var d=new a(c);return this.sourceRect&&(d.sourceRect=this.sourceRect.clone()),this._cloneProps(d),d},b.toString=function(){return"[Bitmap (name="+this.name+")]"},createjs.Bitmap=createjs.promote(a,"DisplayObject")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b){this.DisplayObject_constructor(),this.currentFrame=0,this.currentAnimation=null,this.paused=!0,this.spriteSheet=a,this.currentAnimationFrame=0,this.framerate=0,this._animation=null,this._currentFrame=null,this._skipAdvance=!1,this._webGLRenderStyle=createjs.DisplayObject._StageGL_SPRITE,null!=b&&this.gotoAndPlay(b)}var b=createjs.extend(a,createjs.DisplayObject);b.initialize=a,b.isVisible=function(){var a=this.cacheCanvas||this.spriteSheet.complete;return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY&&a)},b.draw=function(a,b){if(this.DisplayObject_draw(a,b))return!0;this._normalizeFrame();var c=this.spriteSheet.getFrame(0|this._currentFrame);if(!c)return!1;var d=c.rect;return d.width&&d.height&&a.drawImage(c.image,d.x,d.y,d.width,d.height,-c.regX,-c.regY,d.width,d.height),!0},b.play=function(){this.paused=!1},b.stop=function(){this.paused=!0},b.gotoAndPlay=function(a){this.paused=!1,this._skipAdvance=!0,this._goto(a)},b.gotoAndStop=function(a){this.paused=!0,this._goto(a)},b.advance=function(a){var b=this.framerate||this.spriteSheet.framerate,c=b&&null!=a?a/(1e3/b):1;this._normalizeFrame(c)},b.getBounds=function(){return this.DisplayObject_getBounds()||this.spriteSheet.getFrameBounds(this.currentFrame,this._rectangle)},b.clone=function(){return this._cloneProps(new a(this.spriteSheet))},b.toString=function(){return"[Sprite (name="+this.name+")]"},b._cloneProps=function(a){return this.DisplayObject__cloneProps(a),a.currentFrame=this.currentFrame,a.currentAnimation=this.currentAnimation,a.paused=this.paused,a.currentAnimationFrame=this.currentAnimationFrame,a.framerate=this.framerate,a._animation=this._animation,a._currentFrame=this._currentFrame,a._skipAdvance=this._skipAdvance,a},b._tick=function(a){this.paused||(this._skipAdvance||this.advance(a&&a.delta),this._skipAdvance=!1),this.DisplayObject__tick(a)},b._normalizeFrame=function(a){a=a||0;var b,c=this._animation,d=this.paused,e=this._currentFrame;if(c){var f=c.speed||1,g=this.currentAnimationFrame;if(b=c.frames.length,g+a*f>=b){var h=c.next;if(this._dispatchAnimationEnd(c,e,d,h,b-1))return;if(h)return this._goto(h,a-(b-g)/f);this.paused=!0,g=c.frames.length-1}else g+=a*f;this.currentAnimationFrame=g,this._currentFrame=c.frames[0|g]}else if(e=this._currentFrame+=a,b=this.spriteSheet.getNumFrames(),e>=b&&b>0&&!this._dispatchAnimationEnd(c,e,d,b-1)&&(this._currentFrame-=b)>=b)return this._normalizeFrame();e=0|this._currentFrame,this.currentFrame!=e&&(this.currentFrame=e,this.dispatchEvent("change"))},b._dispatchAnimationEnd=function(a,b,c,d,e){var f=a?a.name:null;if(this.hasEventListener("animationend")){var g=new createjs.Event("animationend");g.name=f,g.next=d,this.dispatchEvent(g)}var h=this._animation!=a||this._currentFrame!=b;return h||c||!this.paused||(this.currentAnimationFrame=e,h=!0),h},b._goto=function(a,b){if(this.currentAnimationFrame=0,isNaN(a)){var c=this.spriteSheet.getAnimation(a);c&&(this._animation=c,this.currentAnimation=a,this._normalizeFrame(b))}else this.currentAnimation=this._animation=null,this._currentFrame=a,this._normalizeFrame()},createjs.Sprite=createjs.promote(a,"DisplayObject")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a){this.DisplayObject_constructor(),this.graphics=a?a:new createjs.Graphics}var b=createjs.extend(a,createjs.DisplayObject);b.isVisible=function(){var a=this.cacheCanvas||this.graphics&&!this.graphics.isEmpty();return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY&&a)},b.draw=function(a,b){return this.DisplayObject_draw(a,b)?!0:(this.graphics.draw(a,this),!0)},b.clone=function(b){var c=b&&this.graphics?this.graphics.clone():this.graphics;return this._cloneProps(new a(c))},b.toString=function(){return"[Shape (name="+this.name+")]"},createjs.Shape=createjs.promote(a,"DisplayObject")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b,c){this.DisplayObject_constructor(),this.text=a,this.font=b,this.color=c,this.textAlign="left",this.textBaseline="top",this.maxWidth=null,this.outline=0,this.lineHeight=0,this.lineWidth=null}var b=createjs.extend(a,createjs.DisplayObject),c=createjs.createCanvas?createjs.createCanvas():document.createElement("canvas");c.getContext&&(a._workingContext=c.getContext("2d"),c.width=c.height=1),a.H_OFFSETS={start:0,left:0,center:-.5,end:-1,right:-1},a.V_OFFSETS={top:0,hanging:-.01,middle:-.4,alphabetic:-.8,ideographic:-.85,bottom:-1},b.isVisible=function(){var a=this.cacheCanvas||null!=this.text&&""!==this.text;return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY&&a)},b.draw=function(a,b){if(this.DisplayObject_draw(a,b))return!0;var c=this.color||"#000";return this.outline?(a.strokeStyle=c,a.lineWidth=1*this.outline):a.fillStyle=c,this._drawText(this._prepContext(a)),!0},b.getMeasuredWidth=function(){return this._getMeasuredWidth(this.text)},b.getMeasuredLineHeight=function(){return 1.2*this._getMeasuredWidth("M")},b.getMeasuredHeight=function(){return this._drawText(null,{}).height},b.getBounds=function(){var b=this.DisplayObject_getBounds();if(b)return b;if(null==this.text||""===this.text)return null;var c=this._drawText(null,{}),d=this.maxWidth&&this.maxWidthj;j++){var l=i[j],m=null;if(null!=this.lineWidth&&(m=b.measureText(l).width)>this.lineWidth){var n=l.split(/(\s)/);l=n[0],m=b.measureText(l).width;for(var o=1,p=n.length;p>o;o+=2){var q=b.measureText(n[o]+n[o+1]).width;m+q>this.lineWidth?(e&&this._drawTextLine(b,l,h*f),d&&d.push(l),m>g&&(g=m),l=n[o+1],m=b.measureText(l).width,h++):(l+=n[o]+n[o+1],m+=q)}}e&&this._drawTextLine(b,l,h*f),d&&d.push(l),c&&null==m&&(m=b.measureText(l).width),m>g&&(g=m),h++}return c&&(c.width=g,c.height=h*f),e||b.restore(),c},b._drawTextLine=function(a,b,c){this.outline?a.strokeText(b,0,c,this.maxWidth||65535):a.fillText(b,0,c,this.maxWidth||65535)},b._getMeasuredWidth=function(b){var c=a._workingContext;c.save();var d=this._prepContext(c).measureText(b).width;return c.restore(),d},createjs.Text=createjs.promote(a,"DisplayObject")}(),window.createjs=window.createjs||{},function(){"use strict";function a(a,b){this.Container_constructor(),this.text=a||"",this.spriteSheet=b,this.lineHeight=0,this.letterSpacing=0,this.spaceWidth=0,this._oldProps={text:0,spriteSheet:0,lineHeight:0,letterSpacing:0,spaceWidth:0},this._oldStage=null,this._drawAction=null}var b=createjs.extend(a,createjs.Container);a.maxPoolSize=100,a._spritePool=[],b.draw=function(a,b){this.DisplayObject_draw(a,b)||(this._updateState(),this.Container_draw(a,b))},b.getBounds=function(){return this._updateText(),this.Container_getBounds()},b.isVisible=function(){var a=this.cacheCanvas||this.spriteSheet&&this.spriteSheet.complete&&this.text;return!!(this.visible&&this.alpha>0&&0!==this.scaleX&&0!==this.scaleY&&a)},b.clone=function(){return this._cloneProps(new a(this.text,this.spriteSheet))},b.addChild=b.addChildAt=b.removeChild=b.removeChildAt=b.removeAllChildren=function(){},b._updateState=function(){this._updateText()},b._cloneProps=function(a){return this.Container__cloneProps(a),a.lineHeight=this.lineHeight,a.letterSpacing=this.letterSpacing,a.spaceWidth=this.spaceWidth,a},b._getFrameIndex=function(a,b){var c,d=b.getAnimation(a);return d||(a!=(c=a.toUpperCase())||a!=(c=a.toLowerCase())||(c=null),c&&(d=b.getAnimation(c))),d&&d.frames[0]},b._getFrame=function(a,b){var c=this._getFrameIndex(a,b);return null==c?c:b.getFrame(c)},b._getLineHeight=function(a){var b=this._getFrame("1",a)||this._getFrame("T",a)||this._getFrame("L",a)||a.getFrame(0);return b?b.rect.height:1},b._getSpaceWidth=function(a){var b=this._getFrame("1",a)||this._getFrame("l",a)||this._getFrame("e",a)||this._getFrame("a",a)||a.getFrame(0);return b?b.rect.width:1},b._updateText=function(){var b,c=0,d=0,e=this._oldProps,f=!1,g=this.spaceWidth,h=this.lineHeight,i=this.spriteSheet,j=a._spritePool,k=this.children,l=0,m=k.length;for(var n in e)e[n]!=this[n]&&(e[n]=this[n],f=!0);if(f){var o=!!this._getFrame(" ",i);o||g||(g=this._getSpaceWidth(i)),h||(h=this._getLineHeight(i));for(var p=0,q=this.text.length;q>p;p++){var r=this.text.charAt(p);if(" "!=r||o)if("\n"!=r&&"\r"!=r){var s=this._getFrameIndex(r,i);null!=s&&(m>l?b=k[l]:(k.push(b=j.length?j.pop():new createjs.Sprite),b.parent=this,m++),b.spriteSheet=i,b.gotoAndStop(s),b.x=c,b.y=d,l++,c+=b.getBounds().width+this.letterSpacing)}else"\r"==r&&"\n"==this.text.charAt(p+1)&&p++,c=0,d+=h;else c+=g}for(;m>l;)j.push(b=k.pop()),b.parent=null,m--;j.length>a.maxPoolSize&&(j.length=a.maxPoolSize)}},createjs.BitmapText=createjs.promote(a,"Container")}(),window.createjs=window.createjs||{},function(){"use strict";function a(b){this.Container_constructor(),!a.inited&&a.init();var c,d,e,f;b instanceof String||arguments.length>1?(c=b,d=arguments[1],e=arguments[2],f=arguments[3],null==e&&(e=-1),b=null):b&&(c=b.mode,d=b.startPosition,e=b.loop,f=b.labels),b||(b={labels:f}),this.mode=c||a.INDEPENDENT,this.startPosition=d||0,this.loop=e===!0?-1:e||0,this.currentFrame=0,this.paused=b.paused||!1,this.actionsEnabled=!0,this.autoReset=!0,this.frameBounds=this.frameBounds||b.frameBounds,this.framerate=null,b.useTicks=b.paused=!0,this.timeline=new createjs.Timeline(b),this._synchOffset=0,this._rawPosition=-1,this._bound_resolveState=this._resolveState.bind(this),this._t=0,this._managed={}}function b(){throw"MovieClipPlugin cannot be instantiated."}var c=createjs.extend(a,createjs.Container);a.INDEPENDENT="independent",a.SINGLE_FRAME="single",a.SYNCHED="synched",a.inited=!1,a.init=function(){a.inited||(b.install(),a.inited=!0)},c._getLabels=function(){return this.timeline.getLabels()},c.getLabels=createjs.deprecate(c._getLabels,"MovieClip.getLabels"),c._getCurrentLabel=function(){return this.timeline.currentLabel},c.getCurrentLabel=createjs.deprecate(c._getCurrentLabel,"MovieClip.getCurrentLabel"),c._getDuration=function(){return this.timeline.duration},c.getDuration=createjs.deprecate(c._getDuration,"MovieClip.getDuration");try{Object.defineProperties(c,{labels:{get:c._getLabels},currentLabel:{get:c._getCurrentLabel},totalFrames:{get:c._getDuration},duration:{get:c._getDuration}})}catch(d){}c.initialize=a,c.isVisible=function(){return!!(this.visible&&this.alpha>0&&0!=this.scaleX&&0!=this.scaleY)},c.draw=function(a,b){return this.DisplayObject_draw(a,b)?!0:(this._updateState(),this.Container_draw(a,b),!0)},c.play=function(){this.paused=!1},c.stop=function(){this.paused=!0},c.gotoAndPlay=function(a){this.paused=!1,this._goto(a)},c.gotoAndStop=function(a){this.paused=!0,this._goto(a)},c.advance=function(b){var c=a.INDEPENDENT;if(this.mode===c){for(var d=this,e=d.framerate;(d=d.parent)&&null===e;)d.mode===c&&(e=d._framerate);if(this._framerate=e,!this.paused){var f=null!==e&&-1!==e&&null!==b?b/(1e3/e)+this._t:1,g=0|f;for(this._t=f-g;g--;)this._updateTimeline(this._rawPosition+1,!1)}}},c.clone=function(){throw"MovieClip cannot be cloned."},c.toString=function(){return"[MovieClip (name="+this.name+")]"},c._updateState=function(){(-1===this._rawPosition||this.mode!==a.INDEPENDENT)&&this._updateTimeline(-1)},c._tick=function(a){this.advance(a&&a.delta),this.Container__tick(a)},c._goto=function(a){var b=this.timeline.resolve(a);null!=b&&(this._t=0,this._updateTimeline(b,!0))},c._reset=function(){this._rawPosition=-1,this._t=this.currentFrame=0,this.paused=!1},c._updateTimeline=function(b,c){var d=this.mode!==a.INDEPENDENT,e=this.timeline;d&&(b=this.startPosition+(this.mode===a.SINGLE_FRAME?0:this._synchOffset)),0>b&&(b=0),(this._rawPosition!==b||d)&&(this._rawPosition=b,e.loop=this.loop,e.setPosition(b,d||!this.actionsEnabled,c,this._bound_resolveState))},c._renderFirstFrame=function(){var a=this.timeline,b=a.rawPosition;a.setPosition(0,!0,!0,this._bound_resolveState),a.rawPosition=b},c._resolveState=function(){var a=this.timeline;this.currentFrame=a.position;for(var b in this._managed)this._managed[b]=1;for(var c=a.tweens,d=0,e=c.length;e>d;d++){var f=c[d],g=f.target;if(g!==this&&!f.passive){var h=f._stepPosition;g instanceof createjs.DisplayObject?this._addManagedChild(g,h):this._setState(g.state,h)}}var i=this.children;for(d=i.length-1;d>=0;d--){var j=i[d].id;1===this._managed[j]&&(this.removeChildAt(d),delete this._managed[j])}},c._setState=function(a,b){if(a)for(var c=a.length-1;c>=0;c--){var d=a[c],e=d.t,f=d.p;for(var g in f)e[g]=f[g];this._addManagedChild(e,b)}},c._addManagedChild=function(b,c){b._off||(this.addChildAt(b,0),b instanceof a&&(b._synchOffset=c,b.mode===a.INDEPENDENT&&b.autoReset&&!this._managed[b.id]&&b._reset()),this._managed[b.id]=2)},c._getBounds=function(a,b){var c=this.DisplayObject_getBounds();return c||this.frameBounds&&(c=this._rectangle.copy(this.frameBounds[this.currentFrame])),c?this._transformBounds(c,a,b):this.Container__getBounds(a,b)},createjs.MovieClip=createjs.promote(a,"Container"),b.priority=100,b.ID="MovieClip",b.install=function(){createjs.Tween._installPlugin(b)},b.init=function(c,d){"startPosition"===d&&c.target instanceof a&&c._addPlugin(b)},b.step=function(){},b.change=function(a,b,c,d,e){return"startPosition"===c?1===e?b.props[c]:b.prev.props[c]:void 0}}(),window.createjs=window.createjs||{},function(){"use strict";function a(){throw"SpriteSheetUtils cannot be instantiated"}var b=createjs.createCanvas?createjs.createCanvas():document.createElement("canvas");b.getContext&&(a._workingCanvas=b,a._workingContext=b.getContext("2d"),b.width=b.height=1),a.extractFrame=function(b,c){isNaN(c)&&(c=b.getAnimation(c).frames[0]);var d=b.getFrame(c);if(!d)return null;var e=d.rect,f=a._workingCanvas;f.width=e.width,f.height=e.height,a._workingContext.drawImage(d.image,e.x,e.y,e.width,e.height,0,0,e.width,e.height);var g=document.createElement("img");return g.src=f.toDataURL("image/png"),g},a.addFlippedFrames=createjs.deprecate(null,"SpriteSheetUtils.addFlippedFrames"),a.mergeAlpha=createjs.deprecate(null,"SpriteSheetUtils.mergeAlpha"),a._flip=function(b,c,d,e){for(var f=b._images,g=a._workingCanvas,h=a._workingContext,i=f.length/c,j=0;i>j;j++){var k=f[j];k.__tmp=j,h.setTransform(1,0,0,1,0,0),h.clearRect(0,0,g.width+1,g.height+1),g.width=k.width,g.height=k.height,h.setTransform(d?-1:1,0,0,e?-1:1,d?k.width:0,e?k.height:0),h.drawImage(k,0,0);var l=document.createElement("img");l.src=g.toDataURL("image/png"),l.width=k.width||k.naturalWidth,l.height=k.height||k.naturalHeight,f.push(l)}var m=b._frames,n=m.length/c;for(j=0;n>j;j++){k=m[j]; + var o = k.rect.clone(); l = f[k.image.__tmp + i * c]; var p = { image: l, rect: o, regX: k.regX, regY: k.regY }; d && (o.x = (l.width || l.naturalWidth) - o.x - o.width, p.regX = o.width - k.regX), e && (o.y = (l.height || l.naturalHeight) - o.y - o.height, p.regY = o.height - k.regY), m.push(p) + } var q = "_" + (d ? "h" : "") + (e ? "v" : ""), r = b._animations, s = b._data, t = r.length / c; for (j = 0; t > j; j++) { var u = r[j]; k = s[u]; var v = { name: u + q, speed: k.speed, next: k.next, frames: [] }; k.next && (v.next += q), m = k.frames; for (var w = 0, x = m.length; x > w; w++)v.frames.push(m[w] + n * c); s[v.name] = v, r.push(v.name) } + }, createjs.SpriteSheetUtils = a + }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.EventDispatcher_constructor(), this.maxWidth = 2048, this.maxHeight = 2048, this.spriteSheet = null, this.scale = 1, this.padding = 1, this.timeSlice = .3, this.progress = -1, this.framerate = a || 0, this._frames = [], this._animations = {}, this._data = null, this._nextFrameIndex = 0, this._index = 0, this._timerID = null, this._scale = 1 } var b = createjs.extend(a, createjs.EventDispatcher); a.ERR_DIMENSIONS = "frame dimensions exceed max spritesheet dimensions", a.ERR_RUNNING = "a build is already running", b.addFrame = function (b, c, d, e, f) { if (this._data) throw a.ERR_RUNNING; var g = c || b.bounds || b.nominalBounds; return !g && b.getBounds && (g = b.getBounds()), g ? (d = d || 1, this._frames.push({ source: b, sourceRect: g, scale: d, funct: e, data: f, index: this._frames.length, height: g.height * d }) - 1) : null }, b.addAnimation = function (b, c, d, e) { if (this._data) throw a.ERR_RUNNING; this._animations[b] = { frames: c, next: d, speed: e } }, b.addMovieClip = function (b, c, d, e, f, g) { if (this._data) throw a.ERR_RUNNING; var h = b.frameBounds, i = c || b.bounds || b.nominalBounds; if (!i && b.getBounds && (i = b.getBounds()), i || h) { var j, k, l = this._frames.length, m = b.timeline.duration; for (j = 0; m > j; j++) { var n = h && h[j] ? h[j] : i; this.addFrame(b, n, d, this._setupMovieClipFrame, { i: j, f: e, d: f }) } var o = b.timeline._labels, p = []; for (var q in o) p.push({ index: o[q], label: q }); if (p.length) for (p.sort(function (a, b) { return a.index - b.index }), j = 0, k = p.length; k > j; j++) { for (var r = p[j].label, s = l + p[j].index, t = l + (j == k - 1 ? m : p[j + 1].index), u = [], v = s; t > v; v++)u.push(v); (!g || (r = g(r, b, s, t))) && this.addAnimation(r, u, !0) } } }, b.build = function () { if (this._data) throw a.ERR_RUNNING; for (this._startBuild(); this._drawNext();); return this._endBuild(), this.spriteSheet }, b.buildAsync = function (b) { if (this._data) throw a.ERR_RUNNING; this.timeSlice = b, this._startBuild(); var c = this; this._timerID = setTimeout(function () { c._run() }, 50 - 50 * Math.max(.01, Math.min(.99, this.timeSlice || .3))) }, b.stopAsync = function () { clearTimeout(this._timerID), this._data = null }, b.clone = function () { throw "SpriteSheetBuilder cannot be cloned." }, b.toString = function () { return "[SpriteSheetBuilder]" }, b._startBuild = function () { var b = this.padding || 0; this.progress = 0, this.spriteSheet = null, this._index = 0, this._scale = this.scale; var c = []; this._data = { images: [], frames: c, framerate: this.framerate, animations: this._animations }; var d = this._frames.slice(); if (d.sort(function (a, b) { return a.height <= b.height ? -1 : 1 }), d[d.length - 1].height + 2 * b > this.maxHeight) throw a.ERR_DIMENSIONS; for (var e = 0, f = 0, g = 0; d.length;) { var h = this._fillRow(d, e, g, c, b); if (h.w > f && (f = h.w), e += h.h, !h.h || !d.length) { var i = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas"); i.width = this._getSize(f, this.maxWidth), i.height = this._getSize(e, this.maxHeight), this._data.images[g] = i, h.h || (f = e = 0, g++) } } }, b._setupMovieClipFrame = function (a, b) { var c = a.actionsEnabled; a.actionsEnabled = !1, a.gotoAndStop(b.i), a.actionsEnabled = c, b.f && b.f(a, b.d, b.i) }, b._getSize = function (a, b) { for (var c = 4; Math.pow(2, ++c) < a;); return Math.min(b, Math.pow(2, c)) }, b._fillRow = function (b, c, d, e, f) { var g = this.maxWidth, h = this.maxHeight; c += f; for (var i = h - c, j = f, k = 0, l = b.length - 1; l >= 0; l--) { var m = b[l], n = this._scale * m.scale, o = m.sourceRect, p = m.source, q = Math.floor(n * o.x - f), r = Math.floor(n * o.y - f), s = Math.ceil(n * o.height + 2 * f), t = Math.ceil(n * o.width + 2 * f); if (t > g) throw a.ERR_DIMENSIONS; s > i || j + t > g || (m.img = d, m.rect = new createjs.Rectangle(j, c, t, s), k = k || s, b.splice(l, 1), e[m.index] = [j, c, t, s, d, Math.round(-q + n * p.regX - f), Math.round(-r + n * p.regY - f)], j += t) } return { w: j, h: k } }, b._endBuild = function () { this.spriteSheet = new createjs.SpriteSheet(this._data), this._data = null, this.progress = 1, this.dispatchEvent("complete") }, b._run = function () { for (var a = 50 * Math.max(.01, Math.min(.99, this.timeSlice || .3)), b = (new Date).getTime() + a, c = !1; b > (new Date).getTime();)if (!this._drawNext()) { c = !0; break } if (c) this._endBuild(); else { var d = this; this._timerID = setTimeout(function () { d._run() }, 50 - a) } var e = this.progress = this._index / this._frames.length; if (this.hasEventListener("progress")) { var f = new createjs.Event("progress"); f.progress = e, this.dispatchEvent(f) } }, b._drawNext = function () { var a = this._frames[this._index], b = a.scale * this._scale, c = a.rect, d = a.sourceRect, e = this._data.images[a.img], f = e.getContext("2d"); return a.funct && a.funct(a.source, a.data), f.save(), f.beginPath(), f.rect(c.x, c.y, c.width, c.height), f.clip(), f.translate(Math.ceil(c.x - d.x * b), Math.ceil(c.y - d.y * b)), f.scale(b, b), a.source.draw(f), f.restore(), ++this._index < this._frames.length }, createjs.SpriteSheetBuilder = createjs.promote(a, "EventDispatcher") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.DisplayObject_constructor(), "string" == typeof a && (a = document.getElementById(a)), this.mouseEnabled = !1; var b = a.style; b.position = "absolute", b.transformOrigin = b.WebkitTransformOrigin = b.msTransformOrigin = b.MozTransformOrigin = b.OTransformOrigin = "0% 0%", this.htmlElement = a, this._oldProps = null, this._oldStage = null, this._drawAction = null } var b = createjs.extend(a, createjs.DisplayObject); b.isVisible = function () { return null != this.htmlElement }, b.draw = function () { return !0 }, b.cache = function () { }, b.uncache = function () { }, b.updateCache = function () { }, b.hitTest = function () { }, b.localToGlobal = function () { }, b.globalToLocal = function () { }, b.localToLocal = function () { }, b.clone = function () { throw "DOMElement cannot be cloned." }, b.toString = function () { return "[DOMElement (name=" + this.name + ")]" }, b._tick = function (a) { var b = this.stage; b && b !== this._oldStage && (this._drawAction && b.off("drawend", this._drawAction), this._drawAction = b.on("drawend", this._handleDrawEnd, this), this._oldStage = b), this.DisplayObject__tick(a) }, b._handleDrawEnd = function () { var a = this.htmlElement; if (a) { var b = a.style, c = this.getConcatenatedDisplayProps(this._props), d = c.matrix, e = c.visible ? "visible" : "hidden"; if (e != b.visibility && (b.visibility = e), c.visible) { var f = this._oldProps, g = f && f.matrix, h = 1e4; if (!g || !g.equals(d)) { var i = "matrix(" + (d.a * h | 0) / h + "," + (d.b * h | 0) / h + "," + (d.c * h | 0) / h + "," + (d.d * h | 0) / h + "," + (d.tx + .5 | 0); b.transform = b.WebkitTransform = b.OTransform = b.msTransform = i + "," + (d.ty + .5 | 0) + ")", b.MozTransform = i + "px," + (d.ty + .5 | 0) + "px)", f || (f = this._oldProps = new createjs.DisplayProps(!0, null)), f.matrix.copy(d) } f.alpha != c.alpha && (b.opacity = "" + (c.alpha * h | 0) / h, f.alpha = c.alpha) } } }, createjs.DOMElement = createjs.promote(a, "DisplayObject") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a() { this.usesContext = !1, this._multiPass = null, this.VTX_SHADER_BODY = null, this.FRAG_SHADER_BODY = null } var b = a.prototype; b.getBounds = function (a) { return a }, b.shaderParamSetup = function () { }, b.applyFilter = function (a, b, c, d, e, f, g, h) { f = f || a, null == g && (g = b), null == h && (h = c); try { var i = a.getImageData(b, c, d, e) } catch (j) { return !1 } return this._applyFilter(i) ? (f.putImageData(i, g, h), !0) : !1 }, b.toString = function () { return "[Filter]" }, b.clone = function () { return new a }, b._applyFilter = function () { return !0 }, createjs.Filter = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function a() { this.width = void 0, this.height = void 0, this.x = void 0, this.y = void 0, this.scale = 1, this.offX = 0, this.offY = 0, this.cacheID = 0, this._filterOffX = 0, this._filterOffY = 0, this._cacheDataURLID = 0, this._cacheDataURL = null, this._drawWidth = 0, this._drawHeight = 0 } var b = a.prototype; a.getFilterBounds = function (a, b) { b || (b = new createjs.Rectangle); var c = a.filters, d = c && c.length; if (0 >= !!d) return b; for (var e = 0; d > e; e++) { var f = c[e]; if (f && f.getBounds) { var g = f.getBounds(); g && (0 == e ? b.setValues(g.x, g.y, g.width, g.height) : b.extend(g.x, g.y, g.width, g.height)) } } return b }, b.toString = function () { return "[BitmapCache]" }, b.define = function (a, b, c, d, e, f, g) { if (!a) throw "No symbol to cache"; this._options = g, this.target = a, this.width = d >= 1 ? d : 1, this.height = e >= 1 ? e : 1, this.x = b || 0, this.y = c || 0, this.scale = f || 1, this.update() }, b.update = function (b) { if (!this.target) throw "define() must be called before update()"; var c = a.getFilterBounds(this.target), d = this.target.cacheCanvas; this._drawWidth = Math.ceil(this.width * this.scale) + c.width, this._drawHeight = Math.ceil(this.height * this.scale) + c.height, d && this._drawWidth == d.width && this._drawHeight == d.height || this._updateSurface(), this._filterOffX = c.x, this._filterOffY = c.y, this.offX = this.x * this.scale + this._filterOffX, this.offY = this.y * this.scale + this._filterOffY, this._drawToCache(b), this.cacheID = this.cacheID ? this.cacheID + 1 : 1 }, b.release = function () { if (this._webGLCache) this._webGLCache.isCacheControlled || (this.__lastRT && (this.__lastRT = void 0), this.__rtA && this._webGLCache._killTextureObject(this.__rtA), this.__rtB && this._webGLCache._killTextureObject(this.__rtB), this.target && this.target.cacheCanvas && this._webGLCache._killTextureObject(this.target.cacheCanvas)), this._webGLCache = !1; else { var a = this.target.stage; a instanceof createjs.StageGL && a.releaseTexture(this.target.cacheCanvas) } this.target = this.target.cacheCanvas = null, this.cacheID = this._cacheDataURLID = this._cacheDataURL = void 0, this.width = this.height = this.x = this.y = this.offX = this.offY = 0, this.scale = 1 }, b.getCacheDataURL = function () { var a = this.target && this.target.cacheCanvas; return a ? (this.cacheID != this._cacheDataURLID && (this._cacheDataURLID = this.cacheID, this._cacheDataURL = a.toDataURL ? a.toDataURL() : null), this._cacheDataURL) : null }, b.draw = function (a) { return this.target ? (a.drawImage(this.target.cacheCanvas, this.x + this._filterOffX / this.scale, this.y + this._filterOffY / this.scale, this._drawWidth / this.scale, this._drawHeight / this.scale), !0) : !1 }, b._updateSurface = function () { if (!this._options || !this._options.useGL) { var a = this.target.cacheCanvas; return a || (a = this.target.cacheCanvas = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas")), a.width = this._drawWidth, void (a.height = this._drawHeight) } if (!this._webGLCache) if ("stage" === this._options.useGL) { if (!this.target.stage || !this.target.stage.isWebGL) { var b = "Cannot use 'stage' for cache because the object's parent stage is "; throw b += this.target.stage ? "non WebGL." : "not set, please addChild to the correct stage." } this.target.cacheCanvas = !0, this._webGLCache = this.target.stage } else if ("new" === this._options.useGL) this.target.cacheCanvas = document.createElement("canvas"), this._webGLCache = new createjs.StageGL(this.target.cacheCanvas, { antialias: !0, transparent: !0, autoPurge: -1 }), this._webGLCache.isCacheControlled = !0; else { if (!(this._options.useGL instanceof createjs.StageGL)) throw "Invalid option provided to useGL, expected ['stage', 'new', StageGL, undefined], got " + this._options.useGL; this.target.cacheCanvas = !0, this._webGLCache = this._options.useGL, this._webGLCache.isCacheControlled = !0 } var a = this.target.cacheCanvas, c = this._webGLCache; c.isCacheControlled && (a.width = this._drawWidth, a.height = this._drawHeight, c.updateViewport(this._drawWidth, this._drawHeight)), this.target.filters ? (c.getTargetRenderTexture(this.target, this._drawWidth, this._drawHeight), c.getTargetRenderTexture(this.target, this._drawWidth, this._drawHeight)) : c.isCacheControlled || c.getTargetRenderTexture(this.target, this._drawWidth, this._drawHeight) }, b._drawToCache = function (a) { var b = this.target.cacheCanvas, c = this.target, d = this._webGLCache; if (d) d.cacheDraw(c, c.filters, this), b = this.target.cacheCanvas, b.width = this._drawWidth, b.height = this._drawHeight; else { var e = b.getContext("2d"); a || e.clearRect(0, 0, this._drawWidth + 1, this._drawHeight + 1), e.save(), e.globalCompositeOperation = a, e.setTransform(this.scale, 0, 0, this.scale, -this._filterOffX, -this._filterOffY), e.translate(-this.x, -this.y), c.draw(e, !0), e.restore(), c.filters && c.filters.length && this._applyFilters(e) } b._invalid = !0 }, b._applyFilters = function (a) { var b, c = this.target.filters, d = this._drawWidth, e = this._drawHeight, f = 0, g = c[f]; do g.usesContext ? (b && (a.putImageData(b, 0, 0), b = null), g.applyFilter(a, 0, 0, d, e)) : (b || (b = a.getImageData(0, 0, d, e)), g._applyFilter(b)), g = null !== g._multiPass ? g._multiPass : c[++f]; while (g); b && a.putImageData(b, 0, 0) }, createjs.BitmapCache = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a, b, c) { this.Filter_constructor(), this._blurX = a, this._blurXTable = [], this._lastBlurX = null, this._blurY = b, this._blurYTable = [], this._lastBlurY = null, this._quality, this._lastQuality = null, this.FRAG_SHADER_TEMPLATE = "uniform float xWeight[{{blurX}}];uniform float yWeight[{{blurY}}];uniform vec2 textureOffset;void main(void) {vec4 color = vec4(0.0);float xAdj = ({{blurX}}.0-1.0)/2.0;float yAdj = ({{blurY}}.0-1.0)/2.0;vec2 sampleOffset;for(int i=0; i<{{blurX}}; i++) {for(int j=0; j<{{blurY}}; j++) {sampleOffset = vRenderCoord + (textureOffset * vec2(float(i)-xAdj, float(j)-yAdj));color += texture2D(uSampler, sampleOffset) * (xWeight[i] * yWeight[j]);}}gl_FragColor = color.rgba;}", (isNaN(c) || 1 > c) && (c = 1), this.setQuality(0 | c) } var b = createjs.extend(a, createjs.Filter); b.getBlurX = function () { return this._blurX }, b.getBlurY = function () { return this._blurY }, b.setBlurX = function (a) { (isNaN(a) || 0 > a) && (a = 0), this._blurX = a }, b.setBlurY = function (a) { (isNaN(a) || 0 > a) && (a = 0), this._blurY = a }, b.getQuality = function () { return this._quality }, b.setQuality = function (a) { (isNaN(a) || 0 > a) && (a = 0), this._quality = 0 | a }, b._getShader = function () { var a = this._lastBlurX !== this._blurX, b = this._lastBlurY !== this._blurY, c = this._lastQuality !== this._quality; return a || b || c ? ((a || c) && (this._blurXTable = this._getTable(this._blurX * this._quality)), (b || c) && (this._blurYTable = this._getTable(this._blurY * this._quality)), this._updateShader(), this._lastBlurX = this._blurX, this._lastBlurY = this._blurY, void (this._lastQuality = this._quality)) : this._compiledShader }, b._setShader = function () { this._compiledShader }; try { Object.defineProperties(b, { blurX: { get: b.getBlurX, set: b.setBlurX }, blurY: { get: b.getBlurY, set: b.setBlurY }, quality: { get: b.getQuality, set: b.setQuality }, _builtShader: { get: b._getShader, set: b._setShader } }) } catch (c) { console.log(c) } b._getTable = function (a) { var b = 4.2; if (1 >= a) return [1]; var c = [], d = Math.ceil(2 * a); d += d % 2 ? 0 : 1; for (var e = d / 2 | 0, f = -e; e >= f; f++) { var g = f / e * b; c.push(1 / Math.sqrt(2 * Math.PI) * Math.pow(Math.E, -(Math.pow(g, 2) / 4))) } var h = c.reduce(function (a, b) { return a + b }); return c.map(function (a) { return a / h }) }, b._updateShader = function () { if (void 0 !== this._blurX && void 0 !== this._blurY) { var a = this.FRAG_SHADER_TEMPLATE; a = a.replace(/\{\{blurX\}\}/g, this._blurXTable.length.toFixed(0)), a = a.replace(/\{\{blurY\}\}/g, this._blurYTable.length.toFixed(0)), this.FRAG_SHADER_BODY = a } }, b.shaderParamSetup = function (a, b, c) { a.uniform1fv(a.getUniformLocation(c, "xWeight"), this._blurXTable), a.uniform1fv(a.getUniformLocation(c, "yWeight"), this._blurYTable), a.uniform2f(a.getUniformLocation(c, "textureOffset"), 2 / (b._viewportWidth * this._quality), 2 / (b._viewportHeight * this._quality)) }, a.MUL_TABLE = [1, 171, 205, 293, 57, 373, 79, 137, 241, 27, 391, 357, 41, 19, 283, 265, 497, 469, 443, 421, 25, 191, 365, 349, 335, 161, 155, 149, 9, 278, 269, 261, 505, 245, 475, 231, 449, 437, 213, 415, 405, 395, 193, 377, 369, 361, 353, 345, 169, 331, 325, 319, 313, 307, 301, 37, 145, 285, 281, 69, 271, 267, 263, 259, 509, 501, 493, 243, 479, 118, 465, 459, 113, 446, 55, 435, 429, 423, 209, 413, 51, 403, 199, 393, 97, 3, 379, 375, 371, 367, 363, 359, 355, 351, 347, 43, 85, 337, 333, 165, 327, 323, 5, 317, 157, 311, 77, 305, 303, 75, 297, 294, 73, 289, 287, 71, 141, 279, 277, 275, 68, 135, 67, 133, 33, 262, 260, 129, 511, 507, 503, 499, 495, 491, 61, 121, 481, 477, 237, 235, 467, 232, 115, 457, 227, 451, 7, 445, 221, 439, 218, 433, 215, 427, 425, 211, 419, 417, 207, 411, 409, 203, 202, 401, 399, 396, 197, 49, 389, 387, 385, 383, 95, 189, 47, 187, 93, 185, 23, 183, 91, 181, 45, 179, 89, 177, 11, 175, 87, 173, 345, 343, 341, 339, 337, 21, 167, 83, 331, 329, 327, 163, 81, 323, 321, 319, 159, 79, 315, 313, 39, 155, 309, 307, 153, 305, 303, 151, 75, 299, 149, 37, 295, 147, 73, 291, 145, 289, 287, 143, 285, 71, 141, 281, 35, 279, 139, 69, 275, 137, 273, 17, 271, 135, 269, 267, 133, 265, 33, 263, 131, 261, 130, 259, 129, 257, 1], a.SHG_TABLE = [0, 9, 10, 11, 9, 12, 10, 11, 12, 9, 13, 13, 10, 9, 13, 13, 14, 14, 14, 14, 10, 13, 14, 14, 14, 13, 13, 13, 9, 14, 14, 14, 15, 14, 15, 14, 15, 15, 14, 15, 15, 15, 14, 15, 15, 15, 15, 15, 14, 15, 15, 15, 15, 15, 15, 12, 14, 15, 15, 13, 15, 15, 15, 15, 16, 16, 16, 15, 16, 14, 16, 16, 14, 16, 13, 16, 16, 16, 15, 16, 13, 16, 15, 16, 14, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 14, 16, 16, 15, 16, 16, 10, 16, 15, 16, 14, 16, 16, 14, 16, 16, 14, 16, 16, 14, 15, 16, 16, 16, 14, 15, 14, 15, 13, 16, 16, 15, 17, 17, 17, 17, 17, 17, 14, 15, 17, 17, 16, 16, 17, 16, 15, 17, 16, 17, 11, 17, 16, 17, 16, 17, 16, 17, 17, 16, 17, 17, 16, 17, 17, 16, 16, 17, 17, 17, 16, 14, 17, 17, 17, 17, 15, 16, 14, 16, 15, 16, 13, 16, 15, 16, 14, 16, 15, 16, 12, 16, 15, 16, 17, 17, 17, 17, 17, 13, 16, 15, 17, 17, 17, 16, 15, 17, 17, 17, 16, 15, 17, 17, 14, 16, 17, 17, 16, 17, 17, 16, 15, 17, 16, 14, 17, 16, 15, 17, 16, 17, 17, 16, 17, 15, 16, 17, 14, 17, 16, 15, 17, 16, 17, 13, 17, 16, 17, 17, 16, 17, 14, 17, 16, 17, 16, 17, 16, 17, 9], b.getBounds = function (a) { var b = 0 | this.blurX, c = 0 | this.blurY; if (0 >= b && 0 >= c) return a; var d = Math.pow(this.quality, .2); return (a || new createjs.Rectangle).pad(c * d + 1, b * d + 1, c * d + 1, b * d + 1) }, b.clone = function () { return new a(this.blurX, this.blurY, this.quality) }, b.toString = function () { return "[BlurFilter]" }, b._applyFilter = function (b) { var c = this._blurX >> 1; if (isNaN(c) || 0 > c) return !1; var d = this._blurY >> 1; if (isNaN(d) || 0 > d) return !1; if (0 == c && 0 == d) return !1; var e = this.quality; (isNaN(e) || 1 > e) && (e = 1), e |= 0, e > 3 && (e = 3), 1 > e && (e = 1); var f = b.data, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = c + c + 1 | 0, w = d + d + 1 | 0, x = 0 | b.width, y = 0 | b.height, z = x - 1 | 0, A = y - 1 | 0, B = c + 1 | 0, C = d + 1 | 0, D = { r: 0, b: 0, g: 0, a: 0 }, E = D; for (i = 1; v > i; i++)E = E.n = { r: 0, b: 0, g: 0, a: 0 }; E.n = D; var F = { r: 0, b: 0, g: 0, a: 0 }, G = F; for (i = 1; w > i; i++)G = G.n = { r: 0, b: 0, g: 0, a: 0 }; G.n = F; for (var H = null, I = 0 | a.MUL_TABLE[c], J = 0 | a.SHG_TABLE[c], K = 0 | a.MUL_TABLE[d], L = 0 | a.SHG_TABLE[d]; e-- > 0;) { m = l = 0; var M = I, N = J; for (h = y; --h > -1;) { for (n = B * (r = f[0 | l]), o = B * (s = f[l + 1 | 0]), p = B * (t = f[l + 2 | 0]), q = B * (u = f[l + 3 | 0]), E = D, i = B; --i > -1;)E.r = r, E.g = s, E.b = t, E.a = u, E = E.n; for (i = 1; B > i; i++)j = l + ((i > z ? z : i) << 2) | 0, n += E.r = f[j], o += E.g = f[j + 1], p += E.b = f[j + 2], q += E.a = f[j + 3], E = E.n; for (H = D, g = 0; x > g; g++)f[l++] = n * M >>> N, f[l++] = o * M >>> N, f[l++] = p * M >>> N, f[l++] = q * M >>> N, j = m + ((j = g + c + 1) < z ? j : z) << 2, n -= H.r - (H.r = f[j]), o -= H.g - (H.g = f[j + 1]), p -= H.b - (H.b = f[j + 2]), q -= H.a - (H.a = f[j + 3]), H = H.n; m += x } for (M = K, N = L, g = 0; x > g; g++) { for (l = g << 2 | 0, n = C * (r = f[l]) | 0, o = C * (s = f[l + 1 | 0]) | 0, p = C * (t = f[l + 2 | 0]) | 0, q = C * (u = f[l + 3 | 0]) | 0, G = F, i = 0; C > i; i++)G.r = r, G.g = s, G.b = t, G.a = u, G = G.n; for (k = x, i = 1; d >= i; i++)l = k + g << 2, n += G.r = f[l], o += G.g = f[l + 1], p += G.b = f[l + 2], q += G.a = f[l + 3], G = G.n, A > i && (k += x); if (l = g, H = F, e > 0) for (h = 0; y > h; h++)j = l << 2, f[j + 3] = u = q * M >>> N, u > 0 ? (f[j] = n * M >>> N, f[j + 1] = o * M >>> N, f[j + 2] = p * M >>> N) : f[j] = f[j + 1] = f[j + 2] = 0, j = g + ((j = h + C) < A ? j : A) * x << 2, n -= H.r - (H.r = f[j]), o -= H.g - (H.g = f[j + 1]), p -= H.b - (H.b = f[j + 2]), q -= H.a - (H.a = f[j + 3]), H = H.n, l += x; else for (h = 0; y > h; h++)j = l << 2, f[j + 3] = u = q * M >>> N, u > 0 ? (u = 255 / u, f[j] = (n * M >>> N) * u, f[j + 1] = (o * M >>> N) * u, f[j + 2] = (p * M >>> N) * u) : f[j] = f[j + 1] = f[j + 2] = 0, j = g + ((j = h + C) < A ? j : A) * x << 2, n -= H.r - (H.r = f[j]), o -= H.g - (H.g = f[j + 1]), p -= H.b - (H.b = f[j + 2]), q -= H.a - (H.a = f[j + 3]), H = H.n, l += x } } return !0 }, createjs.BlurFilter = createjs.promote(a, "Filter") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.Filter_constructor(), this.alphaMap = a, this._alphaMap = null, this._mapData = null, this._mapTexture = null, this.FRAG_SHADER_BODY = "uniform sampler2D uAlphaSampler;void main(void) {vec4 color = texture2D(uSampler, vRenderCoord);vec4 alphaMap = texture2D(uAlphaSampler, vTextureCoord);gl_FragColor = vec4(color.rgb, color.a * (alphaMap.r * ceil(alphaMap.a)));}" } var b = createjs.extend(a, createjs.Filter); b.shaderParamSetup = function (a, b, c) { this._mapTexture || (this._mapTexture = a.createTexture()), a.activeTexture(a.TEXTURE1), a.bindTexture(a.TEXTURE_2D, this._mapTexture), b.setTextureParams(a), a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, a.RGBA, a.UNSIGNED_BYTE, this.alphaMap), a.uniform1i(a.getUniformLocation(c, "uAlphaSampler"), 1) }, b.clone = function () { var b = new a(this.alphaMap); return b._alphaMap = this._alphaMap, b._mapData = this._mapData, b }, b.toString = function () { return "[AlphaMapFilter]" }, b._applyFilter = function (a) { if (!this.alphaMap) return !0; if (!this._prepAlphaMap()) return !1; for (var b = a.data, c = this._mapData, d = 0, e = b.length; e > d; d += 4)b[d + 3] = c[d] || 0; return !0 }, b._prepAlphaMap = function () { if (!this.alphaMap) return !1; if (this.alphaMap == this._alphaMap && this._mapData) return !0; this._mapData = null; var a, b = this._alphaMap = this.alphaMap, c = b; b instanceof HTMLCanvasElement ? a = c.getContext("2d") : (c = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas"), c.width = b.width, c.height = b.height, a = c.getContext("2d"), a.drawImage(b, 0, 0)); try { var d = a.getImageData(0, 0, b.width, b.height) } catch (e) { return !1 } return this._mapData = d.data, !0 }, createjs.AlphaMapFilter = createjs.promote(a, "Filter") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.Filter_constructor(), this.mask = a, this.usesContext = !0, this.FRAG_SHADER_BODY = "uniform sampler2D uAlphaSampler;void main(void) {vec4 color = texture2D(uSampler, vRenderCoord);vec4 alphaMap = texture2D(uAlphaSampler, vTextureCoord);gl_FragColor = vec4(color.rgb, color.a * alphaMap.a);}" } var b = createjs.extend(a, createjs.Filter); b.shaderParamSetup = function (a, b, c) { this._mapTexture || (this._mapTexture = a.createTexture()), a.activeTexture(a.TEXTURE1), a.bindTexture(a.TEXTURE_2D, this._mapTexture), b.setTextureParams(a), a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, a.RGBA, a.UNSIGNED_BYTE, this.mask), a.uniform1i(a.getUniformLocation(c, "uAlphaSampler"), 1) }, b.applyFilter = function (a, b, c, d, e, f, g, h) { return this.mask ? (f = f || a, null == g && (g = b), null == h && (h = c), f.save(), a != f ? !1 : (f.globalCompositeOperation = "destination-in", f.drawImage(this.mask, g, h), f.restore(), !0)) : !0 }, b.clone = function () { return new a(this.mask) }, b.toString = function () { return "[AlphaMaskFilter]" }, createjs.AlphaMaskFilter = createjs.promote(a, "Filter") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a, b, c, d, e, f, g, h) { this.Filter_constructor(), this.redMultiplier = null != a ? a : 1, this.greenMultiplier = null != b ? b : 1, this.blueMultiplier = null != c ? c : 1, this.alphaMultiplier = null != d ? d : 1, this.redOffset = e || 0, this.greenOffset = f || 0, this.blueOffset = g || 0, this.alphaOffset = h || 0, this.FRAG_SHADER_BODY = "uniform vec4 uColorMultiplier;uniform vec4 uColorOffset;void main(void) {vec4 color = texture2D(uSampler, vRenderCoord);gl_FragColor = (color * uColorMultiplier) + uColorOffset;}" } var b = createjs.extend(a, createjs.Filter); b.shaderParamSetup = function (a, b, c) { a.uniform4f(a.getUniformLocation(c, "uColorMultiplier"), this.redMultiplier, this.greenMultiplier, this.blueMultiplier, this.alphaMultiplier), a.uniform4f(a.getUniformLocation(c, "uColorOffset"), this.redOffset / 255, this.greenOffset / 255, this.blueOffset / 255, this.alphaOffset / 255) }, b.toString = function () { return "[ColorFilter]" }, b.clone = function () { return new a(this.redMultiplier, this.greenMultiplier, this.blueMultiplier, this.alphaMultiplier, this.redOffset, this.greenOffset, this.blueOffset, this.alphaOffset) }, b._applyFilter = function (a) { for (var b = a.data, c = b.length, d = 0; c > d; d += 4)b[d] = b[d] * this.redMultiplier + this.redOffset, b[d + 1] = b[d + 1] * this.greenMultiplier + this.greenOffset, b[d + 2] = b[d + 2] * this.blueMultiplier + this.blueOffset, b[d + 3] = b[d + 3] * this.alphaMultiplier + this.alphaOffset; return !0 }, createjs.ColorFilter = createjs.promote(a, "Filter") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a, b, c, d) { this.setColor(a, b, c, d) } var b = a.prototype; a.DELTA_INDEX = [0, .01, .02, .04, .05, .06, .07, .08, .1, .11, .12, .14, .15, .16, .17, .18, .2, .21, .22, .24, .25, .27, .28, .3, .32, .34, .36, .38, .4, .42, .44, .46, .48, .5, .53, .56, .59, .62, .65, .68, .71, .74, .77, .8, .83, .86, .89, .92, .95, .98, 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36, 1.42, 1.48, 1.54, 1.6, 1.66, 1.72, 1.78, 1.84, 1.9, 1.96, 2, 2.12, 2.25, 2.37, 2.5, 2.62, 2.75, 2.87, 3, 3.2, 3.4, 3.6, 3.8, 4, 4.3, 4.7, 4.9, 5, 5.5, 6, 6.5, 6.8, 7, 7.3, 7.5, 7.8, 8, 8.4, 8.7, 9, 9.4, 9.6, 9.8, 10], a.IDENTITY_MATRIX = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], a.LENGTH = a.IDENTITY_MATRIX.length, b.setColor = function (a, b, c, d) { return this.reset().adjustColor(a, b, c, d) }, b.reset = function () { return this.copy(a.IDENTITY_MATRIX) }, b.adjustColor = function (a, b, c, d) { return this.adjustHue(d), this.adjustContrast(b), this.adjustBrightness(a), this.adjustSaturation(c) }, b.adjustBrightness = function (a) { return 0 == a || isNaN(a) ? this : (a = this._cleanValue(a, 255), this._multiplyMatrix([1, 0, 0, 0, a, 0, 1, 0, 0, a, 0, 0, 1, 0, a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this) }, b.adjustContrast = function (b) { if (0 == b || isNaN(b)) return this; b = this._cleanValue(b, 100); var c; return 0 > b ? c = 127 + b / 100 * 127 : (c = b % 1, c = 0 == c ? a.DELTA_INDEX[b] : a.DELTA_INDEX[b << 0] * (1 - c) + a.DELTA_INDEX[(b << 0) + 1] * c, c = 127 * c + 127), this._multiplyMatrix([c / 127, 0, 0, 0, .5 * (127 - c), 0, c / 127, 0, 0, .5 * (127 - c), 0, 0, c / 127, 0, .5 * (127 - c), 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this }, b.adjustSaturation = function (a) { if (0 == a || isNaN(a)) return this; a = this._cleanValue(a, 100); var b = 1 + (a > 0 ? 3 * a / 100 : a / 100), c = .3086, d = .6094, e = .082; return this._multiplyMatrix([c * (1 - b) + b, d * (1 - b), e * (1 - b), 0, 0, c * (1 - b), d * (1 - b) + b, e * (1 - b), 0, 0, c * (1 - b), d * (1 - b), e * (1 - b) + b, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this }, b.adjustHue = function (a) { if (0 == a || isNaN(a)) return this; a = this._cleanValue(a, 180) / 180 * Math.PI; var b = Math.cos(a), c = Math.sin(a), d = .213, e = .715, f = .072; return this._multiplyMatrix([d + b * (1 - d) + c * -d, e + b * -e + c * -e, f + b * -f + c * (1 - f), 0, 0, d + b * -d + .143 * c, e + b * (1 - e) + .14 * c, f + b * -f + c * -.283, 0, 0, d + b * -d + c * -(1 - d), e + b * -e + c * e, f + b * (1 - f) + c * f, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this }, b.concat = function (b) { return b = this._fixMatrix(b), b.length != a.LENGTH ? this : (this._multiplyMatrix(b), this) }, b.clone = function () { return (new a).copy(this) }, b.toArray = function () { for (var b = [], c = 0, d = a.LENGTH; d > c; c++)b[c] = this[c]; return b }, b.copy = function (b) { for (var c = a.LENGTH, d = 0; c > d; d++)this[d] = b[d]; return this }, b.toString = function () { return "[ColorMatrix]" }, b._multiplyMatrix = function (a) { var b, c, d, e = []; for (b = 0; 5 > b; b++) { for (c = 0; 5 > c; c++)e[c] = this[c + 5 * b]; for (c = 0; 5 > c; c++) { var f = 0; for (d = 0; 5 > d; d++)f += a[c + 5 * d] * e[d]; this[c + 5 * b] = f } } }, b._cleanValue = function (a, b) { return Math.min(b, Math.max(-b, a)) }, b._fixMatrix = function (b) { return b instanceof a && (b = b.toArray()), b.length < a.LENGTH ? b = b.slice(0, b.length).concat(a.IDENTITY_MATRIX.slice(b.length, a.LENGTH)) : b.length > a.LENGTH && (b = b.slice(0, a.LENGTH)), b }, createjs.ColorMatrix = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.Filter_constructor(), this.matrix = a, this.FRAG_SHADER_BODY = "uniform mat4 uColorMatrix;uniform vec4 uColorMatrixOffset;void main(void) {vec4 color = texture2D(uSampler, vRenderCoord);mat4 m = uColorMatrix;vec4 newColor = vec4(0,0,0,0);newColor.r = color.r*m[0][0] + color.g*m[0][1] + color.b*m[0][2] + color.a*m[0][3];newColor.g = color.r*m[1][0] + color.g*m[1][1] + color.b*m[1][2] + color.a*m[1][3];newColor.b = color.r*m[2][0] + color.g*m[2][1] + color.b*m[2][2] + color.a*m[2][3];newColor.a = color.r*m[3][0] + color.g*m[3][1] + color.b*m[3][2] + color.a*m[3][3];gl_FragColor = newColor + uColorMatrixOffset;}" } var b = createjs.extend(a, createjs.Filter); b.shaderParamSetup = function (a, b, c) { var d = this.matrix, e = new Float32Array([d[0], d[1], d[2], d[3], d[5], d[6], d[7], d[8], d[10], d[11], d[12], d[13], d[15], d[16], d[17], d[18]]); a.uniformMatrix4fv(a.getUniformLocation(c, "uColorMatrix"), !1, e), a.uniform4f(a.getUniformLocation(c, "uColorMatrixOffset"), d[4] / 255, d[9] / 255, d[14] / 255, d[19] / 255) }, b.toString = function () { return "[ColorMatrixFilter]" }, b.clone = function () { return new a(this.matrix) }, b._applyFilter = function (a) { for (var b, c, d, e, f = a.data, g = f.length, h = this.matrix, i = h[0], j = h[1], k = h[2], l = h[3], m = h[4], n = h[5], o = h[6], p = h[7], q = h[8], r = h[9], s = h[10], t = h[11], u = h[12], v = h[13], w = h[14], x = h[15], y = h[16], z = h[17], A = h[18], B = h[19], C = 0; g > C; C += 4)b = f[C], c = f[C + 1], d = f[C + 2], e = f[C + 3], f[C] = b * i + c * j + d * k + e * l + m, f[C + 1] = b * n + c * o + d * p + e * q + r, f[C + 2] = b * s + c * t + d * u + e * v + w, f[C + 3] = b * x + c * y + d * z + e * A + B; return !0 }, createjs.ColorMatrixFilter = createjs.promote(a, "Filter") }(), window.createjs = window.createjs || {}, function () { "use strict"; function a() { throw "Touch cannot be instantiated" } a.isSupported = function () { return !!("ontouchstart" in window || window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 0 || window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 0) }, a.enable = function (b, c, d) { return b && b.canvas && a.isSupported() ? b.__touch ? !0 : (b.__touch = { pointers: {}, multitouch: !c, preventDefault: !d, count: 0 }, "ontouchstart" in window ? a._IOS_enable(b) : (window.navigator.msPointerEnabled || window.navigator.pointerEnabled) && a._IE_enable(b), !0) : !1 }, a.disable = function (b) { b && ("ontouchstart" in window ? a._IOS_disable(b) : (window.navigator.msPointerEnabled || window.navigator.pointerEnabled) && a._IE_disable(b), delete b.__touch) }, a._IOS_enable = function (b) { var c = b.canvas, d = b.__touch.f = function (c) { a._IOS_handleEvent(b, c) }; c.addEventListener("touchstart", d, !1), c.addEventListener("touchmove", d, !1), c.addEventListener("touchend", d, !1), c.addEventListener("touchcancel", d, !1) }, a._IOS_disable = function (a) { var b = a.canvas; if (b) { var c = a.__touch.f; b.removeEventListener("touchstart", c, !1), b.removeEventListener("touchmove", c, !1), b.removeEventListener("touchend", c, !1), b.removeEventListener("touchcancel", c, !1) } }, a._IOS_handleEvent = function (a, b) { if (a) { a.__touch.preventDefault && b.preventDefault && b.preventDefault(); for (var c = b.changedTouches, d = b.type, e = 0, f = c.length; f > e; e++) { var g = c[e], h = g.identifier; g.target == a.canvas && ("touchstart" == d ? this._handleStart(a, h, b, g.pageX, g.pageY) : "touchmove" == d ? this._handleMove(a, h, b, g.pageX, g.pageY) : ("touchend" == d || "touchcancel" == d) && this._handleEnd(a, h, b)) } } }, a._IE_enable = function (b) { var c = b.canvas, d = b.__touch.f = function (c) { a._IE_handleEvent(b, c) }; void 0 === window.navigator.pointerEnabled ? (c.addEventListener("MSPointerDown", d, !1), window.addEventListener("MSPointerMove", d, !1), window.addEventListener("MSPointerUp", d, !1), window.addEventListener("MSPointerCancel", d, !1), b.__touch.preventDefault && (c.style.msTouchAction = "none")) : (c.addEventListener("pointerdown", d, !1), window.addEventListener("pointermove", d, !1), window.addEventListener("pointerup", d, !1), window.addEventListener("pointercancel", d, !1), b.__touch.preventDefault && (c.style.touchAction = "none")), b.__touch.activeIDs = {} }, a._IE_disable = function (a) { var b = a.__touch.f; void 0 === window.navigator.pointerEnabled ? (window.removeEventListener("MSPointerMove", b, !1), window.removeEventListener("MSPointerUp", b, !1), window.removeEventListener("MSPointerCancel", b, !1), a.canvas && a.canvas.removeEventListener("MSPointerDown", b, !1)) : (window.removeEventListener("pointermove", b, !1), window.removeEventListener("pointerup", b, !1), window.removeEventListener("pointercancel", b, !1), a.canvas && a.canvas.removeEventListener("pointerdown", b, !1)) }, a._IE_handleEvent = function (a, b) { if (a) { a.__touch.preventDefault && b.preventDefault && b.preventDefault(); var c = b.type, d = b.pointerId, e = a.__touch.activeIDs; if ("MSPointerDown" == c || "pointerdown" == c) { if (b.srcElement != a.canvas) return; e[d] = !0, this._handleStart(a, d, b, b.pageX, b.pageY) } else e[d] && ("MSPointerMove" == c || "pointermove" == c ? this._handleMove(a, d, b, b.pageX, b.pageY) : ("MSPointerUp" == c || "MSPointerCancel" == c || "pointerup" == c || "pointercancel" == c) && (delete e[d], this._handleEnd(a, d, b))) } }, a._handleStart = function (a, b, c, d, e) { var f = a.__touch; if (f.multitouch || !f.count) { var g = f.pointers; g[b] || (g[b] = !0, f.count++, a._handlePointerDown(b, c, d, e)) } }, a._handleMove = function (a, b, c, d, e) { a.__touch.pointers[b] && a._handlePointerMove(b, c, d, e) }, a._handleEnd = function (a, b, c) { var d = a.__touch, e = d.pointers; e[b] && (d.count--, a._handlePointerUp(b, c, !0), delete e[b]) }, createjs.Touch = a }(), window.createjs = window.createjs || {}, function () { "use strict"; var a = createjs.EaselJS = createjs.EaselJS || {}; a.version = "1.0.0", a.buildDate = "Thu, 14 Sep 2017 19:47:53 GMT" }(); module.exports = window.createjs; \ No newline at end of file diff --git a/src/utils/plugins/preloadjs-1.0.0.min.js b/src/utils/plugins/preloadjs-1.0.0.min.js new file mode 100644 index 0000000..2f45433 --- /dev/null +++ b/src/utils/plugins/preloadjs-1.0.0.min.js @@ -0,0 +1,23 @@ +/*! +* @license PreloadJS +* Visit http://createjs.com/ for documentation, updates and examples. +* +* Copyright (c) 2011-2015 gskinner.com, inc. +* +* Distributed under the terms of the MIT license. +* http://www.opensource.org/licenses/mit-license.html +* +* This notice shall be included in all copies or substantial portions of the Software. +*/ +window.createjs = window.createjs || {}, function () { "use strict"; var a = createjs.PreloadJS = createjs.PreloadJS || {}; a.version = "1.0.0", a.buildDate = "Thu, 14 Sep 2017 19:47:47 GMT" }(), window.createjs = window.createjs || {}, createjs.extend = function (a, b) { "use strict"; function c() { this.constructor = a } return c.prototype = b.prototype, a.prototype = new c }, window.createjs = window.createjs || {}, createjs.promote = function (a, b) { "use strict"; var c = a.prototype, d = Object.getPrototypeOf && Object.getPrototypeOf(c) || c.__proto__; if (d) { c[(b += "_") + "constructor"] = d.constructor; for (var e in d) c.hasOwnProperty(e) && "function" == typeof d[e] && (c[b + e] = d[e]) } return a }, window.createjs = window.createjs || {}, createjs.deprecate = function (a, b) { "use strict"; return function () { var c = "Deprecated property or method '" + b + "'. See docs for info."; return console && (console.warn ? console.warn(c) : console.log(c)), a && a.apply(this, arguments) } }, window.createjs = window.createjs || {}, function () { "use strict"; createjs.proxy = function (a, b) { var c = Array.prototype.slice.call(arguments, 2); return function () { return a.apply(b, Array.prototype.slice.call(arguments, 0).concat(c)) } } }(), window.createjs = window.createjs || {}, createjs.indexOf = function (a, b) { "use strict"; for (var c = 0, d = a.length; d > c; c++)if (b === a[c]) return c; return -1 }, window.createjs = window.createjs || {}, function () { "use strict"; function Event(a, b, c) { this.type = a, this.target = null, this.currentTarget = null, this.eventPhase = 0, this.bubbles = !!b, this.cancelable = !!c, this.timeStamp = (new Date).getTime(), this.defaultPrevented = !1, this.propagationStopped = !1, this.immediatePropagationStopped = !1, this.removed = !1 } var a = Event.prototype; a.preventDefault = function () { this.defaultPrevented = this.cancelable && !0 }, a.stopPropagation = function () { this.propagationStopped = !0 }, a.stopImmediatePropagation = function () { this.immediatePropagationStopped = this.propagationStopped = !0 }, a.remove = function () { this.removed = !0 }, a.clone = function () { return new Event(this.type, this.bubbles, this.cancelable) }, a.set = function (a) { for (var b in a) this[b] = a[b]; return this }, a.toString = function () { return "[Event (type=" + this.type + ")]" }, createjs.Event = Event }(), window.createjs = window.createjs || {}, function () { "use strict"; function ErrorEvent(a, b, c) { this.Event_constructor("error"), this.title = a, this.message = b, this.data = c } var a = createjs.extend(ErrorEvent, createjs.Event); a.clone = function () { return new createjs.ErrorEvent(this.title, this.message, this.data) }, createjs.ErrorEvent = createjs.promote(ErrorEvent, "Event") }(), window.createjs = window.createjs || {}, function () { "use strict"; function EventDispatcher() { this._listeners = null, this._captureListeners = null } var a = EventDispatcher.prototype; EventDispatcher.initialize = function (b) { b.addEventListener = a.addEventListener, b.on = a.on, b.removeEventListener = b.off = a.removeEventListener, b.removeAllEventListeners = a.removeAllEventListeners, b.hasEventListener = a.hasEventListener, b.dispatchEvent = a.dispatchEvent, b._dispatchEvent = a._dispatchEvent, b.willTrigger = a.willTrigger }, a.addEventListener = function (a, b, c) { var d; d = c ? this._captureListeners = this._captureListeners || {} : this._listeners = this._listeners || {}; var e = d[a]; return e && this.removeEventListener(a, b, c), e = d[a], e ? e.push(b) : d[a] = [b], b }, a.on = function (a, b, c, d, e, f) { return b.handleEvent && (c = c || b, b = b.handleEvent), c = c || this, this.addEventListener(a, function (a) { b.call(c, a, e), d && a.remove() }, f) }, a.removeEventListener = function (a, b, c) { var d = c ? this._captureListeners : this._listeners; if (d) { var e = d[a]; if (e) for (var f = 0, g = e.length; g > f; f++)if (e[f] == b) { 1 == g ? delete d[a] : e.splice(f, 1); break } } }, a.off = a.removeEventListener, a.removeAllEventListeners = function (a) { a ? (this._listeners && delete this._listeners[a], this._captureListeners && delete this._captureListeners[a]) : this._listeners = this._captureListeners = null }, a.dispatchEvent = function (a, b, c) { if ("string" == typeof a) { var d = this._listeners; if (!(b || d && d[a])) return !0; a = new createjs.Event(a, b, c) } else a.target && a.clone && (a = a.clone()); try { a.target = this } catch (e) { } if (a.bubbles && this.parent) { for (var f = this, g = [f]; f.parent;)g.push(f = f.parent); var h, i = g.length; for (h = i - 1; h >= 0 && !a.propagationStopped; h--)g[h]._dispatchEvent(a, 1 + (0 == h)); for (h = 1; i > h && !a.propagationStopped; h++)g[h]._dispatchEvent(a, 3) } else this._dispatchEvent(a, 2); return !a.defaultPrevented }, a.hasEventListener = function (a) { var b = this._listeners, c = this._captureListeners; return !!(b && b[a] || c && c[a]) }, a.willTrigger = function (a) { for (var b = this; b;) { if (b.hasEventListener(a)) return !0; b = b.parent } return !1 }, a.toString = function () { return "[EventDispatcher]" }, a._dispatchEvent = function (a, b) { var c, d, e = 2 >= b ? this._captureListeners : this._listeners; if (a && e && (d = e[a.type]) && (c = d.length)) { try { a.currentTarget = this } catch (f) { } try { a.eventPhase = 0 | b } catch (f) { } a.removed = !1, d = d.slice(); for (var g = 0; c > g && !a.immediatePropagationStopped; g++) { var h = d[g]; h.handleEvent ? h.handleEvent(a) : h(a), a.removed && (this.off(a.type, h, 1 == b), a.removed = !1) } } 2 === b && this._dispatchEvent(a, 2.1) }, createjs.EventDispatcher = EventDispatcher }(), window.createjs = window.createjs || {}, function () { "use strict"; function ProgressEvent(a, b) { this.Event_constructor("progress"), this.loaded = a, this.total = null == b ? 1 : b, this.progress = 0 == b ? 0 : this.loaded / this.total } var a = createjs.extend(ProgressEvent, createjs.Event); a.clone = function () { return new createjs.ProgressEvent(this.loaded, this.total) }, createjs.ProgressEvent = createjs.promote(ProgressEvent, "Event") }(window), function () { function a(b, d) { function f(a) { if (f[a] !== q) return f[a]; var b; if ("bug-string-char-index" == a) b = "a" != "a"[0]; else if ("json" == a) b = f("json-stringify") && f("json-parse"); else { var c, e = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'; if ("json-stringify" == a) { var i = d.stringify, k = "function" == typeof i && t; if (k) { (c = function () { return 1 }).toJSON = c; try { k = "0" === i(0) && "0" === i(new g) && '""' == i(new h) && i(s) === q && i(q) === q && i() === q && "1" === i(c) && "[1]" == i([c]) && "[null]" == i([q]) && "null" == i(null) && "[null,null,null]" == i([q, s, null]) && i({ a: [c, !0, !1, null, "\x00\b\n\f\r "] }) == e && "1" === i(null, c) && "[\n 1,\n 2\n]" == i([1, 2], null, 1) && '"-271821-04-20T00:00:00.000Z"' == i(new j(-864e13)) && '"+275760-09-13T00:00:00.000Z"' == i(new j(864e13)) && '"-000001-01-01T00:00:00.000Z"' == i(new j(-621987552e5)) && '"1969-12-31T23:59:59.999Z"' == i(new j(-1)) } catch (l) { k = !1 } } b = k } if ("json-parse" == a) { var m = d.parse; if ("function" == typeof m) try { if (0 === m("0") && !m(!1)) { c = m(e); var n = 5 == c.a.length && 1 === c.a[0]; if (n) { try { n = !m('" "') } catch (l) { } if (n) try { n = 1 !== m("01") } catch (l) { } if (n) try { n = 1 !== m("1.") } catch (l) { } } } } catch (l) { n = !1 } b = n } } return f[a] = !!b } b || (b = e.Object()), d || (d = e.Object()); var g = b.Number || e.Number, h = b.String || e.String, i = b.Object || e.Object, j = b.Date || e.Date, k = b.SyntaxError || e.SyntaxError, l = b.TypeError || e.TypeError, m = b.Math || e.Math, n = b.JSON || e.JSON; "object" == typeof n && n && (d.stringify = n.stringify, d.parse = n.parse); var o, p, q, r = i.prototype, s = r.toString, t = new j(-0xc782b5b800cec); try { t = -109252 == t.getUTCFullYear() && 0 === t.getUTCMonth() && 1 === t.getUTCDate() && 10 == t.getUTCHours() && 37 == t.getUTCMinutes() && 6 == t.getUTCSeconds() && 708 == t.getUTCMilliseconds() } catch (u) { } if (!f("json")) { var v = "[object Function]", w = "[object Date]", x = "[object Number]", y = "[object String]", z = "[object Array]", A = "[object Boolean]", B = f("bug-string-char-index"); if (!t) var C = m.floor, D = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], E = function (a, b) { return D[b] + 365 * (a - 1970) + C((a - 1969 + (b = +(b > 1))) / 4) - C((a - 1901 + b) / 100) + C((a - 1601 + b) / 400) }; if ((o = r.hasOwnProperty) || (o = function (a) { var b, c = {}; return (c.__proto__ = null, c.__proto__ = { toString: 1 }, c).toString != s ? o = function (a) { var b = this.__proto__, c = a in (this.__proto__ = null, this); return this.__proto__ = b, c } : (b = c.constructor, o = function (a) { var c = (this.constructor || b).prototype; return a in this && !(a in c && this[a] === c[a]) }), c = null, o.call(this, a) }), p = function (a, b) { var d, e, f, g = 0; (d = function () { this.valueOf = 0 }).prototype.valueOf = 0, e = new d; for (f in e) o.call(e, f) && g++; return d = e = null, g ? p = 2 == g ? function (a, b) { var c, d = {}, e = s.call(a) == v; for (c in a) e && "prototype" == c || o.call(d, c) || !(d[c] = 1) || !o.call(a, c) || b(c) } : function (a, b) { var c, d, e = s.call(a) == v; for (c in a) e && "prototype" == c || !o.call(a, c) || (d = "constructor" === c) || b(c); (d || o.call(a, c = "constructor")) && b(c) } : (e = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"], p = function (a, b) { var d, f, g = s.call(a) == v, h = !g && "function" != typeof a.constructor && c[typeof a.hasOwnProperty] && a.hasOwnProperty || o; for (d in a) g && "prototype" == d || !h.call(a, d) || b(d); for (f = e.length; d = e[--f]; h.call(a, d) && b(d)); }), p(a, b) }, !f("json-stringify")) { var F = { 92: "\\\\", 34: '\\"', 8: "\\b", 12: "\\f", 10: "\\n", 13: "\\r", 9: "\\t" }, G = "000000", H = function (a, b) { return (G + (b || 0)).slice(-a) }, I = "\\u00", J = function (a) { for (var b = '"', c = 0, d = a.length, e = !B || d > 10, f = e && (B ? a.split("") : a); d > c; c++) { var g = a.charCodeAt(c); switch (g) { case 8: case 9: case 10: case 12: case 13: case 34: case 92: b += F[g]; break; default: if (32 > g) { b += I + H(2, g.toString(16)); break } b += e ? f[c] : a.charAt(c) } } return b + '"' }, K = function (a, b, c, d, e, f, g) { var h, i, j, k, m, n, r, t, u, v, B, D, F, G, I, L; try { h = b[a] } catch (M) { } if ("object" == typeof h && h) if (i = s.call(h), i != w || o.call(h, "toJSON")) "function" == typeof h.toJSON && (i != x && i != y && i != z || o.call(h, "toJSON")) && (h = h.toJSON(a)); else if (h > -1 / 0 && 1 / 0 > h) { if (E) { for (m = C(h / 864e5), j = C(m / 365.2425) + 1970 - 1; E(j + 1, 0) <= m; j++); for (k = C((m - E(j, 0)) / 30.42); E(j, k + 1) <= m; k++); m = 1 + m - E(j, k), n = (h % 864e5 + 864e5) % 864e5, r = C(n / 36e5) % 24, t = C(n / 6e4) % 60, u = C(n / 1e3) % 60, v = n % 1e3 } else j = h.getUTCFullYear(), k = h.getUTCMonth(), m = h.getUTCDate(), r = h.getUTCHours(), t = h.getUTCMinutes(), u = h.getUTCSeconds(), v = h.getUTCMilliseconds(); h = (0 >= j || j >= 1e4 ? (0 > j ? "-" : "+") + H(6, 0 > j ? -j : j) : H(4, j)) + "-" + H(2, k + 1) + "-" + H(2, m) + "T" + H(2, r) + ":" + H(2, t) + ":" + H(2, u) + "." + H(3, v) + "Z" } else h = null; if (c && (h = c.call(b, a, h)), null === h) return "null"; if (i = s.call(h), i == A) return "" + h; if (i == x) return h > -1 / 0 && 1 / 0 > h ? "" + h : "null"; if (i == y) return J("" + h); if ("object" == typeof h) { for (G = g.length; G--;)if (g[G] === h) throw l(); if (g.push(h), B = [], I = f, f += e, i == z) { for (F = 0, G = h.length; G > F; F++)D = K(F, h, c, d, e, f, g), B.push(D === q ? "null" : D); L = B.length ? e ? "[\n" + f + B.join(",\n" + f) + "\n" + I + "]" : "[" + B.join(",") + "]" : "[]" } else p(d || h, function (a) { var b = K(a, h, c, d, e, f, g); b !== q && B.push(J(a) + ":" + (e ? " " : "") + b) }), L = B.length ? e ? "{\n" + f + B.join(",\n" + f) + "\n" + I + "}" : "{" + B.join(",") + "}" : "{}"; return g.pop(), L } }; d.stringify = function (a, b, d) { var e, f, g, h; if (c[typeof b] && b) if ((h = s.call(b)) == v) f = b; else if (h == z) { g = {}; for (var i, j = 0, k = b.length; k > j; i = b[j++], h = s.call(i), (h == y || h == x) && (g[i] = 1)); } if (d) if ((h = s.call(d)) == x) { if ((d -= d % 1) > 0) for (e = "", d > 10 && (d = 10); e.length < d; e += " "); } else h == y && (e = d.length <= 10 ? d : d.slice(0, 10)); return K("", (i = {}, i[""] = a, i), f, g, e, "", []) } } if (!f("json-parse")) { var L, M, N = h.fromCharCode, O = { 92: "\\", 34: '"', 47: "/", 98: "\b", 116: " ", 110: "\n", 102: "\f", 114: "\r" }, P = function () { throw L = M = null, k() }, Q = function () { for (var a, b, c, d, e, f = M, g = f.length; g > L;)switch (e = f.charCodeAt(L)) { case 9: case 10: case 13: case 32: L++; break; case 123: case 125: case 91: case 93: case 58: case 44: return a = B ? f.charAt(L) : f[L], L++, a; case 34: for (a = "@", L++; g > L;)if (e = f.charCodeAt(L), 32 > e) P(); else if (92 == e) switch (e = f.charCodeAt(++L)) { case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114: a += O[e], L++; break; case 117: for (b = ++L, c = L + 4; c > L; L++)e = f.charCodeAt(L), e >= 48 && 57 >= e || e >= 97 && 102 >= e || e >= 65 && 70 >= e || P(); a += N("0x" + f.slice(b, L)); break; default: P() } else { if (34 == e) break; for (e = f.charCodeAt(L), b = L; e >= 32 && 92 != e && 34 != e;)e = f.charCodeAt(++L); a += f.slice(b, L) } if (34 == f.charCodeAt(L)) return L++, a; P(); default: if (b = L, 45 == e && (d = !0, e = f.charCodeAt(++L)), e >= 48 && 57 >= e) { for (48 == e && (e = f.charCodeAt(L + 1), e >= 48 && 57 >= e) && P(), d = !1; g > L && (e = f.charCodeAt(L), e >= 48 && 57 >= e); L++); if (46 == f.charCodeAt(L)) { for (c = ++L; g > c && (e = f.charCodeAt(c), e >= 48 && 57 >= e); c++); c == L && P(), L = c } if (e = f.charCodeAt(L), 101 == e || 69 == e) { for (e = f.charCodeAt(++L), (43 == e || 45 == e) && L++, c = L; g > c && (e = f.charCodeAt(c), e >= 48 && 57 >= e); c++); c == L && P(), L = c } return +f.slice(b, L) } if (d && P(), "true" == f.slice(L, L + 4)) return L += 4, !0; if ("false" == f.slice(L, L + 5)) return L += 5, !1; if ("null" == f.slice(L, L + 4)) return L += 4, null; P() }return "$" }, R = function (a) { var b, c; if ("$" == a && P(), "string" == typeof a) { if ("@" == (B ? a.charAt(0) : a[0])) return a.slice(1); if ("[" == a) { for (b = []; a = Q(), "]" != a; c || (c = !0))c && ("," == a ? (a = Q(), "]" == a && P()) : P()), "," == a && P(), b.push(R(a)); return b } if ("{" == a) { for (b = {}; a = Q(), "}" != a; c || (c = !0))c && ("," == a ? (a = Q(), "}" == a && P()) : P()), ("," == a || "string" != typeof a || "@" != (B ? a.charAt(0) : a[0]) || ":" != Q()) && P(), b[a.slice(1)] = R(Q()); return b } P() } return a }, S = function (a, b, c) { var d = T(a, b, c); d === q ? delete a[b] : a[b] = d }, T = function (a, b, c) { var d, e = a[b]; if ("object" == typeof e && e) if (s.call(e) == z) for (d = e.length; d--;)S(e, d, c); else p(e, function (a) { S(e, a, c) }); return c.call(a, b, e) }; d.parse = function (a, b) { var c, d; return L = 0, M = "" + a, c = R(Q()), "$" != Q() && P(), L = M = null, b && s.call(b) == v ? T((d = {}, d[""] = c, d), "", b) : c } } } return d.runInContext = a, d } var b = "function" == typeof define && define.amd, c = { "function": !0, object: !0 }, d = c[typeof exports] && exports && !exports.nodeType && exports, e = c[typeof window] && window || this, f = d && c[typeof module] && module && !module.nodeType && "object" == typeof global && global; if (!f || f.global !== f && f.window !== f && f.self !== f || (e = f), d && !b) a(e, d); else { var g = e.JSON, h = e.JSON3, i = !1, j = a(e, e.JSON3 = { noConflict: function () { return i || (i = !0, e.JSON = g, e.JSON3 = h, g = h = null), j } }); e.JSON = { parse: j.parse, stringify: j.stringify } } b && define(function () { return j }) }.call(this), function () { var a = {}; a.a = function () { return a.el("a") }, a.svg = function () { return a.el("svg") }, a.object = function () { return a.el("object") }, a.image = function () { return a.el("image") }, a.img = function () { return a.el("img") }, a.style = function () { return a.el("style") }, a.link = function () { return a.el("link") }, a.script = function () { return a.el("script") }, a.audio = function () { return a.el("audio") }, a.video = function () { return a.el("video") }, a.text = function (a) { return document.createTextNode(a) }, a.el = function (a) { return document.createElement(a) }, createjs.Elements = a }(), function () { var a = {}; a.ABSOLUTE_PATT = /^(?:\w+:)?\/{2}/i, a.RELATIVE_PATT = /^[.\/]*?\//i, a.EXTENSION_PATT = /\/?[^\/]+\.(\w{1,5})$/i, a.parseURI = function (b) { var c = { absolute: !1, relative: !1, protocol: null, hostname: null, port: null, pathname: null, search: null, hash: null, host: null }; if (null == b) return c; var d = createjs.Elements.a(); d.href = b; for (var e in c) e in d && (c[e] = d[e]); var f = b.indexOf("?"); f > -1 && (b = b.substr(0, f)); var g; return a.ABSOLUTE_PATT.test(b) ? c.absolute = !0 : a.RELATIVE_PATT.test(b) && (c.relative = !0), (g = b.match(a.EXTENSION_PATT)) && (c.extension = g[1].toLowerCase()), c }, a.formatQueryString = function (a, b) { if (null == a) throw new Error("You must specify data."); var c = []; for (var d in a) c.push(d + "=" + escape(a[d])); return b && (c = c.concat(b)), c.join("&") }, a.buildURI = function (a, b) { if (null == b) return a; var c = [], d = a.indexOf("?"); if (-1 != d) { var e = a.slice(d + 1); c = c.concat(e.split("&")) } return -1 != d ? a.slice(0, d) + "?" + this.formatQueryString(b, c) : a + "?" + this.formatQueryString(b, c) }, a.isCrossDomain = function (a) { var b = createjs.Elements.a(); b.href = a.src; var c = createjs.Elements.a(); c.href = location.href; var d = "" != b.hostname && (b.port != c.port || b.protocol != c.protocol || b.hostname != c.hostname); return d }, a.isLocal = function (a) { var b = createjs.Elements.a(); return b.href = a.src, "" == b.hostname && "file:" == b.protocol }, createjs.URLUtils = a }(), function () { var a = { container: null }; a.appendToHead = function (b) { a.getHead().appendChild(b) }, a.appendToBody = function (b) { if (null == a.container) { a.container = document.createElement("div"), a.container.id = "preloadjs-container"; var c = a.container.style; c.visibility = "hidden", c.position = "absolute", c.width = a.container.style.height = "10px", c.overflow = "hidden", c.transform = c.msTransform = c.webkitTransform = c.oTransform = "translate(-10px, -10px)", a.getBody().appendChild(a.container) } a.container.appendChild(b) }, a.getHead = function () { return document.head || document.getElementsByTagName("head")[0] }, a.getBody = function () { return document.body || document.getElementsByTagName("body")[0] }, a.removeChild = function (a) { a.parent && a.parent.removeChild(a) }, a.isImageTag = function (a) { return a instanceof HTMLImageElement }, a.isAudioTag = function (a) { return window.HTMLAudioElement ? a instanceof HTMLAudioElement : !1 }, a.isVideoTag = function (a) { return window.HTMLVideoElement ? a instanceof HTMLVideoElement : !1 }, createjs.DomUtils = a }(), function () { var a = {}; a.parseXML = function (a) { var b = null; try { if (window.DOMParser) { var c = new DOMParser; b = c.parseFromString(a, "text/xml") } } catch (d) { } if (!b) try { b = new ActiveXObject("Microsoft.XMLDOM"), b.async = !1, b.loadXML(a) } catch (d) { b = null } return b }, a.parseJSON = function (a) { if (null == a) return null; try { return JSON.parse(a) } catch (b) { throw b } }, createjs.DataUtils = a }(), window.createjs = window.createjs || {}, function () { var a = {}; a.BINARY = "binary", a.CSS = "css", a.FONT = "font", a.FONTCSS = "fontcss", a.IMAGE = "image", a.JAVASCRIPT = "javascript", a.JSON = "json", a.JSONP = "jsonp", a.MANIFEST = "manifest", a.SOUND = "sound", a.VIDEO = "video", a.SPRITESHEET = "spritesheet", a.SVG = "svg", a.TEXT = "text", a.XML = "xml", createjs.Types = a }(), window.createjs = window.createjs || {}, function () { var a = {}; a.POST = "POST", a.GET = "GET", createjs.Methods = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function LoadItem() { this.src = null, this.type = null, this.id = null, this.maintainOrder = !1, this.callback = null, this.data = null, this.method = createjs.Methods.GET, this.values = null, this.headers = null, this.withCredentials = !1, this.mimeType = null, this.crossOrigin = null, this.loadTimeout = b.LOAD_TIMEOUT_DEFAULT } var a = LoadItem.prototype = {}, b = LoadItem; b.LOAD_TIMEOUT_DEFAULT = 8e3, b.create = function (a) { if ("string" == typeof a) { var c = new LoadItem; return c.src = a, c } if (a instanceof b) return a; if (a instanceof Object && a.src) return null == a.loadTimeout && (a.loadTimeout = b.LOAD_TIMEOUT_DEFAULT), a; throw new Error("Type not recognized.") }, a.set = function (a) { for (var b in a) this[b] = a[b]; return this }, createjs.LoadItem = b }(), function () { var a = {}; a.isBinary = function (a) { switch (a) { case createjs.Types.IMAGE: case createjs.Types.BINARY: return !0; default: return !1 } }, a.isText = function (a) { switch (a) { case createjs.Types.TEXT: case createjs.Types.JSON: case createjs.Types.MANIFEST: case createjs.Types.XML: case createjs.Types.CSS: case createjs.Types.SVG: case createjs.Types.JAVASCRIPT: case createjs.Types.SPRITESHEET: return !0; default: return !1 } }, a.getTypeByExtension = function (a) { if (null == a) return createjs.Types.TEXT; switch (a.toLowerCase()) { case "jpeg": case "jpg": case "gif": case "png": case "webp": case "bmp": return createjs.Types.IMAGE; case "ogg": case "mp3": case "webm": return createjs.Types.SOUND; case "mp4": case "webm": case "ts": return createjs.Types.VIDEO; case "json": return createjs.Types.JSON; case "xml": return createjs.Types.XML; case "css": return createjs.Types.CSS; case "js": return createjs.Types.JAVASCRIPT; case "svg": return createjs.Types.SVG; default: return createjs.Types.TEXT } }, createjs.RequestUtils = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function AbstractLoader(a, b, c) { this.EventDispatcher_constructor(), this.loaded = !1, this.canceled = !1, this.progress = 0, this.type = c, this.resultFormatter = null, this._item = a ? createjs.LoadItem.create(a) : null, this._preferXHR = b, this._result = null, this._rawResult = null, this._loadedItems = null, this._tagSrcAttribute = null, this._tag = null } var a = createjs.extend(AbstractLoader, createjs.EventDispatcher), b = AbstractLoader; try { Object.defineProperties(b, { POST: { get: createjs.deprecate(function () { return createjs.Methods.POST }, "AbstractLoader.POST") }, GET: { get: createjs.deprecate(function () { return createjs.Methods.GET }, "AbstractLoader.GET") }, BINARY: { get: createjs.deprecate(function () { return createjs.Types.BINARY }, "AbstractLoader.BINARY") }, CSS: { get: createjs.deprecate(function () { return createjs.Types.CSS }, "AbstractLoader.CSS") }, FONT: { get: createjs.deprecate(function () { return createjs.Types.FONT }, "AbstractLoader.FONT") }, FONTCSS: { get: createjs.deprecate(function () { return createjs.Types.FONTCSS }, "AbstractLoader.FONTCSS") }, IMAGE: { get: createjs.deprecate(function () { return createjs.Types.IMAGE }, "AbstractLoader.IMAGE") }, JAVASCRIPT: { get: createjs.deprecate(function () { return createjs.Types.JAVASCRIPT }, "AbstractLoader.JAVASCRIPT") }, JSON: { get: createjs.deprecate(function () { return createjs.Types.JSON }, "AbstractLoader.JSON") }, JSONP: { get: createjs.deprecate(function () { return createjs.Types.JSONP }, "AbstractLoader.JSONP") }, MANIFEST: { get: createjs.deprecate(function () { return createjs.Types.MANIFEST }, "AbstractLoader.MANIFEST") }, SOUND: { get: createjs.deprecate(function () { return createjs.Types.SOUND }, "AbstractLoader.SOUND") }, VIDEO: { get: createjs.deprecate(function () { return createjs.Types.VIDEO }, "AbstractLoader.VIDEO") }, SPRITESHEET: { get: createjs.deprecate(function () { return createjs.Types.SPRITESHEET }, "AbstractLoader.SPRITESHEET") }, SVG: { get: createjs.deprecate(function () { return createjs.Types.SVG }, "AbstractLoader.SVG") }, TEXT: { get: createjs.deprecate(function () { return createjs.Types.TEXT }, "AbstractLoader.TEXT") }, XML: { get: createjs.deprecate(function () { return createjs.Types.XML }, "AbstractLoader.XML") } }) } catch (c) { } a.getItem = function () { return this._item }, a.getResult = function (a) { return a ? this._rawResult : this._result }, a.getTag = function () { return this._tag }, a.setTag = function (a) { this._tag = a }, a.load = function () { this._createRequest(), this._request.on("complete", this, this), this._request.on("progress", this, this), this._request.on("loadStart", this, this), this._request.on("abort", this, this), this._request.on("timeout", this, this), this._request.on("error", this, this); var a = new createjs.Event("initialize"); a.loader = this._request, this.dispatchEvent(a), this._request.load() }, a.cancel = function () { this.canceled = !0, this.destroy() }, a.destroy = function () { this._request && (this._request.removeAllEventListeners(), this._request.destroy()), this._request = null, this._item = null, this._rawResult = null, this._result = null, this._loadItems = null, this.removeAllEventListeners() }, a.getLoadedItems = function () { return this._loadedItems }, a._createRequest = function () { this._request = this._preferXHR ? new createjs.XHRRequest(this._item) : new createjs.TagRequest(this._item, this._tag || this._createTag(), this._tagSrcAttribute) }, a._createTag = function () { return null }, a._sendLoadStart = function () { this._isCanceled() || this.dispatchEvent("loadstart") }, a._sendProgress = function (a) { if (!this._isCanceled()) { var b = null; "number" == typeof a ? (this.progress = a, b = new createjs.ProgressEvent(this.progress)) : (b = a, this.progress = a.loaded / a.total, b.progress = this.progress, (isNaN(this.progress) || 1 / 0 == this.progress) && (this.progress = 0)), this.hasEventListener("progress") && this.dispatchEvent(b) } }, a._sendComplete = function () { if (!this._isCanceled()) { this.loaded = !0; var a = new createjs.Event("complete"); a.rawResult = this._rawResult, null != this._result && (a.result = this._result), this.dispatchEvent(a) } }, a._sendError = function (a) { !this._isCanceled() && this.hasEventListener("error") && (null == a && (a = new createjs.ErrorEvent("PRELOAD_ERROR_EMPTY")), this.dispatchEvent(a)) }, a._isCanceled = function () { return null == window.createjs || this.canceled ? !0 : !1 }, a.resultFormatter = null, a.handleEvent = function (a) { switch (a.type) { case "complete": this._rawResult = a.target._response; var b = this.resultFormatter && this.resultFormatter(this); b instanceof Function ? b.call(this, createjs.proxy(this._resultFormatSuccess, this), createjs.proxy(this._resultFormatFailed, this)) : (this._result = b || this._rawResult, this._sendComplete()); break; case "progress": this._sendProgress(a); break; case "error": this._sendError(a); break; case "loadstart": this._sendLoadStart(); break; case "abort": case "timeout": this._isCanceled() || this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_" + a.type.toUpperCase() + "_ERROR")) } }, a._resultFormatSuccess = function (a) { this._result = a, this._sendComplete() }, a._resultFormatFailed = function (a) { this._sendError(a) }, a.toString = function () { return "[PreloadJS AbstractLoader]" }, createjs.AbstractLoader = createjs.promote(AbstractLoader, "EventDispatcher") }(), window.createjs = window.createjs || {}, function () { "use strict"; function AbstractMediaLoader(a, b, c) { this.AbstractLoader_constructor(a, b, c), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "src", this.on("initialize", this._updateXHR, this) } var a = createjs.extend(AbstractMediaLoader, createjs.AbstractLoader); a.load = function () { this._tag || (this._tag = this._createTag(this._item.src)), this._tag.preload = "auto", this._tag.load(), this.AbstractLoader_load() }, a._createTag = function () { }, a._createRequest = function () { this._request = this._preferXHR ? new createjs.XHRRequest(this._item) : new createjs.MediaTagRequest(this._item, this._tag || this._createTag(), this._tagSrcAttribute) }, a._updateXHR = function (a) { a.loader.setResponseType && a.loader.setResponseType("blob") }, a._formatResult = function (a) { if (this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler), this._tag.onstalled = null, this._preferXHR) { var b = window.URL || window.webkitURL, c = a.getResult(!0); a.getTag().src = b.createObjectURL(c) } return a.getTag() }, createjs.AbstractMediaLoader = createjs.promote(AbstractMediaLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; var AbstractRequest = function (a) { this._item = a }, a = createjs.extend(AbstractRequest, createjs.EventDispatcher); a.load = function () { }, a.destroy = function () { }, a.cancel = function () { }, createjs.AbstractRequest = createjs.promote(AbstractRequest, "EventDispatcher") }(), window.createjs = window.createjs || {}, function () { "use strict"; function TagRequest(a, b, c) { this.AbstractRequest_constructor(a), this._tag = b, this._tagSrcAttribute = c, this._loadedHandler = createjs.proxy(this._handleTagComplete, this), this._addedToDOM = !1 } var a = createjs.extend(TagRequest, createjs.AbstractRequest); a.load = function () { this._tag.onload = createjs.proxy(this._handleTagComplete, this), this._tag.onreadystatechange = createjs.proxy(this._handleReadyStateChange, this), this._tag.onerror = createjs.proxy(this._handleError, this); var a = new createjs.Event("initialize"); a.loader = this._tag, this.dispatchEvent(a), this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout), this._tag[this._tagSrcAttribute] = this._item.src, null == this._tag.parentNode && (createjs.DomUtils.appendToBody(this._tag), this._addedToDOM = !0) }, a.destroy = function () { this._clean(), this._tag = null, this.AbstractRequest_destroy() }, a._handleReadyStateChange = function () { clearTimeout(this._loadTimeout); var a = this._tag; ("loaded" == a.readyState || "complete" == a.readyState) && this._handleTagComplete() }, a._handleError = function () { this._clean(), this.dispatchEvent("error") }, a._handleTagComplete = function () { this._rawResult = this._tag, this._result = this.resultFormatter && this.resultFormatter(this) || this._rawResult, this._clean(), this.dispatchEvent("complete") }, a._handleTimeout = function () { this._clean(), this.dispatchEvent(new createjs.Event("timeout")) }, a._clean = function () { this._tag.onload = null, this._tag.onreadystatechange = null, this._tag.onerror = null, this._addedToDOM && null != this._tag.parentNode && this._tag.parentNode.removeChild(this._tag), clearTimeout(this._loadTimeout) }, a._handleStalled = function () { }, createjs.TagRequest = createjs.promote(TagRequest, "AbstractRequest") }(), window.createjs = window.createjs || {}, function () { "use strict"; function MediaTagRequest(a, b, c) { this.AbstractRequest_constructor(a), this._tag = b, this._tagSrcAttribute = c, this._loadedHandler = createjs.proxy(this._handleTagComplete, this) } var a = createjs.extend(MediaTagRequest, createjs.TagRequest); a.load = function () { var a = createjs.proxy(this._handleStalled, this); this._stalledCallback = a; var b = createjs.proxy(this._handleProgress, this); this._handleProgress = b, this._tag.addEventListener("stalled", a), this._tag.addEventListener("progress", b), this._tag.addEventListener && this._tag.addEventListener("canplaythrough", this._loadedHandler, !1), this.TagRequest_load() }, a._handleReadyStateChange = function () { clearTimeout(this._loadTimeout); var a = this._tag; ("loaded" == a.readyState || "complete" == a.readyState) && this._handleTagComplete() }, a._handleStalled = function () { }, a._handleProgress = function (a) { if (a && !(a.loaded > 0 && 0 == a.total)) { var b = new createjs.ProgressEvent(a.loaded, a.total); this.dispatchEvent(b) } }, a._clean = function () { this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler), this._tag.removeEventListener("stalled", this._stalledCallback), this._tag.removeEventListener("progress", this._progressCallback), this.TagRequest__clean() }, createjs.MediaTagRequest = createjs.promote(MediaTagRequest, "TagRequest") }(), window.createjs = window.createjs || {}, function () { + "use strict"; function XHRRequest(a) { this.AbstractRequest_constructor(a), this._request = null, this._loadTimeout = null, this._xhrLevel = 1, this._response = null, this._rawResponse = null, this._canceled = !1, this._handleLoadStartProxy = createjs.proxy(this._handleLoadStart, this), this._handleProgressProxy = createjs.proxy(this._handleProgress, this), this._handleAbortProxy = createjs.proxy(this._handleAbort, this), this._handleErrorProxy = createjs.proxy(this._handleError, this), this._handleTimeoutProxy = createjs.proxy(this._handleTimeout, this), this._handleLoadProxy = createjs.proxy(this._handleLoad, this), this._handleReadyStateChangeProxy = createjs.proxy(this._handleReadyStateChange, this), !this._createXHR(a) } var a = createjs.extend(XHRRequest, createjs.AbstractRequest); XHRRequest.ACTIVEX_VERSIONS = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], a.getResult = function (a) { return a && this._rawResponse ? this._rawResponse : this._response }, a.cancel = function () { this.canceled = !0, this._clean(), this._request.abort() }, a.load = function () { if (null == this._request) return void this._handleError(); null != this._request.addEventListener ? (this._request.addEventListener("loadstart", this._handleLoadStartProxy, !1), this._request.addEventListener("progress", this._handleProgressProxy, !1), this._request.addEventListener("abort", this._handleAbortProxy, !1), this._request.addEventListener("error", this._handleErrorProxy, !1), this._request.addEventListener("timeout", this._handleTimeoutProxy, !1), this._request.addEventListener("load", this._handleLoadProxy, !1), this._request.addEventListener("readystatechange", this._handleReadyStateChangeProxy, !1)) : (this._request.onloadstart = this._handleLoadStartProxy, this._request.onprogress = this._handleProgressProxy, this._request.onabort = this._handleAbortProxy, this._request.onerror = this._handleErrorProxy, this._request.ontimeout = this._handleTimeoutProxy, this._request.onload = this._handleLoadProxy, this._request.onreadystatechange = this._handleReadyStateChangeProxy), 1 == this._xhrLevel && (this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout)); try { this._item.values ? this._request.send(createjs.URLUtils.formatQueryString(this._item.values)) : this._request.send() } catch (a) { this.dispatchEvent(new createjs.ErrorEvent("XHR_SEND", null, a)) } }, a.setResponseType = function (a) { "blob" === a && (a = window.URL ? "blob" : "arraybuffer", this._responseType = a), this._request.responseType = a }, a.getAllResponseHeaders = function () { return this._request.getAllResponseHeaders instanceof Function ? this._request.getAllResponseHeaders() : null }, a.getResponseHeader = function (a) { return this._request.getResponseHeader instanceof Function ? this._request.getResponseHeader(a) : null }, a._handleProgress = function (a) { if (a && !(a.loaded > 0 && 0 == a.total)) { var b = new createjs.ProgressEvent(a.loaded, a.total); this.dispatchEvent(b) } }, a._handleLoadStart = function () { clearTimeout(this._loadTimeout), this.dispatchEvent("loadstart") }, a._handleAbort = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent("XHR_ABORTED", null, a)) }, a._handleError = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent(a.message)) }, a._handleReadyStateChange = function () { 4 == this._request.readyState && this._handleLoad() }, a._handleLoad = function () { if (!this.loaded) { this.loaded = !0; var a = this._checkError(); if (a) return void this._handleError(a); if (this._response = this._getResponse(), "arraybuffer" === this._responseType) try { this._response = new Blob([this._response]) } catch (b) { if (window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, "TypeError" === b.name && window.BlobBuilder) { var c = new BlobBuilder; c.append(this._response), this._response = c.getBlob() } } this._clean(), this.dispatchEvent(new createjs.Event("complete")) } }, a._handleTimeout = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_TIMEOUT", null, a)) }, a._checkError = function () { var a = parseInt(this._request.status); return a >= 400 && 599 >= a ? new Error(a) : 0 == a && /^https?:/.test(location.protocol) ? new Error(0) : null }, a._getResponse = function () { + if (null != this._response) return this._response; + if (null != this._request.response) return this._request.response; try { if (null != this._request.responseText) return this._request.responseText } catch (a) { } try { if (null != this._request.responseXML) return this._request.responseXML } catch (a) { } return null + }, a._createXHR = function (a) { var b = createjs.URLUtils.isCrossDomain(a), c = {}, d = null; if (window.XMLHttpRequest) d = new XMLHttpRequest, b && void 0 === d.withCredentials && window.XDomainRequest && (d = new XDomainRequest); else { for (var e = 0, f = s.ACTIVEX_VERSIONS.length; f > e; e++) { var g = s.ACTIVEX_VERSIONS[e]; try { d = new ActiveXObject(g); break } catch (h) { } } if (null == d) return !1 } null == a.mimeType && createjs.RequestUtils.isText(a.type) && (a.mimeType = "text/plain; charset=utf-8"), a.mimeType && d.overrideMimeType && d.overrideMimeType(a.mimeType), this._xhrLevel = "string" == typeof d.responseType ? 2 : 1; var i = null; if (i = a.method == createjs.Methods.GET ? createjs.URLUtils.buildURI(a.src, a.values) : a.src, d.open(a.method || createjs.Methods.GET, i, !0), b && d instanceof XMLHttpRequest && 1 == this._xhrLevel && (c.Origin = location.origin), a.values && a.method == createjs.Methods.POST && (c["Content-Type"] = "application/x-www-form-urlencoded"), b || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest"), a.headers) for (var j in a.headers) c[j] = a.headers[j]; for (j in c) d.setRequestHeader(j, c[j]); return d instanceof XMLHttpRequest && void 0 !== a.withCredentials && (d.withCredentials = a.withCredentials), this._request = d, !0 }, a._clean = function () { clearTimeout(this._loadTimeout), null != this._request.removeEventListener ? (this._request.removeEventListener("loadstart", this._handleLoadStartProxy), this._request.removeEventListener("progress", this._handleProgressProxy), this._request.removeEventListener("abort", this._handleAbortProxy), this._request.removeEventListener("error", this._handleErrorProxy), this._request.removeEventListener("timeout", this._handleTimeoutProxy), this._request.removeEventListener("load", this._handleLoadProxy), this._request.removeEventListener("readystatechange", this._handleReadyStateChangeProxy)) : (this._request.onloadstart = null, this._request.onprogress = null, this._request.onabort = null, this._request.onerror = null, this._request.ontimeout = null, this._request.onload = null, this._request.onreadystatechange = null) }, a.toString = function () { return "[PreloadJS XHRRequest]" }, createjs.XHRRequest = createjs.promote(XHRRequest, "AbstractRequest") +}(), window.createjs = window.createjs || {}, function () { "use strict"; function LoadQueue(a, b, c) { this.AbstractLoader_constructor(), this._plugins = [], this._typeCallbacks = {}, this._extensionCallbacks = {}, this.next = null, this.maintainScriptOrder = !0, this.stopOnError = !1, this._maxConnections = 1, this._availableLoaders = [createjs.FontLoader, createjs.ImageLoader, createjs.JavaScriptLoader, createjs.CSSLoader, createjs.JSONLoader, createjs.JSONPLoader, createjs.SoundLoader, createjs.ManifestLoader, createjs.SpriteSheetLoader, createjs.XMLLoader, createjs.SVGLoader, createjs.BinaryLoader, createjs.VideoLoader, createjs.TextLoader], this._defaultLoaderLength = this._availableLoaders.length, this.init(a, b, c) } var a = createjs.extend(LoadQueue, createjs.AbstractLoader), b = LoadQueue; try { Object.defineProperties(b, { POST: { get: createjs.deprecate(function () { return createjs.Methods.POST }, "AbstractLoader.POST") }, GET: { get: createjs.deprecate(function () { return createjs.Methods.GET }, "AbstractLoader.GET") }, BINARY: { get: createjs.deprecate(function () { return createjs.Types.BINARY }, "AbstractLoader.BINARY") }, CSS: { get: createjs.deprecate(function () { return createjs.Types.CSS }, "AbstractLoader.CSS") }, FONT: { get: createjs.deprecate(function () { return createjs.Types.FONT }, "AbstractLoader.FONT") }, FONTCSS: { get: createjs.deprecate(function () { return createjs.Types.FONTCSS }, "AbstractLoader.FONTCSS") }, IMAGE: { get: createjs.deprecate(function () { return createjs.Types.IMAGE }, "AbstractLoader.IMAGE") }, JAVASCRIPT: { get: createjs.deprecate(function () { return createjs.Types.JAVASCRIPT }, "AbstractLoader.JAVASCRIPT") }, JSON: { get: createjs.deprecate(function () { return createjs.Types.JSON }, "AbstractLoader.JSON") }, JSONP: { get: createjs.deprecate(function () { return createjs.Types.JSONP }, "AbstractLoader.JSONP") }, MANIFEST: { get: createjs.deprecate(function () { return createjs.Types.MANIFEST }, "AbstractLoader.MANIFEST") }, SOUND: { get: createjs.deprecate(function () { return createjs.Types.SOUND }, "AbstractLoader.SOUND") }, VIDEO: { get: createjs.deprecate(function () { return createjs.Types.VIDEO }, "AbstractLoader.VIDEO") }, SPRITESHEET: { get: createjs.deprecate(function () { return createjs.Types.SPRITESHEET }, "AbstractLoader.SPRITESHEET") }, SVG: { get: createjs.deprecate(function () { return createjs.Types.SVG }, "AbstractLoader.SVG") }, TEXT: { get: createjs.deprecate(function () { return createjs.Types.TEXT }, "AbstractLoader.TEXT") }, XML: { get: createjs.deprecate(function () { return createjs.Types.XML }, "AbstractLoader.XML") } }) } catch (c) { } a.init = function (a, b, c) { this.preferXHR = !0, this._preferXHR = !0, this.setPreferXHR(a), this._paused = !1, this._basePath = b, this._crossOrigin = c, this._loadStartWasDispatched = !1, this._currentlyLoadingScript = null, this._currentLoads = [], this._loadQueue = [], this._loadQueueBackup = [], this._loadItemsById = {}, this._loadItemsBySrc = {}, this._loadedResults = {}, this._loadedRawResults = {}, this._numItems = 0, this._numItemsLoaded = 0, this._scriptOrder = [], this._loadedScripts = [], this._lastProgress = 0 / 0 }, a.registerLoader = function (a) { if (!a || !a.canLoadItem) throw new Error("loader is of an incorrect type."); if (-1 != this._availableLoaders.indexOf(a)) throw new Error("loader already exists."); this._availableLoaders.unshift(a) }, a.unregisterLoader = function (a) { var b = this._availableLoaders.indexOf(a); -1 != b && b < this._defaultLoaderLength - 1 && this._availableLoaders.splice(b, 1) }, a.setPreferXHR = function (a) { return this.preferXHR = 0 != a && null != window.XMLHttpRequest, this.preferXHR }, a.removeAll = function () { this.remove() }, a.remove = function (a) { var b = null; if (a && !Array.isArray(a)) b = [a]; else if (a) b = a; else if (arguments.length > 0) return; var c = !1; if (b) { for (; b.length;) { var d = b.pop(), e = this.getResult(d); for (f = this._loadQueue.length - 1; f >= 0; f--)if (g = this._loadQueue[f].getItem(), g.id == d || g.src == d) { this._loadQueue.splice(f, 1)[0].cancel(); break } for (f = this._loadQueueBackup.length - 1; f >= 0; f--)if (g = this._loadQueueBackup[f].getItem(), g.id == d || g.src == d) { this._loadQueueBackup.splice(f, 1)[0].cancel(); break } if (e) this._disposeItem(this.getItem(d)); else for (var f = this._currentLoads.length - 1; f >= 0; f--) { var g = this._currentLoads[f].getItem(); if (g.id == d || g.src == d) { this._currentLoads.splice(f, 1)[0].cancel(), c = !0; break } } } c && this._loadNext() } else { this.close(); for (var h in this._loadItemsById) this._disposeItem(this._loadItemsById[h]); this.init(this.preferXHR, this._basePath) } }, a.reset = function () { this.close(); for (var a in this._loadItemsById) this._disposeItem(this._loadItemsById[a]); for (var b = [], c = 0, d = this._loadQueueBackup.length; d > c; c++)b.push(this._loadQueueBackup[c].getItem()); this.loadManifest(b, !1) }, a.installPlugin = function (a) { if (null != a && null != a.getPreloadHandlers) { this._plugins.push(a); var b = a.getPreloadHandlers(); if (b.scope = a, null != b.types) for (var c = 0, d = b.types.length; d > c; c++)this._typeCallbacks[b.types[c]] = b; if (null != b.extensions) for (c = 0, d = b.extensions.length; d > c; c++)this._extensionCallbacks[b.extensions[c]] = b } }, a.setMaxConnections = function (a) { this._maxConnections = a, !this._paused && this._loadQueue.length > 0 && this._loadNext() }, a.loadFile = function (a, b, c) { if (null == a) { var d = new createjs.ErrorEvent("PRELOAD_NO_FILE"); return void this._sendError(d) } this._addItem(a, null, c), this.setPaused(b !== !1 ? !1 : !0) }, a.loadManifest = function (a, c, d) { var e = null, f = null; if (Array.isArray(a)) { if (0 == a.length) { var g = new createjs.ErrorEvent("PRELOAD_MANIFEST_EMPTY"); return void this._sendError(g) } e = a } else if ("string" == typeof a) e = [{ src: a, type: b.MANIFEST }]; else { if ("object" != typeof a) { var g = new createjs.ErrorEvent("PRELOAD_MANIFEST_NULL"); return void this._sendError(g) } if (void 0 !== a.src) { if (null == a.type) a.type = b.MANIFEST; else if (a.type != b.MANIFEST) { var g = new createjs.ErrorEvent("PRELOAD_MANIFEST_TYPE"); this._sendError(g) } e = [a] } else void 0 !== a.manifest && (e = a.manifest, f = a.path) } for (var h = 0, i = e.length; i > h; h++)this._addItem(e[h], f, d); this.setPaused(c !== !1 ? !1 : !0) }, a.load = function () { this.setPaused(!1) }, a.getItem = function (a) { return this._loadItemsById[a] || this._loadItemsBySrc[a] }, a.getResult = function (a, b) { var c = this._loadItemsById[a] || this._loadItemsBySrc[a]; if (null == c) return null; var d = c.id; return b && this._loadedRawResults[d] ? this._loadedRawResults[d] : this._loadedResults[d] }, a.getItems = function (a) { var b = []; for (var c in this._loadItemsById) { var d = this._loadItemsById[c], e = this.getResult(c); (a !== !0 || null != e) && b.push({ item: d, result: e, rawResult: this.getResult(c, !0) }) } return b }, a.setPaused = function (a) { this._paused = a, this._paused || this._loadNext() }, a.close = function () { for (; this._currentLoads.length;)this._currentLoads.pop().cancel(); this._scriptOrder.length = 0, this._loadedScripts.length = 0, this.loadStartWasDispatched = !1, this._itemCount = 0, this._lastProgress = 0 / 0 }, a._addItem = function (a, b, c) { var d = this._createLoadItem(a, b, c); if (null != d) { var e = this._createLoader(d); null != e && ("plugins" in e && (e.plugins = this._plugins), d._loader = e, this._loadQueue.push(e), this._loadQueueBackup.push(e), this._numItems++, this._updateProgress(), (this.maintainScriptOrder && d.type == createjs.Types.JAVASCRIPT || d.maintainOrder === !0) && (this._scriptOrder.push(d), this._loadedScripts.push(null))) } }, a._createLoadItem = function (a, b, c) { var d = createjs.LoadItem.create(a); if (null == d) return null; var e = "", f = c || this._basePath; if (d.src instanceof Object) { if (!d.type) return null; if (b) { e = b; var g = createjs.URLUtils.parseURI(b); null == f || g.absolute || g.relative || (e = f + e) } else null != f && (e = f) } else { var h = createjs.URLUtils.parseURI(d.src); h.extension && (d.ext = h.extension), null == d.type && (d.type = createjs.RequestUtils.getTypeByExtension(d.ext)); var i = d.src; if (!h.absolute && !h.relative) if (b) { e = b; var g = createjs.URLUtils.parseURI(b); i = b + i, null == f || g.absolute || g.relative || (e = f + e) } else null != f && (e = f); d.src = e + d.src } d.path = e, (void 0 === d.id || null === d.id || "" === d.id) && (d.id = i); var j = this._typeCallbacks[d.type] || this._extensionCallbacks[d.ext]; if (j) { var k = j.callback.call(j.scope, d, this); if (k === !1) return null; k === !0 || null != k && (d._loader = k), h = createjs.URLUtils.parseURI(d.src), null != h.extension && (d.ext = h.extension) } return this._loadItemsById[d.id] = d, this._loadItemsBySrc[d.src] = d, null == d.crossOrigin && (d.crossOrigin = this._crossOrigin), d }, a._createLoader = function (a) { if (null != a._loader) return a._loader; for (var b = this.preferXHR, c = 0; c < this._availableLoaders.length; c++) { var d = this._availableLoaders[c]; if (d && d.canLoadItem(a)) return new d(a, b) } return null }, a._loadNext = function () { if (!this._paused) { this._loadStartWasDispatched || (this._sendLoadStart(), this._loadStartWasDispatched = !0), this._numItems == this._numItemsLoaded ? (this.loaded = !0, this._sendComplete(), this.next && this.next.load && this.next.load()) : this.loaded = !1; for (var a = 0; a < this._loadQueue.length && !(this._currentLoads.length >= this._maxConnections); a++) { var b = this._loadQueue[a]; this._canStartLoad(b) && (this._loadQueue.splice(a, 1), a--, this._loadItem(b)) } } }, a._loadItem = function (a) { a.on("fileload", this._handleFileLoad, this), a.on("progress", this._handleProgress, this), a.on("complete", this._handleFileComplete, this), a.on("error", this._handleError, this), a.on("fileerror", this._handleFileError, this), this._currentLoads.push(a), this._sendFileStart(a.getItem()), a.load() }, a._handleFileLoad = function (a) { a.target = null, this.dispatchEvent(a) }, a._handleFileError = function (a) { var b = new createjs.ErrorEvent("FILE_LOAD_ERROR", null, a.item); this._sendError(b) }, a._handleError = function (a) { var b = a.target; this._numItemsLoaded++, this._finishOrderedItem(b, !0), this._updateProgress(); var c = new createjs.ErrorEvent("FILE_LOAD_ERROR", null, b.getItem()); this._sendError(c), this.stopOnError ? this.setPaused(!0) : (this._removeLoadItem(b), this._cleanLoadItem(b), this._loadNext()) }, a._handleFileComplete = function (a) { var b = a.target, c = b.getItem(), d = b.getResult(); this._loadedResults[c.id] = d; var e = b.getResult(!0); null != e && e !== d && (this._loadedRawResults[c.id] = e), this._saveLoadedItems(b), this._removeLoadItem(b), this._finishOrderedItem(b) || this._processFinishedLoad(c, b), this._cleanLoadItem(b) }, a._saveLoadedItems = function (a) { var b = a.getLoadedItems(); if (null !== b) for (var c = 0; c < b.length; c++) { var d = b[c].item; this._loadItemsBySrc[d.src] = d, this._loadItemsById[d.id] = d, this._loadedResults[d.id] = b[c].result, this._loadedRawResults[d.id] = b[c].rawResult } }, a._finishOrderedItem = function (a, b) { var c = a.getItem(); if (this.maintainScriptOrder && c.type == createjs.Types.JAVASCRIPT || c.maintainOrder) { a instanceof createjs.JavaScriptLoader && (this._currentlyLoadingScript = !1); var d = createjs.indexOf(this._scriptOrder, c); return -1 == d ? !1 : (this._loadedScripts[d] = b === !0 ? !0 : c, this._checkScriptLoadOrder(), !0) } return !1 }, a._checkScriptLoadOrder = function () { for (var a = this._loadedScripts.length, b = 0; a > b; b++) { var c = this._loadedScripts[b]; if (null === c) break; if (c !== !0) { var d = this._loadedResults[c.id]; c.type == createjs.Types.JAVASCRIPT && createjs.DomUtils.appendToHead(d); var e = c._loader; this._processFinishedLoad(c, e), this._loadedScripts[b] = !0 } } }, a._processFinishedLoad = function (a, b) { if (this._numItemsLoaded++, !this.maintainScriptOrder && a.type == createjs.Types.JAVASCRIPT) { var c = b.getTag(); createjs.DomUtils.appendToHead(c) } this._updateProgress(), this._sendFileComplete(a, b), this._loadNext() }, a._canStartLoad = function (a) { if (!this.maintainScriptOrder || a.preferXHR) return !0; var b = a.getItem(); if (b.type != createjs.Types.JAVASCRIPT) return !0; if (this._currentlyLoadingScript) return !1; for (var c = this._scriptOrder.indexOf(b), d = 0; c > d;) { var e = this._loadedScripts[d]; if (null == e) return !1; d++ } return this._currentlyLoadingScript = !0, !0 }, a._removeLoadItem = function (a) { for (var b = this._currentLoads.length, c = 0; b > c; c++)if (this._currentLoads[c] == a) { this._currentLoads.splice(c, 1); break } }, a._cleanLoadItem = function (a) { var b = a.getItem(); b && delete b._loader }, a._handleProgress = function (a) { var b = a.target; this._sendFileProgress(b.getItem(), b.progress), this._updateProgress() }, a._updateProgress = function () { var a = this._numItemsLoaded / this._numItems, b = this._numItems - this._numItemsLoaded; if (b > 0) { for (var c = 0, d = 0, e = this._currentLoads.length; e > d; d++)c += this._currentLoads[d].progress; a += c / b * (b / this._numItems) } this._lastProgress != a && (this._sendProgress(a), this._lastProgress = a) }, a._disposeItem = function (a) { delete this._loadedResults[a.id], delete this._loadedRawResults[a.id], delete this._loadItemsById[a.id], delete this._loadItemsBySrc[a.src] }, a._sendFileProgress = function (a, b) { if (!this._isCanceled() && !this._paused && this.hasEventListener("fileprogress")) { var c = new createjs.Event("fileprogress"); c.progress = b, c.loaded = b, c.total = 1, c.item = a, this.dispatchEvent(c) } }, a._sendFileComplete = function (a, b) { if (!this._isCanceled() && !this._paused) { var c = new createjs.Event("fileload"); c.loader = b, c.item = a, c.result = this._loadedResults[a.id], c.rawResult = this._loadedRawResults[a.id], a.completeHandler && a.completeHandler(c), this.hasEventListener("fileload") && this.dispatchEvent(c) } }, a._sendFileStart = function (a) { var b = new createjs.Event("filestart"); b.item = a, this.hasEventListener("filestart") && this.dispatchEvent(b) }, a.toString = function () { return "[PreloadJS LoadQueue]" }, createjs.LoadQueue = createjs.promote(LoadQueue, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function TextLoader(a) { this.AbstractLoader_constructor(a, !0, createjs.Types.TEXT) } var a = (createjs.extend(TextLoader, createjs.AbstractLoader), TextLoader); a.canLoadItem = function (a) { return a.type == createjs.Types.TEXT }, createjs.TextLoader = createjs.promote(TextLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function BinaryLoader(a) { this.AbstractLoader_constructor(a, !0, createjs.Types.BINARY), this.on("initialize", this._updateXHR, this) } var a = createjs.extend(BinaryLoader, createjs.AbstractLoader), b = BinaryLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.BINARY }, a._updateXHR = function (a) { a.loader.setResponseType("arraybuffer") }, createjs.BinaryLoader = createjs.promote(BinaryLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function CSSLoader(a, b) { this.AbstractLoader_constructor(a, b, createjs.Types.CSS), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "href", this._tag = b ? createjs.Elements.style() : createjs.Elements.link(), this._tag.rel = "stylesheet", this._tag.type = "text/css" } var a = createjs.extend(CSSLoader, createjs.AbstractLoader), b = CSSLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.CSS }, a._formatResult = function (a) { if (this._preferXHR) { var b = a.getTag(); if (b.styleSheet) b.styleSheet.cssText = a.getResult(!0); else { var c = createjs.Elements.text(a.getResult(!0)); b.appendChild(c) } } else b = this._tag; return createjs.DomUtils.appendToHead(b), b }, createjs.CSSLoader = createjs.promote(CSSLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function FontLoader(a, b) { this.AbstractLoader_constructor(a, b, a.type), this._faces = {}, this._watched = [], this._count = 0, this._watchInterval = null, this._loadTimeout = null, this._injectCSS = void 0 === a.injectCSS ? !0 : a.injectCSS, this.dispatchEvent("initialize") } var a = createjs.extend(FontLoader, createjs.AbstractLoader); FontLoader.canLoadItem = function (a) { return a.type == createjs.Types.FONT || a.type == createjs.Types.FONTCSS }, FontLoader.sampleText = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ", FontLoader._ctx = document.createElement("canvas").getContext("2d"), FontLoader._referenceFonts = ["serif", "monospace"], FontLoader.WEIGHT_REGEX = /[- ._]*(thin|normal|book|regular|medium|black|heavy|[1-9]00|(?:extra|ultra|semi|demi)?[- ._]*(?:light|bold))[- ._]*/gi, FontLoader.STYLE_REGEX = /[- ._]*(italic|oblique)[- ._]*/gi, FontLoader.FONT_FORMAT = { woff2: "woff2", woff: "woff", ttf: "truetype", otf: "truetype" }, FontLoader.FONT_WEIGHT = { thin: 100, extralight: 200, ultralight: 200, light: 300, semilight: 300, demilight: 300, book: "normal", regular: "normal", semibold: 600, demibold: 600, extrabold: 800, ultrabold: 800, black: 900, heavy: 900 }, FontLoader.WATCH_DURATION = 10, a.load = function () { if (this.type == createjs.Types.FONTCSS) { var a = this._watchCSS(); if (!a) return void this.AbstractLoader_load() } else if (this._item.src instanceof Array) this._watchFontArray(); else { var b = this._defFromSrc(this._item.src); this._watchFont(b), this._injectStyleTag(this._cssFromDef(b)) } this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout), this.dispatchEvent("loadstart") }, a._handleTimeout = function () { this._stopWatching(), this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_TIMEOUT")) }, a._createRequest = function () { return this._request }, a.handleEvent = function (a) { switch (a.type) { case "complete": this._rawResult = a.target._response, this._result = !0, this._parseCSS(this._rawResult); break; case "error": this._stopWatching(), this.AbstractLoader_handleEvent(a) } }, a._watchCSS = function () { var a = this._item.src; return a instanceof HTMLStyleElement && (this._injectCSS && !a.parentNode && (document.head || document.getElementsByTagName("head")[0]).appendChild(a), this._injectCSS = !1, a = "\n" + a.textContent), -1 !== a.search(/\n|\r|@font-face/i) ? (this._parseCSS(a), !0) : (this._request = new createjs.XHRRequest(this._item), !1) }, a._parseCSS = function (a) { for (var b = /@font-face\s*\{([^}]+)}/g; ;) { var c = b.exec(a); if (!c) break; this._watchFont(this._parseFontFace(c[1])) } this._injectStyleTag(a) }, a._watchFontArray = function () { for (var a, b = this._item.src, c = "", d = b.length - 1; d >= 0; d--) { var e = b[d]; a = "string" == typeof e ? this._defFromSrc(e) : this._defFromObj(e), this._watchFont(a), c += this._cssFromDef(a) + "\n" } this._injectStyleTag(c) }, a._injectStyleTag = function (a) { if (this._injectCSS) { var b = document.head || document.getElementsByTagName("head")[0], c = document.createElement("style"); c.type = "text/css", c.styleSheet ? c.styleSheet.cssText = a : c.appendChild(document.createTextNode(a)), b.appendChild(c) } }, a._parseFontFace = function (a) { var b = this._getCSSValue(a, "font-family"), c = this._getCSSValue(a, "src"); return b && c ? this._defFromObj({ family: b, src: c, style: this._getCSSValue(a, "font-style"), weight: this._getCSSValue(a, "font-weight") }) : null }, a._watchFont = function (a) { a && !this._faces[a.id] && (this._faces[a.id] = a, this._watched.push(a), this._count++, this._calculateReferenceSizes(a), this._startWatching()) }, a._startWatching = function () { null == this._watchInterval && (this._watchInterval = setInterval(createjs.proxy(this._watch, this), FontLoader.WATCH_DURATION)) }, a._stopWatching = function () { clearInterval(this._watchInterval), clearTimeout(this._loadTimeout), this._watchInterval = null }, a._watch = function () { for (var a = this._watched, b = FontLoader._referenceFonts, c = a.length, d = c - 1; d >= 0; d--)for (var e = a[d], f = e.refs, g = f.length - 1; g >= 0; g--) { var h = this._getTextWidth(e.family + "," + b[g], e.weight, e.style); if (h != f[g]) { var i = new createjs.Event("fileload"); e.type = "font-family", i.item = e, this.dispatchEvent(i), a.splice(d, 1); break } } if (c !== a.length) { var i = new createjs.ProgressEvent(this._count - a.length, this._count); this.dispatchEvent(i) } 0 === c && (this._stopWatching(), this._sendComplete()) }, a._calculateReferenceSizes = function (a) { for (var b = FontLoader._referenceFonts, c = a.refs = [], d = 0; d < b.length; d++)c[d] = this._getTextWidth(b[d], a.weight, a.style) }, a._defFromSrc = function (a) { var b, c = /[- ._]+/g, d = a, e = null; b = d.search(/[?#]/), -1 !== b && (d = d.substr(0, b)), b = d.lastIndexOf("."), -1 !== b && (e = d.substr(b + 1), d = d.substr(0, b)), b = d.lastIndexOf("/"), -1 !== b && (d = d.substr(b + 1)); var f = d, g = f.match(FontLoader.WEIGHT_REGEX); g && (g = g[0], f = f.replace(g, ""), g = g.replace(c, "").toLowerCase()); var h = d.match(FontLoader.STYLE_REGEX); h && (f = f.replace(h[0], ""), h = "italic"), f = f.replace(c, ""); var i = "local('" + d.replace(c, " ") + "'), url('" + a + "')", j = FontLoader.FONT_FORMAT[e]; return j && (i += " format('" + j + "')"), this._defFromObj({ family: f, weight: FontLoader.FONT_WEIGHT[g] || g, style: h, src: i }) }, a._defFromObj = function (a) { var b = { family: a.family, src: a.src, style: a.style || "normal", weight: a.weight || "normal" }; return b.id = b.family + ";" + b.style + ";" + b.weight, b }, a._cssFromDef = function (a) { return "@font-face {\n font-family: '" + a.family + "';\n font-style: " + a.style + ";\n font-weight: " + a.weight + ";\n src: " + a.src + ";\n}" }, a._getTextWidth = function (a, b, c) { var d = FontLoader._ctx; return d.font = c + " " + b + " 72px " + a, d.measureText(FontLoader.sampleText).width }, a._getCSSValue = function (a, b) { var c = new RegExp(b + ":s*([^;}]+?)s*[;}]"), d = c.exec(a); return d && d[1] ? d[1] : null }, createjs.FontLoader = createjs.promote(FontLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function ImageLoader(a, b) { this.AbstractLoader_constructor(a, b, createjs.Types.IMAGE), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "src", createjs.DomUtils.isImageTag(a) ? this._tag = a : createjs.DomUtils.isImageTag(a.src) ? this._tag = a.src : createjs.DomUtils.isImageTag(a.tag) && (this._tag = a.tag), null != this._tag ? this._preferXHR = !1 : this._tag = createjs.Elements.img(), this.on("initialize", this._updateXHR, this) } var a = createjs.extend(ImageLoader, createjs.AbstractLoader), b = ImageLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.IMAGE }, a.load = function () { if ("" != this._tag.src && this._tag.complete) return void this._sendComplete(); var a = this._item.crossOrigin; 1 == a && (a = "Anonymous"), null == a || createjs.URLUtils.isLocal(this._item) || (this._tag.crossOrigin = a), this.AbstractLoader_load() }, a._updateXHR = function (a) { a.loader.mimeType = "text/plain; charset=x-user-defined-binary", a.loader.setResponseType && a.loader.setResponseType("blob") }, a._formatResult = function () { return this._formatImage }, a._formatImage = function (a, b) { var c = this._tag, d = window.URL || window.webkitURL; if (this._preferXHR) if (d) { var e = d.createObjectURL(this.getResult(!0)); c.src = e, c.addEventListener("load", this._cleanUpURL, !1), c.addEventListener("error", this._cleanUpURL, !1) } else c.src = this._item.src; else; c.complete ? a(c) : (c.onload = createjs.proxy(function () { a(this._tag), c.onload = c.onerror = null }, this), c.onerror = createjs.proxy(function (a) { b(new createjs.ErrorEvent("IMAGE_FORMAT", null, a)), c.onload = c.onerror = null }, this)) }, a._cleanUpURL = function (a) { var b = window.URL || window.webkitURL; b.revokeObjectURL(a.target.src) }, createjs.ImageLoader = createjs.promote(ImageLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function JavaScriptLoader(a, b) { this.AbstractLoader_constructor(a, b, createjs.Types.JAVASCRIPT), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "src", this.setTag(createjs.Elements.script()) } var a = createjs.extend(JavaScriptLoader, createjs.AbstractLoader), b = JavaScriptLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.JAVASCRIPT }, a._formatResult = function (a) { var b = a.getTag(); return this._preferXHR && (b.text = a.getResult(!0)), b }, createjs.JavaScriptLoader = createjs.promote(JavaScriptLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function JSONLoader(a) { this.AbstractLoader_constructor(a, !0, createjs.Types.JSON), this.resultFormatter = this._formatResult } var a = createjs.extend(JSONLoader, createjs.AbstractLoader), b = JSONLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.JSON }, a._formatResult = function (a) { var b = null; try { b = createjs.DataUtils.parseJSON(a.getResult(!0)) } catch (c) { var d = new createjs.ErrorEvent("JSON_FORMAT", null, c); return this._sendError(d), c } return b }, createjs.JSONLoader = createjs.promote(JSONLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function JSONPLoader(a) { this.AbstractLoader_constructor(a, !1, createjs.Types.JSONP), this.setTag(createjs.Elements.script()), this.getTag().type = "text/javascript" } var a = createjs.extend(JSONPLoader, createjs.AbstractLoader), b = JSONPLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.JSONP }, a.cancel = function () { this.AbstractLoader_cancel(), this._dispose() }, a.load = function () { if (null == this._item.callback) throw new Error("callback is required for loading JSONP requests."); if (null != window[this._item.callback]) throw new Error("JSONP callback '" + this._item.callback + "' already exists on window. You need to specify a different callback or re-name the current one."); window[this._item.callback] = createjs.proxy(this._handleLoad, this), createjs.DomUtils.appendToBody(this._tag), this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout), this._tag.src = this._item.src }, a._handleLoad = function (a) { this._result = this._rawResult = a, this._sendComplete(), this._dispose() }, a._handleTimeout = function () { this._dispose(), this.dispatchEvent(new createjs.ErrorEvent("timeout")) }, a._dispose = function () { createjs.DomUtils.removeChild(this._tag), delete window[this._item.callback], clearTimeout(this._loadTimeout) }, createjs.JSONPLoader = createjs.promote(JSONPLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function ManifestLoader(a, b) { this.AbstractLoader_constructor(a, b, createjs.Types.MANIFEST), this.plugins = null, this._manifestQueue = null } var a = createjs.extend(ManifestLoader, createjs.AbstractLoader), b = ManifestLoader; b.MANIFEST_PROGRESS = .25, b.canLoadItem = function (a) { return a.type == createjs.Types.MANIFEST }, a.load = function () { this.AbstractLoader_load() }, a._createRequest = function () { var a = this._item.callback; this._request = null != a ? new createjs.JSONPLoader(this._item) : new createjs.JSONLoader(this._item) }, a.handleEvent = function (a) { switch (a.type) { case "complete": return this._rawResult = a.target.getResult(!0), this._result = a.target.getResult(), this._sendProgress(b.MANIFEST_PROGRESS), void this._loadManifest(this._result); case "progress": return a.loaded *= b.MANIFEST_PROGRESS, this.progress = a.loaded / a.total, (isNaN(this.progress) || 1 / 0 == this.progress) && (this.progress = 0), void this._sendProgress(a) }this.AbstractLoader_handleEvent(a) }, a.destroy = function () { this.AbstractLoader_destroy(), this._manifestQueue.close() }, a._loadManifest = function (a) { if (a && a.manifest) { var b = this._manifestQueue = new createjs.LoadQueue(this._preferXHR); b.on("fileload", this._handleManifestFileLoad, this), b.on("progress", this._handleManifestProgress, this), b.on("complete", this._handleManifestComplete, this, !0), b.on("error", this._handleManifestError, this, !0); for (var c = 0, d = this.plugins.length; d > c; c++)b.installPlugin(this.plugins[c]); b.loadManifest(a) } else this._sendComplete() }, a._handleManifestFileLoad = function (a) { a.target = null, this.dispatchEvent(a) }, a._handleManifestComplete = function () { this._loadedItems = this._manifestQueue.getItems(!0), this._sendComplete() }, a._handleManifestProgress = function (a) { this.progress = a.progress * (1 - b.MANIFEST_PROGRESS) + b.MANIFEST_PROGRESS, this._sendProgress(this.progress) }, a._handleManifestError = function (a) { var b = new createjs.Event("fileerror"); b.item = a.data, this.dispatchEvent(b) }, createjs.ManifestLoader = createjs.promote(ManifestLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function SoundLoader(a, b) { this.AbstractMediaLoader_constructor(a, b, createjs.Types.SOUND), createjs.DomUtils.isAudioTag(a) ? this._tag = a : createjs.DomUtils.isAudioTag(a.src) ? this._tag = a : createjs.DomUtils.isAudioTag(a.tag) && (this._tag = createjs.DomUtils.isAudioTag(a) ? a : a.src), null != this._tag && (this._preferXHR = !1) } var a = createjs.extend(SoundLoader, createjs.AbstractMediaLoader), b = SoundLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.SOUND }, a._createTag = function (a) { var b = createjs.Elements.audio(); return b.autoplay = !1, b.preload = "none", b.src = a, b }, createjs.SoundLoader = createjs.promote(SoundLoader, "AbstractMediaLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function VideoLoader(a, b) { this.AbstractMediaLoader_constructor(a, b, createjs.Types.VIDEO), createjs.DomUtils.isVideoTag(a) || createjs.DomUtils.isVideoTag(a.src) ? (this.setTag(createjs.DomUtils.isVideoTag(a) ? a : a.src), this._preferXHR = !1) : this.setTag(this._createTag()) } var a = createjs.extend(VideoLoader, createjs.AbstractMediaLoader), b = VideoLoader; a._createTag = function () { return createjs.Elements.video() }, b.canLoadItem = function (a) { return a.type == createjs.Types.VIDEO }, createjs.VideoLoader = createjs.promote(VideoLoader, "AbstractMediaLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function SpriteSheetLoader(a, b) { this.AbstractLoader_constructor(a, b, createjs.Types.SPRITESHEET), this._manifestQueue = null } var a = createjs.extend(SpriteSheetLoader, createjs.AbstractLoader), b = SpriteSheetLoader; b.SPRITESHEET_PROGRESS = .25, b.canLoadItem = function (a) { return a.type == createjs.Types.SPRITESHEET }, a.destroy = function () { this.AbstractLoader_destroy(), this._manifestQueue.close() }, a._createRequest = function () { var a = this._item.callback; this._request = null != a ? new createjs.JSONPLoader(this._item) : new createjs.JSONLoader(this._item) }, a.handleEvent = function (a) { switch (a.type) { case "complete": return this._rawResult = a.target.getResult(!0), this._result = a.target.getResult(), this._sendProgress(b.SPRITESHEET_PROGRESS), void this._loadManifest(this._result); case "progress": return a.loaded *= b.SPRITESHEET_PROGRESS, this.progress = a.loaded / a.total, (isNaN(this.progress) || 1 / 0 == this.progress) && (this.progress = 0), void this._sendProgress(a) }this.AbstractLoader_handleEvent(a) }, a._loadManifest = function (a) { if (a && a.images) { var b = this._manifestQueue = new createjs.LoadQueue(this._preferXHR, this._item.path, this._item.crossOrigin); b.on("complete", this._handleManifestComplete, this, !0), b.on("fileload", this._handleManifestFileLoad, this), b.on("progress", this._handleManifestProgress, this), b.on("error", this._handleManifestError, this, !0), b.loadManifest(a.images) } }, a._handleManifestFileLoad = function (a) { var b = a.result; if (null != b) { var c = this.getResult().images, d = c.indexOf(a.item.src); c[d] = b } }, a._handleManifestComplete = function () { this._result = new createjs.SpriteSheet(this._result), this._loadedItems = this._manifestQueue.getItems(!0), this._sendComplete() }, a._handleManifestProgress = function (a) { this.progress = a.progress * (1 - b.SPRITESHEET_PROGRESS) + b.SPRITESHEET_PROGRESS, this._sendProgress(this.progress) }, a._handleManifestError = function (a) { var b = new createjs.Event("fileerror"); b.item = a.data, this.dispatchEvent(b) }, createjs.SpriteSheetLoader = createjs.promote(SpriteSheetLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { + "use strict"; function SVGLoader(a, b) { + this.AbstractLoader_constructor(a, b, createjs.Types.SVG), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "data", b ? this.setTag(createjs.Elements.svg()) : (this.setTag(createjs.Elements.object()), this.getTag().type = "image/svg+xml") + } var a = createjs.extend(SVGLoader, createjs.AbstractLoader), b = SVGLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.SVG }, a._formatResult = function (a) { var b = createjs.DataUtils.parseXML(a.getResult(!0)), c = a.getTag(); if (!this._preferXHR && document.body.contains(c) && document.body.removeChild(c), null != b.documentElement) { var d = b.documentElement; return document.importNode && (d = document.importNode(d, !0)), c.appendChild(d), c } return b }, createjs.SVGLoader = createjs.promote(SVGLoader, "AbstractLoader") +}(), window.createjs = window.createjs || {}, function () { "use strict"; function XMLLoader(a) { this.AbstractLoader_constructor(a, !0, createjs.Types.XML), this.resultFormatter = this._formatResult } var a = createjs.extend(XMLLoader, createjs.AbstractLoader), b = XMLLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.XML }, a._formatResult = function (a) { return createjs.DataUtils.parseXML(a.getResult(!0)) }, createjs.XMLLoader = createjs.promote(XMLLoader, "AbstractLoader") }(); + +module.exports = window.createjs; \ No newline at end of file diff --git a/src/utils/plugins/soundjs-1.0.0.min.js b/src/utils/plugins/soundjs-1.0.0.min.js new file mode 100644 index 0000000..655fc26 --- /dev/null +++ b/src/utils/plugins/soundjs-1.0.0.min.js @@ -0,0 +1,26 @@ +/*! +* @license SoundJS +* Visit http://createjs.com/ for documentation, updates and examples. +* +* Copyright (c) 2011-2015 gskinner.com, inc. +* +* Distributed under the terms of the MIT license. +* http://www.opensource.org/licenses/mit-license.html +* +* This notice shall be included in all copies or substantial portions of the Software. +*/ + +/**! + * SoundJS FlashAudioPlugin also includes swfobject (http://code.google.com/p/swfobject/) + */ + +window.createjs = window.createjs || {}, function () { var a = createjs.SoundJS = createjs.SoundJS || {}; a.version = "1.0.0", a.buildDate = "Thu, 12 Oct 2017 16:34:05 GMT" }(), window.createjs = window.createjs || {}, createjs.extend = function (a, b) { "use strict"; function c() { this.constructor = a } return c.prototype = b.prototype, a.prototype = new c }, window.createjs = window.createjs || {}, createjs.promote = function (a, b) { "use strict"; var c = a.prototype, d = Object.getPrototypeOf && Object.getPrototypeOf(c) || c.__proto__; if (d) { c[(b += "_") + "constructor"] = d.constructor; for (var e in d) c.hasOwnProperty(e) && "function" == typeof d[e] && (c[b + e] = d[e]) } return a }, window.createjs = window.createjs || {}, createjs.deprecate = function (a, b) { "use strict"; return function () { var c = "Deprecated property or method '" + b + "'. See docs for info."; return console && (console.warn ? console.warn(c) : console.log(c)), a && a.apply(this, arguments) } }, window.createjs = window.createjs || {}, createjs.indexOf = function (a, b) { "use strict"; for (var c = 0, d = a.length; d > c; c++)if (b === a[c]) return c; return -1 }, window.createjs = window.createjs || {}, function () { "use strict"; createjs.proxy = function (a, b) { var c = Array.prototype.slice.call(arguments, 2); return function () { return a.apply(b, Array.prototype.slice.call(arguments, 0).concat(c)) } } }(), window.createjs = window.createjs || {}, function () { "use strict"; function BrowserDetect() { throw "BrowserDetect cannot be instantiated" } var a = BrowserDetect.agent = window.navigator.userAgent; BrowserDetect.isWindowPhone = a.indexOf("IEMobile") > -1 || a.indexOf("Windows Phone") > -1, BrowserDetect.isFirefox = a.indexOf("Firefox") > -1, BrowserDetect.isOpera = null != window.opera, BrowserDetect.isChrome = a.indexOf("Chrome") > -1, BrowserDetect.isIOS = (a.indexOf("iPod") > -1 || a.indexOf("iPhone") > -1 || a.indexOf("iPad") > -1) && !BrowserDetect.isWindowPhone, BrowserDetect.isAndroid = a.indexOf("Android") > -1 && !BrowserDetect.isWindowPhone, BrowserDetect.isBlackberry = a.indexOf("Blackberry") > -1, createjs.BrowserDetect = BrowserDetect }(), window.createjs = window.createjs || {}, function () { "use strict"; function EventDispatcher() { this._listeners = null, this._captureListeners = null } var a = EventDispatcher.prototype; EventDispatcher.initialize = function (b) { b.addEventListener = a.addEventListener, b.on = a.on, b.removeEventListener = b.off = a.removeEventListener, b.removeAllEventListeners = a.removeAllEventListeners, b.hasEventListener = a.hasEventListener, b.dispatchEvent = a.dispatchEvent, b._dispatchEvent = a._dispatchEvent, b.willTrigger = a.willTrigger }, a.addEventListener = function (a, b, c) { var d; d = c ? this._captureListeners = this._captureListeners || {} : this._listeners = this._listeners || {}; var e = d[a]; return e && this.removeEventListener(a, b, c), e = d[a], e ? e.push(b) : d[a] = [b], b }, a.on = function (a, b, c, d, e, f) { return b.handleEvent && (c = c || b, b = b.handleEvent), c = c || this, this.addEventListener(a, function (a) { b.call(c, a, e), d && a.remove() }, f) }, a.removeEventListener = function (a, b, c) { var d = c ? this._captureListeners : this._listeners; if (d) { var e = d[a]; if (e) for (var f = 0, g = e.length; g > f; f++)if (e[f] == b) { 1 == g ? delete d[a] : e.splice(f, 1); break } } }, a.off = a.removeEventListener, a.removeAllEventListeners = function (a) { a ? (this._listeners && delete this._listeners[a], this._captureListeners && delete this._captureListeners[a]) : this._listeners = this._captureListeners = null }, a.dispatchEvent = function (a, b, c) { if ("string" == typeof a) { var d = this._listeners; if (!(b || d && d[a])) return !0; a = new createjs.Event(a, b, c) } else a.target && a.clone && (a = a.clone()); try { a.target = this } catch (e) { } if (a.bubbles && this.parent) { for (var f = this, g = [f]; f.parent;)g.push(f = f.parent); var h, i = g.length; for (h = i - 1; h >= 0 && !a.propagationStopped; h--)g[h]._dispatchEvent(a, 1 + (0 == h)); for (h = 1; i > h && !a.propagationStopped; h++)g[h]._dispatchEvent(a, 3) } else this._dispatchEvent(a, 2); return !a.defaultPrevented }, a.hasEventListener = function (a) { var b = this._listeners, c = this._captureListeners; return !!(b && b[a] || c && c[a]) }, a.willTrigger = function (a) { for (var b = this; b;) { if (b.hasEventListener(a)) return !0; b = b.parent } return !1 }, a.toString = function () { return "[EventDispatcher]" }, a._dispatchEvent = function (a, b) { var c, d, e = 2 >= b ? this._captureListeners : this._listeners; if (a && e && (d = e[a.type]) && (c = d.length)) { try { a.currentTarget = this } catch (f) { } try { a.eventPhase = 0 | b } catch (f) { } a.removed = !1, d = d.slice(); for (var g = 0; c > g && !a.immediatePropagationStopped; g++) { var h = d[g]; h.handleEvent ? h.handleEvent(a) : h(a), a.removed && (this.off(a.type, h, 1 == b), a.removed = !1) } } 2 === b && this._dispatchEvent(a, 2.1) }, createjs.EventDispatcher = EventDispatcher }(), window.createjs = window.createjs || {}, function () { "use strict"; function Event(a, b, c) { this.type = a, this.target = null, this.currentTarget = null, this.eventPhase = 0, this.bubbles = !!b, this.cancelable = !!c, this.timeStamp = (new Date).getTime(), this.defaultPrevented = !1, this.propagationStopped = !1, this.immediatePropagationStopped = !1, this.removed = !1 } var a = Event.prototype; a.preventDefault = function () { this.defaultPrevented = this.cancelable && !0 }, a.stopPropagation = function () { this.propagationStopped = !0 }, a.stopImmediatePropagation = function () { this.immediatePropagationStopped = this.propagationStopped = !0 }, a.remove = function () { this.removed = !0 }, a.clone = function () { return new Event(this.type, this.bubbles, this.cancelable) }, a.set = function (a) { for (var b in a) this[b] = a[b]; return this }, a.toString = function () { return "[Event (type=" + this.type + ")]" }, createjs.Event = Event }(), window.createjs = window.createjs || {}, function () { "use strict"; function ErrorEvent(a, b, c) { this.Event_constructor("error"), this.title = a, this.message = b, this.data = c } var a = createjs.extend(ErrorEvent, createjs.Event); a.clone = function () { return new createjs.ErrorEvent(this.title, this.message, this.data) }, createjs.ErrorEvent = createjs.promote(ErrorEvent, "Event") }(), window.createjs = window.createjs || {}, function () { "use strict"; function ProgressEvent(a, b) { this.Event_constructor("progress"), this.loaded = a, this.total = null == b ? 1 : b, this.progress = 0 == b ? 0 : this.loaded / this.total } var a = createjs.extend(ProgressEvent, createjs.Event); a.clone = function () { return new createjs.ProgressEvent(this.loaded, this.total) }, createjs.ProgressEvent = createjs.promote(ProgressEvent, "Event") }(window), window.createjs = window.createjs || {}, function () { "use strict"; function LoadItem() { this.src = null, this.type = null, this.id = null, this.maintainOrder = !1, this.callback = null, this.data = null, this.method = createjs.Methods.GET, this.values = null, this.headers = null, this.withCredentials = !1, this.mimeType = null, this.crossOrigin = null, this.loadTimeout = b.LOAD_TIMEOUT_DEFAULT } var a = LoadItem.prototype = {}, b = LoadItem; b.LOAD_TIMEOUT_DEFAULT = 8e3, b.create = function (a) { if ("string" == typeof a) { var c = new LoadItem; return c.src = a, c } if (a instanceof b) return a; if (a instanceof Object && a.src) return null == a.loadTimeout && (a.loadTimeout = b.LOAD_TIMEOUT_DEFAULT), a; throw new Error("Type not recognized.") }, a.set = function (a) { for (var b in a) this[b] = a[b]; return this }, createjs.LoadItem = b }(), window.createjs = window.createjs || {}, function () { var a = {}; a.POST = "POST", a.GET = "GET", createjs.Methods = a }(), window.createjs = window.createjs || {}, function () { var a = {}; a.BINARY = "binary", a.CSS = "css", a.FONT = "font", a.FONTCSS = "fontcss", a.IMAGE = "image", a.JAVASCRIPT = "javascript", a.JSON = "json", a.JSONP = "jsonp", a.MANIFEST = "manifest", a.SOUND = "sound", a.VIDEO = "video", a.SPRITESHEET = "spritesheet", a.SVG = "svg", a.TEXT = "text", a.XML = "xml", createjs.Types = a }(), function () { var a = {}; a.a = function () { return a.el("a") }, a.svg = function () { return a.el("svg") }, a.object = function () { return a.el("object") }, a.image = function () { return a.el("image") }, a.img = function () { return a.el("img") }, a.style = function () { return a.el("style") }, a.link = function () { return a.el("link") }, a.script = function () { return a.el("script") }, a.audio = function () { return a.el("audio") }, a.video = function () { return a.el("video") }, a.text = function (a) { return document.createTextNode(a) }, a.el = function (a) { return document.createElement(a) }, createjs.Elements = a }(), function () { var a = { container: null }; a.appendToHead = function (b) { a.getHead().appendChild(b) }, a.appendToBody = function (b) { if (null == a.container) { a.container = document.createElement("div"), a.container.id = "preloadjs-container"; var c = a.container.style; c.visibility = "hidden", c.position = "absolute", c.width = a.container.style.height = "10px", c.overflow = "hidden", c.transform = c.msTransform = c.webkitTransform = c.oTransform = "translate(-10px, -10px)", a.getBody().appendChild(a.container) } a.container.appendChild(b) }, a.getHead = function () { return document.head || document.getElementsByTagName("head")[0] }, a.getBody = function () { return document.body || document.getElementsByTagName("body")[0] }, a.removeChild = function (a) { a.parent && a.parent.removeChild(a) }, a.isImageTag = function (a) { return a instanceof HTMLImageElement }, a.isAudioTag = function (a) { return window.HTMLAudioElement ? a instanceof HTMLAudioElement : !1 }, a.isVideoTag = function (a) { return window.HTMLVideoElement ? a instanceof HTMLVideoElement : !1 }, createjs.DomUtils = a }(), function () { var a = {}; a.isBinary = function (a) { switch (a) { case createjs.Types.IMAGE: case createjs.Types.BINARY: return !0; default: return !1 } }, a.isText = function (a) { switch (a) { case createjs.Types.TEXT: case createjs.Types.JSON: case createjs.Types.MANIFEST: case createjs.Types.XML: case createjs.Types.CSS: case createjs.Types.SVG: case createjs.Types.JAVASCRIPT: case createjs.Types.SPRITESHEET: return !0; default: return !1 } }, a.getTypeByExtension = function (a) { if (null == a) return createjs.Types.TEXT; switch (a.toLowerCase()) { case "jpeg": case "jpg": case "gif": case "png": case "webp": case "bmp": return createjs.Types.IMAGE; case "ogg": case "mp3": case "webm": return createjs.Types.SOUND; case "mp4": case "webm": case "ts": return createjs.Types.VIDEO; case "json": return createjs.Types.JSON; case "xml": return createjs.Types.XML; case "css": return createjs.Types.CSS; case "js": return createjs.Types.JAVASCRIPT; case "svg": return createjs.Types.SVG; default: return createjs.Types.TEXT } }, createjs.RequestUtils = a }(), function () { var a = {}; a.ABSOLUTE_PATT = /^(?:\w+:)?\/{2}/i, a.RELATIVE_PATT = /^[.\/]*?\//i, a.EXTENSION_PATT = /\/?[^\/]+\.(\w{1,5})$/i, a.parseURI = function (b) { var c = { absolute: !1, relative: !1, protocol: null, hostname: null, port: null, pathname: null, search: null, hash: null, host: null }; if (null == b) return c; var d = createjs.Elements.a(); d.href = b; for (var e in c) e in d && (c[e] = d[e]); var f = b.indexOf("?"); f > -1 && (b = b.substr(0, f)); var g; return a.ABSOLUTE_PATT.test(b) ? c.absolute = !0 : a.RELATIVE_PATT.test(b) && (c.relative = !0), (g = b.match(a.EXTENSION_PATT)) && (c.extension = g[1].toLowerCase()), c }, a.formatQueryString = function (a, b) { if (null == a) throw new Error("You must specify data."); var c = []; for (var d in a) c.push(d + "=" + escape(a[d])); return b && (c = c.concat(b)), c.join("&") }, a.buildURI = function (a, b) { if (null == b) return a; var c = [], d = a.indexOf("?"); if (-1 != d) { var e = a.slice(d + 1); c = c.concat(e.split("&")) } return -1 != d ? a.slice(0, d) + "?" + this.formatQueryString(b, c) : a + "?" + this.formatQueryString(b, c) }, a.isCrossDomain = function (a) { var b = createjs.Elements.a(); b.href = a.src; var c = createjs.Elements.a(); c.href = location.href; var d = "" != b.hostname && (b.port != c.port || b.protocol != c.protocol || b.hostname != c.hostname); return d }, a.isLocal = function (a) { var b = createjs.Elements.a(); return b.href = a.src, "" == b.hostname && "file:" == b.protocol }, createjs.URLUtils = a }(), window.createjs = window.createjs || {}, function () { "use strict"; function AbstractLoader(a, b, c) { this.EventDispatcher_constructor(), this.loaded = !1, this.canceled = !1, this.progress = 0, this.type = c, this.resultFormatter = null, this._item = a ? createjs.LoadItem.create(a) : null, this._preferXHR = b, this._result = null, this._rawResult = null, this._loadedItems = null, this._tagSrcAttribute = null, this._tag = null } var a = createjs.extend(AbstractLoader, createjs.EventDispatcher), b = AbstractLoader; try { Object.defineProperties(b, { POST: { get: createjs.deprecate(function () { return createjs.Methods.POST }, "AbstractLoader.POST") }, GET: { get: createjs.deprecate(function () { return createjs.Methods.GET }, "AbstractLoader.GET") }, BINARY: { get: createjs.deprecate(function () { return createjs.Types.BINARY }, "AbstractLoader.BINARY") }, CSS: { get: createjs.deprecate(function () { return createjs.Types.CSS }, "AbstractLoader.CSS") }, FONT: { get: createjs.deprecate(function () { return createjs.Types.FONT }, "AbstractLoader.FONT") }, FONTCSS: { get: createjs.deprecate(function () { return createjs.Types.FONTCSS }, "AbstractLoader.FONTCSS") }, IMAGE: { get: createjs.deprecate(function () { return createjs.Types.IMAGE }, "AbstractLoader.IMAGE") }, JAVASCRIPT: { get: createjs.deprecate(function () { return createjs.Types.JAVASCRIPT }, "AbstractLoader.JAVASCRIPT") }, JSON: { get: createjs.deprecate(function () { return createjs.Types.JSON }, "AbstractLoader.JSON") }, JSONP: { get: createjs.deprecate(function () { return createjs.Types.JSONP }, "AbstractLoader.JSONP") }, MANIFEST: { get: createjs.deprecate(function () { return createjs.Types.MANIFEST }, "AbstractLoader.MANIFEST") }, SOUND: { get: createjs.deprecate(function () { return createjs.Types.SOUND }, "AbstractLoader.SOUND") }, VIDEO: { get: createjs.deprecate(function () { return createjs.Types.VIDEO }, "AbstractLoader.VIDEO") }, SPRITESHEET: { get: createjs.deprecate(function () { return createjs.Types.SPRITESHEET }, "AbstractLoader.SPRITESHEET") }, SVG: { get: createjs.deprecate(function () { return createjs.Types.SVG }, "AbstractLoader.SVG") }, TEXT: { get: createjs.deprecate(function () { return createjs.Types.TEXT }, "AbstractLoader.TEXT") }, XML: { get: createjs.deprecate(function () { return createjs.Types.XML }, "AbstractLoader.XML") } }) } catch (c) { } a.getItem = function () { return this._item }, a.getResult = function (a) { return a ? this._rawResult : this._result }, a.getTag = function () { return this._tag }, a.setTag = function (a) { this._tag = a }, a.load = function () { this._createRequest(), this._request.on("complete", this, this), this._request.on("progress", this, this), this._request.on("loadStart", this, this), this._request.on("abort", this, this), this._request.on("timeout", this, this), this._request.on("error", this, this); var a = new createjs.Event("initialize"); a.loader = this._request, this.dispatchEvent(a), this._request.load() }, a.cancel = function () { this.canceled = !0, this.destroy() }, a.destroy = function () { this._request && (this._request.removeAllEventListeners(), this._request.destroy()), this._request = null, this._item = null, this._rawResult = null, this._result = null, this._loadItems = null, this.removeAllEventListeners() }, a.getLoadedItems = function () { return this._loadedItems }, a._createRequest = function () { this._request = this._preferXHR ? new createjs.XHRRequest(this._item) : new createjs.TagRequest(this._item, this._tag || this._createTag(), this._tagSrcAttribute) }, a._createTag = function () { return null }, a._sendLoadStart = function () { this._isCanceled() || this.dispatchEvent("loadstart") }, a._sendProgress = function (a) { if (!this._isCanceled()) { var b = null; "number" == typeof a ? (this.progress = a, b = new createjs.ProgressEvent(this.progress)) : (b = a, this.progress = a.loaded / a.total, b.progress = this.progress, (isNaN(this.progress) || 1 / 0 == this.progress) && (this.progress = 0)), this.hasEventListener("progress") && this.dispatchEvent(b) } }, a._sendComplete = function () { if (!this._isCanceled()) { this.loaded = !0; var a = new createjs.Event("complete"); a.rawResult = this._rawResult, null != this._result && (a.result = this._result), this.dispatchEvent(a) } }, a._sendError = function (a) { !this._isCanceled() && this.hasEventListener("error") && (null == a && (a = new createjs.ErrorEvent("PRELOAD_ERROR_EMPTY")), this.dispatchEvent(a)) }, a._isCanceled = function () { return null == window.createjs || this.canceled ? !0 : !1 }, a.resultFormatter = null, a.handleEvent = function (a) { switch (a.type) { case "complete": this._rawResult = a.target._response; var b = this.resultFormatter && this.resultFormatter(this); b instanceof Function ? b.call(this, createjs.proxy(this._resultFormatSuccess, this), createjs.proxy(this._resultFormatFailed, this)) : (this._result = b || this._rawResult, this._sendComplete()); break; case "progress": this._sendProgress(a); break; case "error": this._sendError(a); break; case "loadstart": this._sendLoadStart(); break; case "abort": case "timeout": this._isCanceled() || this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_" + a.type.toUpperCase() + "_ERROR")) } }, a._resultFormatSuccess = function (a) { this._result = a, this._sendComplete() }, a._resultFormatFailed = function (a) { this._sendError(a) }, a.toString = function () { return "[PreloadJS AbstractLoader]" }, createjs.AbstractLoader = createjs.promote(AbstractLoader, "EventDispatcher") }(), window.createjs = window.createjs || {}, function () { "use strict"; function AbstractMediaLoader(a, b, c) { this.AbstractLoader_constructor(a, b, c), this.resultFormatter = this._formatResult, this._tagSrcAttribute = "src", this.on("initialize", this._updateXHR, this) } var a = createjs.extend(AbstractMediaLoader, createjs.AbstractLoader); a.load = function () { this._tag || (this._tag = this._createTag(this._item.src)), this._tag.preload = "auto", this._tag.load(), this.AbstractLoader_load() }, a._createTag = function () { }, a._createRequest = function () { this._request = this._preferXHR ? new createjs.XHRRequest(this._item) : new createjs.MediaTagRequest(this._item, this._tag || this._createTag(), this._tagSrcAttribute) }, a._updateXHR = function (a) { a.loader.setResponseType && a.loader.setResponseType("blob") }, a._formatResult = function (a) { if (this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler), this._tag.onstalled = null, this._preferXHR) { var b = window.URL || window.webkitURL, c = a.getResult(!0); a.getTag().src = b.createObjectURL(c) } return a.getTag() }, createjs.AbstractMediaLoader = createjs.promote(AbstractMediaLoader, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; var AbstractRequest = function (a) { this._item = a }, a = createjs.extend(AbstractRequest, createjs.EventDispatcher); a.load = function () { }, a.destroy = function () { }, a.cancel = function () { }, createjs.AbstractRequest = createjs.promote(AbstractRequest, "EventDispatcher") }(), window.createjs = window.createjs || {}, function () { "use strict"; function TagRequest(a, b, c) { this.AbstractRequest_constructor(a), this._tag = b, this._tagSrcAttribute = c, this._loadedHandler = createjs.proxy(this._handleTagComplete, this), this._addedToDOM = !1 } var a = createjs.extend(TagRequest, createjs.AbstractRequest); a.load = function () { this._tag.onload = createjs.proxy(this._handleTagComplete, this), this._tag.onreadystatechange = createjs.proxy(this._handleReadyStateChange, this), this._tag.onerror = createjs.proxy(this._handleError, this); var a = new createjs.Event("initialize"); a.loader = this._tag, this.dispatchEvent(a), this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout), this._tag[this._tagSrcAttribute] = this._item.src, null == this._tag.parentNode && (createjs.DomUtils.appendToBody(this._tag), this._addedToDOM = !0) }, a.destroy = function () { this._clean(), this._tag = null, this.AbstractRequest_destroy() }, a._handleReadyStateChange = function () { clearTimeout(this._loadTimeout); var a = this._tag; ("loaded" == a.readyState || "complete" == a.readyState) && this._handleTagComplete() }, a._handleError = function () { this._clean(), this.dispatchEvent("error") }, a._handleTagComplete = function () { this._rawResult = this._tag, this._result = this.resultFormatter && this.resultFormatter(this) || this._rawResult, this._clean(), this.dispatchEvent("complete") }, a._handleTimeout = function () { this._clean(), this.dispatchEvent(new createjs.Event("timeout")) }, a._clean = function () { this._tag.onload = null, this._tag.onreadystatechange = null, this._tag.onerror = null, this._addedToDOM && null != this._tag.parentNode && this._tag.parentNode.removeChild(this._tag), clearTimeout(this._loadTimeout) }, a._handleStalled = function () { }, createjs.TagRequest = createjs.promote(TagRequest, "AbstractRequest") }(), window.createjs = window.createjs || {}, function () { "use strict"; function MediaTagRequest(a, b, c) { this.AbstractRequest_constructor(a), this._tag = b, this._tagSrcAttribute = c, this._loadedHandler = createjs.proxy(this._handleTagComplete, this) } var a = createjs.extend(MediaTagRequest, createjs.TagRequest); a.load = function () { var a = createjs.proxy(this._handleStalled, this); this._stalledCallback = a; var b = createjs.proxy(this._handleProgress, this); this._handleProgress = b, this._tag.addEventListener("stalled", a), this._tag.addEventListener("progress", b), this._tag.addEventListener && this._tag.addEventListener("canplaythrough", this._loadedHandler, !1), this.TagRequest_load() }, a._handleReadyStateChange = function () { clearTimeout(this._loadTimeout); var a = this._tag; ("loaded" == a.readyState || "complete" == a.readyState) && this._handleTagComplete() }, a._handleStalled = function () { }, a._handleProgress = function (a) { if (a && !(a.loaded > 0 && 0 == a.total)) { var b = new createjs.ProgressEvent(a.loaded, a.total); this.dispatchEvent(b) } }, a._clean = function () { this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler), this._tag.removeEventListener("stalled", this._stalledCallback), this._tag.removeEventListener("progress", this._progressCallback), this.TagRequest__clean() }, createjs.MediaTagRequest = createjs.promote(MediaTagRequest, "TagRequest") }(), window.createjs = window.createjs || {}, function () { "use strict"; function XHRRequest(a) { this.AbstractRequest_constructor(a), this._request = null, this._loadTimeout = null, this._xhrLevel = 1, this._response = null, this._rawResponse = null, this._canceled = !1, this._handleLoadStartProxy = createjs.proxy(this._handleLoadStart, this), this._handleProgressProxy = createjs.proxy(this._handleProgress, this), this._handleAbortProxy = createjs.proxy(this._handleAbort, this), this._handleErrorProxy = createjs.proxy(this._handleError, this), this._handleTimeoutProxy = createjs.proxy(this._handleTimeout, this), this._handleLoadProxy = createjs.proxy(this._handleLoad, this), this._handleReadyStateChangeProxy = createjs.proxy(this._handleReadyStateChange, this), !this._createXHR(a) } var a = createjs.extend(XHRRequest, createjs.AbstractRequest); XHRRequest.ACTIVEX_VERSIONS = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], a.getResult = function (a) { return a && this._rawResponse ? this._rawResponse : this._response }, a.cancel = function () { this.canceled = !0, this._clean(), this._request.abort() }, a.load = function () { if (null == this._request) return void this._handleError(); null != this._request.addEventListener ? (this._request.addEventListener("loadstart", this._handleLoadStartProxy, !1), this._request.addEventListener("progress", this._handleProgressProxy, !1), this._request.addEventListener("abort", this._handleAbortProxy, !1), this._request.addEventListener("error", this._handleErrorProxy, !1), this._request.addEventListener("timeout", this._handleTimeoutProxy, !1), this._request.addEventListener("load", this._handleLoadProxy, !1), this._request.addEventListener("readystatechange", this._handleReadyStateChangeProxy, !1)) : (this._request.onloadstart = this._handleLoadStartProxy, this._request.onprogress = this._handleProgressProxy, this._request.onabort = this._handleAbortProxy, this._request.onerror = this._handleErrorProxy, this._request.ontimeout = this._handleTimeoutProxy, this._request.onload = this._handleLoadProxy, this._request.onreadystatechange = this._handleReadyStateChangeProxy), 1 == this._xhrLevel && (this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout)); try { this._item.values ? this._request.send(createjs.URLUtils.formatQueryString(this._item.values)) : this._request.send() } catch (a) { this.dispatchEvent(new createjs.ErrorEvent("XHR_SEND", null, a)) } }, a.setResponseType = function (a) { "blob" === a && (a = window.URL ? "blob" : "arraybuffer", this._responseType = a), this._request.responseType = a }, a.getAllResponseHeaders = function () { return this._request.getAllResponseHeaders instanceof Function ? this._request.getAllResponseHeaders() : null }, a.getResponseHeader = function (a) { return this._request.getResponseHeader instanceof Function ? this._request.getResponseHeader(a) : null }, a._handleProgress = function (a) { if (a && !(a.loaded > 0 && 0 == a.total)) { var b = new createjs.ProgressEvent(a.loaded, a.total); this.dispatchEvent(b) } }, a._handleLoadStart = function () { clearTimeout(this._loadTimeout), this.dispatchEvent("loadstart") }, a._handleAbort = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent("XHR_ABORTED", null, a)) }, a._handleError = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent(a.message)) }, a._handleReadyStateChange = function () { 4 == this._request.readyState && this._handleLoad() }, a._handleLoad = function () { if (!this.loaded) { this.loaded = !0; var a = this._checkError(); if (a) return void this._handleError(a); if (this._response = this._getResponse(), "arraybuffer" === this._responseType) try { this._response = new Blob([this._response]) } catch (b) { if (window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, "TypeError" === b.name && window.BlobBuilder) { var c = new BlobBuilder; c.append(this._response), this._response = c.getBlob() } } this._clean(), this.dispatchEvent(new createjs.Event("complete")) } }, a._handleTimeout = function (a) { this._clean(), this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_TIMEOUT", null, a)) }, a._checkError = function () { var a = parseInt(this._request.status); return a >= 400 && 599 >= a ? new Error(a) : 0 == a && /^https?:/.test(location.protocol) ? new Error(0) : null }, a._getResponse = function () { if (null != this._response) return this._response; if (null != this._request.response) return this._request.response; try { if (null != this._request.responseText) return this._request.responseText } catch (a) { } try { if (null != this._request.responseXML) return this._request.responseXML } catch (a) { } return null }, a._createXHR = function (a) { var b = createjs.URLUtils.isCrossDomain(a), c = {}, d = null; if (window.XMLHttpRequest) d = new XMLHttpRequest, b && void 0 === d.withCredentials && window.XDomainRequest && (d = new XDomainRequest); else { for (var e = 0, f = s.ACTIVEX_VERSIONS.length; f > e; e++) { var g = s.ACTIVEX_VERSIONS[e]; try { d = new ActiveXObject(g); break } catch (h) { } } if (null == d) return !1 } null == a.mimeType && createjs.RequestUtils.isText(a.type) && (a.mimeType = "text/plain; charset=utf-8"), a.mimeType && d.overrideMimeType && d.overrideMimeType(a.mimeType), this._xhrLevel = "string" == typeof d.responseType ? 2 : 1; var i = null; if (i = a.method == createjs.Methods.GET ? createjs.URLUtils.buildURI(a.src, a.values) : a.src, d.open(a.method || createjs.Methods.GET, i, !0), b && d instanceof XMLHttpRequest && 1 == this._xhrLevel && (c.Origin = location.origin), a.values && a.method == createjs.Methods.POST && (c["Content-Type"] = "application/x-www-form-urlencoded"), b || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest"), a.headers) for (var j in a.headers) c[j] = a.headers[j]; for (j in c) d.setRequestHeader(j, c[j]); return d instanceof XMLHttpRequest && void 0 !== a.withCredentials && (d.withCredentials = a.withCredentials), this._request = d, !0 }, a._clean = function () { clearTimeout(this._loadTimeout), null != this._request.removeEventListener ? (this._request.removeEventListener("loadstart", this._handleLoadStartProxy), this._request.removeEventListener("progress", this._handleProgressProxy), this._request.removeEventListener("abort", this._handleAbortProxy), this._request.removeEventListener("error", this._handleErrorProxy), this._request.removeEventListener("timeout", this._handleTimeoutProxy), this._request.removeEventListener("load", this._handleLoadProxy), this._request.removeEventListener("readystatechange", this._handleReadyStateChangeProxy)) : (this._request.onloadstart = null, this._request.onprogress = null, this._request.onabort = null, this._request.onerror = null, this._request.ontimeout = null, this._request.onload = null, this._request.onreadystatechange = null) }, a.toString = function () { return "[PreloadJS XHRRequest]" }, createjs.XHRRequest = createjs.promote(XHRRequest, "AbstractRequest") }(), window.createjs = window.createjs || {}, function () { "use strict"; function SoundLoader(a, b) { this.AbstractMediaLoader_constructor(a, b, createjs.Types.SOUND), createjs.DomUtils.isAudioTag(a) ? this._tag = a : createjs.DomUtils.isAudioTag(a.src) ? this._tag = a : createjs.DomUtils.isAudioTag(a.tag) && (this._tag = createjs.DomUtils.isAudioTag(a) ? a : a.src), null != this._tag && (this._preferXHR = !1) } var a = createjs.extend(SoundLoader, createjs.AbstractMediaLoader), b = SoundLoader; b.canLoadItem = function (a) { return a.type == createjs.Types.SOUND }, a._createTag = function (a) { var b = createjs.Elements.audio(); return b.autoplay = !1, b.preload = "none", b.src = a, b }, createjs.SoundLoader = createjs.promote(SoundLoader, "AbstractMediaLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; var PlayPropsConfig = function () { this.interrupt = null, this.delay = null, this.offset = null, this.loop = null, this.volume = null, this.pan = null, this.startTime = null, this.duration = null }, a = PlayPropsConfig.prototype = {}, b = PlayPropsConfig; b.create = function (a) { if ("string" == typeof a) return console && (console.warn || console.log)("Deprecated behaviour. Sound.play takes a configuration object instead of individual arguments. See docs for info."), (new createjs.PlayPropsConfig).set({ interrupt: a }); if (null == a || a instanceof b || a instanceof Object) return (new createjs.PlayPropsConfig).set(a); if (null == a) throw new Error("PlayProps configuration not recognized.") }, a.set = function (a) { if (null != a) for (var b in a) this[b] = a[b]; return this }, a.toString = function () { return "[PlayPropsConfig]" }, createjs.PlayPropsConfig = b }(), window.createjs = window.createjs || {}, function () { + "use strict"; function Sound() { throw "Sound cannot be instantiated" } function a(a, b) { this.init(a, b) } var b = Sound; b.INTERRUPT_ANY = "any", b.INTERRUPT_EARLY = "early", b.INTERRUPT_LATE = "late", b.INTERRUPT_NONE = "none", b.PLAY_INITED = "playInited", b.PLAY_SUCCEEDED = "playSucceeded", b.PLAY_INTERRUPTED = "playInterrupted", b.PLAY_FINISHED = "playFinished", b.PLAY_FAILED = "playFailed", b.SUPPORTED_EXTENSIONS = ["mp3", "ogg", "opus", "mpeg", "wav", "m4a", "mp4", "aiff", "wma", "mid"], b.EXTENSION_MAP = { m4a: "mp4" }, b.FILE_PATTERN = /^(?:(\w+:)\/{2}(\w+(?:\.\w+)*\/?))?([\/.]*?(?:[^?]+)?\/)?((?:[^\/?]+)\.(\w+))(?:\?(\S+)?)?$/, b.defaultInterruptBehavior = b.INTERRUPT_NONE, b.alternateExtensions = [], b.activePlugin = null, b._masterVolume = 1, b._getMasterVolume = function () { return this._masterVolume }, b.getVolume = createjs.deprecate(b._getMasterVolume, "Sound.getVolume"), b._setMasterVolume = function (a) { if (null != Number(a) && (a = Math.max(0, Math.min(1, a)), b._masterVolume = a, !this.activePlugin || !this.activePlugin.setVolume || !this.activePlugin.setVolume(a))) for (var c = this._instances, d = 0, e = c.length; e > d; d++)c[d].setMasterVolume(a) }, b.setVolume = createjs.deprecate(b._setMasterVolume, "Sound.setVolume"), b._masterMute = !1, b._getMute = function () { return this._masterMute }, b.getMute = createjs.deprecate(b._getMute, "Sound.getMute"), b._setMute = function (a) { if (null != a && (this._masterMute = a, !this.activePlugin || !this.activePlugin.setMute || !this.activePlugin.setMute(a))) for (var b = this._instances, c = 0, d = b.length; d > c; c++)b[c].setMasterMute(a) }, b.setMute = createjs.deprecate(b._setMute, "Sound.setMute"), b._getCapabilities = function () { return null == b.activePlugin ? null : b.activePlugin._capabilities }, b.getCapabilities = createjs.deprecate(b._getCapabilities, "Sound.getCapabilities"), Object.defineProperties(b, { volume: { get: b._getMasterVolume, set: b._setMasterVolume }, muted: { get: b._getMute, set: b._setMute }, capabilities: { get: b._getCapabilities } }), b._pluginsRegistered = !1, b._lastID = 0, b._instances = [], b._idHash = {}, b._preloadHash = {}, b._defaultPlayPropsHash = {}, b.addEventListener = null, b.removeEventListener = null, b.removeAllEventListeners = null, b.dispatchEvent = null, b.hasEventListener = null, b._listeners = null, createjs.EventDispatcher.initialize(b), b.getPreloadHandlers = function () { return { callback: createjs.proxy(b.initLoad, b), types: ["sound"], extensions: b.SUPPORTED_EXTENSIONS } }, b._handleLoadComplete = function (a) { var c = a.target.getItem().src; if (b._preloadHash[c]) for (var d = 0, e = b._preloadHash[c].length; e > d; d++) { var f = b._preloadHash[c][d]; if (b._preloadHash[c][d] = !0, b.hasEventListener("fileload")) { var a = new createjs.Event("fileload"); a.src = f.src, a.id = f.id, a.data = f.data, a.sprite = f.sprite, b.dispatchEvent(a) } } }, b._handleLoadError = function (a) { var c = a.target.getItem().src; if (b._preloadHash[c]) for (var d = 0, e = b._preloadHash[c].length; e > d; d++) { var f = b._preloadHash[c][d]; if (b._preloadHash[c][d] = !1, b.hasEventListener("fileerror")) { var a = new createjs.Event("fileerror"); a.src = f.src, a.id = f.id, a.data = f.data, a.sprite = f.sprite, b.dispatchEvent(a) } } }, b._registerPlugin = function (a) { return a.isSupported() ? (b.activePlugin = new a, !0) : !1 }, b.registerPlugins = function (a) { b._pluginsRegistered = !0; for (var c = 0, d = a.length; d > c; c++)if (b._registerPlugin(a[c])) return !0; return !1 }, b.initializeDefaultPlugins = function () { return null != b.activePlugin ? !0 : b._pluginsRegistered ? !1 : b.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin]) ? !0 : !1 }, b.isReady = function () { return null != b.activePlugin }, b.initLoad = function (a) { return "video" == a.type ? !0 : b._registerSound(a) }, b._registerSound = function (c) { + if (!b.initializeDefaultPlugins()) return !1; var d; if (c.src instanceof Object ? (d = b._parseSrc(c.src), d.src = c.path + d.src) : d = b._parsePath(c.src), null == d) return !1; + c.src = d.src, c.type = "sound"; var e = c.data, f = null; if (null != e && (isNaN(e.channels) ? isNaN(e) || (f = parseInt(e)) : f = parseInt(e.channels), e.audioSprite)) for (var g, h = e.audioSprite.length; h--;)g = e.audioSprite[h], b._idHash[g.id] = { src: c.src, startTime: parseInt(g.startTime), duration: parseInt(g.duration) }, g.defaultPlayProps && (b._defaultPlayPropsHash[g.id] = createjs.PlayPropsConfig.create(g.defaultPlayProps)); null != c.id && (b._idHash[c.id] = { src: c.src }); var i = b.activePlugin.register(c); return a.create(c.src, f), null != e && isNaN(e) ? c.data.channels = f || a.maxPerChannel() : c.data = f || a.maxPerChannel(), i.type && (c.type = i.type), c.defaultPlayProps && (b._defaultPlayPropsHash[c.src] = createjs.PlayPropsConfig.create(c.defaultPlayProps)), i + }, b.registerSound = function (a, c, d, e, f) { var g = { src: a, id: c, data: d, defaultPlayProps: f }; a instanceof Object && a.src && (e = c, g = a), g = createjs.LoadItem.create(g), g.path = e, null == e || g.src instanceof Object || (g.src = e + g.src); var h = b._registerSound(g); if (!h) return !1; if (b._preloadHash[g.src] || (b._preloadHash[g.src] = []), b._preloadHash[g.src].push(g), 1 == b._preloadHash[g.src].length) h.on("complete", this._handleLoadComplete, this), h.on("error", this._handleLoadError, this), b.activePlugin.preload(h); else if (1 == b._preloadHash[g.src][0]) return !0; return g }, b.registerSounds = function (a, b) { var c = []; a.path && (b ? b += a.path : b = a.path, a = a.manifest); for (var d = 0, e = a.length; e > d; d++)c[d] = createjs.Sound.registerSound(a[d].src, a[d].id, a[d].data, b, a[d].defaultPlayProps); return c }, b.removeSound = function (c, d) { if (null == b.activePlugin) return !1; c instanceof Object && c.src && (c = c.src); var e; if (c instanceof Object ? e = b._parseSrc(c) : (c = b._getSrcById(c).src, e = b._parsePath(c)), null == e) return !1; c = e.src, null != d && (c = d + c); for (var f in b._idHash) b._idHash[f].src == c && delete b._idHash[f]; return a.removeSrc(c), delete b._preloadHash[c], b.activePlugin.removeSound(c), !0 }, b.removeSounds = function (a, b) { var c = []; a.path && (b ? b += a.path : b = a.path, a = a.manifest); for (var d = 0, e = a.length; e > d; d++)c[d] = createjs.Sound.removeSound(a[d].src, b); return c }, b.removeAllSounds = function () { b._idHash = {}, b._preloadHash = {}, a.removeAll(), b.activePlugin && b.activePlugin.removeAllSounds() }, b.loadComplete = function (a) { if (!b.isReady()) return !1; var c = b._parsePath(a); return a = c ? b._getSrcById(c.src).src : b._getSrcById(a).src, void 0 == b._preloadHash[a] ? !1 : 1 == b._preloadHash[a][0] }, b._parsePath = function (a) { "string" != typeof a && (a = a.toString()); var c = a.match(b.FILE_PATTERN); if (null == c) return !1; for (var d = c[4], e = c[5], f = b.capabilities, g = 0; !f[e];)if (e = b.alternateExtensions[g++], g > b.alternateExtensions.length) return null; a = a.replace("." + c[5], "." + e); var h = { name: d, src: a, extension: e }; return h }, b._parseSrc = function (a) { var c = { name: void 0, src: void 0, extension: void 0 }, d = b.capabilities; for (var e in a) if (a.hasOwnProperty(e) && d[e]) { c.src = a[e], c.extension = e; break } if (!c.src) return !1; var f = c.src.lastIndexOf("/"); return c.name = -1 != f ? c.src.slice(f + 1) : c.src, c }, b.play = function (a, c) { var d = createjs.PlayPropsConfig.create(c), e = b.createInstance(a, d.startTime, d.duration), f = b._playInstance(e, d); return f || e._playFailed(), e }, b.createInstance = function (c, d, e) { if (!b.initializeDefaultPlugins()) return new createjs.DefaultSoundInstance(c, d, e); var f = b._defaultPlayPropsHash[c]; c = b._getSrcById(c); var g = b._parsePath(c.src), h = null; return null != g && null != g.src ? (a.create(g.src), null == d && (d = c.startTime), h = b.activePlugin.create(g.src, d, e || c.duration), f = f || b._defaultPlayPropsHash[g.src], f && h.applyPlayProps(f)) : h = new createjs.DefaultSoundInstance(c, d, e), h.uniqueId = b._lastID++, h }, b.stop = function () { for (var a = this._instances, b = a.length; b--;)a[b].stop() }, b.setDefaultPlayProps = function (a, c) { a = b._getSrcById(a), b._defaultPlayPropsHash[b._parsePath(a.src).src] = createjs.PlayPropsConfig.create(c) }, b.getDefaultPlayProps = function (a) { return a = b._getSrcById(a), b._defaultPlayPropsHash[b._parsePath(a.src).src] }, b._playInstance = function (a, c) { var d = b._defaultPlayPropsHash[a.src] || {}; if (null == c.interrupt && (c.interrupt = d.interrupt || b.defaultInterruptBehavior), null == c.delay && (c.delay = d.delay || 0), null == c.offset && (c.offset = a.position), null == c.loop && (c.loop = a.loop), null == c.volume && (c.volume = a.volume), null == c.pan && (c.pan = a.pan), 0 == c.delay) { var e = b._beginPlaying(a, c); if (!e) return !1 } else { var f = setTimeout(function () { b._beginPlaying(a, c) }, c.delay); a.delayTimeoutId = f } return this._instances.push(a), !0 }, b._beginPlaying = function (b, c) { if (!a.add(b, c.interrupt)) return !1; var d = b._beginPlaying(c); if (!d) { var e = createjs.indexOf(this._instances, b); return e > -1 && this._instances.splice(e, 1), !1 } return !0 }, b._getSrcById = function (a) { return b._idHash[a] || { src: a } }, b._playFinished = function (b) { a.remove(b); var c = createjs.indexOf(this._instances, b); c > -1 && this._instances.splice(c, 1) }, createjs.Sound = Sound, a.channels = {}, a.create = function (b, c) { var d = a.get(b); return null == d ? (a.channels[b] = new a(b, c), !0) : !1 }, a.removeSrc = function (b) { var c = a.get(b); return null == c ? !1 : (c._removeAll(), delete a.channels[b], !0) }, a.removeAll = function () { for (var b in a.channels) a.channels[b]._removeAll(); a.channels = {} }, a.add = function (b, c) { var d = a.get(b.src); return null == d ? !1 : d._add(b, c) }, a.remove = function (b) { var c = a.get(b.src); return null == c ? !1 : (c._remove(b), !0) }, a.maxPerChannel = function () { return c.maxDefault }, a.get = function (b) { return a.channels[b] }; var c = a.prototype; c.constructor = a, c.src = null, c.max = null, c.maxDefault = 100, c.length = 0, c.init = function (a, b) { this.src = a, this.max = b || this.maxDefault, -1 == this.max && (this.max = this.maxDefault), this._instances = [] }, c._get = function (a) { return this._instances[a] }, c._add = function (a, b) { return this._getSlot(b, a) ? (this._instances.push(a), this.length++, !0) : !1 }, c._remove = function (a) { var b = createjs.indexOf(this._instances, a); return -1 == b ? !1 : (this._instances.splice(b, 1), this.length--, !0) }, c._removeAll = function () { for (var a = this.length - 1; a >= 0; a--)this._instances[a].stop() }, c._getSlot = function (a) { var b, c; if (a != Sound.INTERRUPT_NONE && (c = this._get(0), null == c)) return !0; for (var d = 0, e = this.max; e > d; d++) { if (b = this._get(d), null == b) return !0; if (b.playState == Sound.PLAY_FINISHED || b.playState == Sound.PLAY_INTERRUPTED || b.playState == Sound.PLAY_FAILED) { c = b; break } a != Sound.INTERRUPT_NONE && (a == Sound.INTERRUPT_EARLY && b.position < c.position || a == Sound.INTERRUPT_LATE && b.position > c.position) && (c = b) } return null != c ? (c._interrupt(), this._remove(c), !0) : !1 }, c.toString = function () { return "[Sound SoundChannel]" } +}(), window.createjs = window.createjs || {}, function () { "use strict"; var AbstractSoundInstance = function (a, b, c, d) { this.EventDispatcher_constructor(), this.src = a, this.uniqueId = -1, this.playState = null, this.delayTimeoutId = null, this._volume = 1, Object.defineProperty(this, "volume", { get: this._getVolume, set: this._setVolume }), this.getVolume = createjs.deprecate(this._getVolume, "AbstractSoundInstance.getVolume"), this.setVolume = createjs.deprecate(this._setVolume, "AbstractSoundInstance.setVolume"), this._pan = 0, Object.defineProperty(this, "pan", { get: this._getPan, set: this._setPan }), this.getPan = createjs.deprecate(this._getPan, "AbstractSoundInstance.getPan"), this.setPan = createjs.deprecate(this._setPan, "AbstractSoundInstance.setPan"), this._startTime = Math.max(0, b || 0), Object.defineProperty(this, "startTime", { get: this._getStartTime, set: this._setStartTime }), this.getStartTime = createjs.deprecate(this._getStartTime, "AbstractSoundInstance.getStartTime"), this.setStartTime = createjs.deprecate(this._setStartTime, "AbstractSoundInstance.setStartTime"), this._duration = Math.max(0, c || 0), Object.defineProperty(this, "duration", { get: this._getDuration, set: this._setDuration }), this.getDuration = createjs.deprecate(this._getDuration, "AbstractSoundInstance.getDuration"), this.setDuration = createjs.deprecate(this._setDuration, "AbstractSoundInstance.setDuration"), this._playbackResource = null, Object.defineProperty(this, "playbackResource", { get: this._getPlaybackResource, set: this._setPlaybackResource }), d !== !1 && d !== !0 && this._setPlaybackResource(d), this.getPlaybackResource = createjs.deprecate(this._getPlaybackResource, "AbstractSoundInstance.getPlaybackResource"), this.setPlaybackResource = createjs.deprecate(this._setPlaybackResource, "AbstractSoundInstance.setPlaybackResource"), this._position = 0, Object.defineProperty(this, "position", { get: this._getPosition, set: this._setPosition }), this.getPosition = createjs.deprecate(this._getPosition, "AbstractSoundInstance.getPosition"), this.setPosition = createjs.deprecate(this._setPosition, "AbstractSoundInstance.setPosition"), this._loop = 0, Object.defineProperty(this, "loop", { get: this._getLoop, set: this._setLoop }), this.getLoop = createjs.deprecate(this._getLoop, "AbstractSoundInstance.getLoop"), this.setLoop = createjs.deprecate(this._setLoop, "AbstractSoundInstance.setLoop"), this._muted = !1, Object.defineProperty(this, "muted", { get: this._getMuted, set: this._setMuted }), this.getMuted = createjs.deprecate(this._getMuted, "AbstractSoundInstance.getMuted"), this.setMuted = createjs.deprecate(this._setMuted, "AbstractSoundInstance.setMuted"), this._paused = !1, Object.defineProperty(this, "paused", { get: this._getPaused, set: this._setPaused }), this.getPaused = createjs.deprecate(this._getPaused, "AbstractSoundInstance.getPaused"), this.setPaused = createjs.deprecate(this._setPaused, "AbstractSoundInstance.setPaused") }, a = createjs.extend(AbstractSoundInstance, createjs.EventDispatcher); a.play = function (a) { var b = createjs.PlayPropsConfig.create(a); return this.playState == createjs.Sound.PLAY_SUCCEEDED ? (this.applyPlayProps(b), void (this._paused && this._setPaused(!1))) : (this._cleanUp(), createjs.Sound._playInstance(this, b), this) }, a.stop = function () { return this._position = 0, this._paused = !1, this._handleStop(), this._cleanUp(), this.playState = createjs.Sound.PLAY_FINISHED, this }, a.destroy = function () { this._cleanUp(), this.src = null, this.playbackResource = null, this.removeAllEventListeners() }, a.applyPlayProps = function (a) { return null != a.offset && this._setPosition(a.offset), null != a.loop && this._setLoop(a.loop), null != a.volume && this._setVolume(a.volume), null != a.pan && this._setPan(a.pan), null != a.startTime && (this._setStartTime(a.startTime), this._setDuration(a.duration)), this }, a.toString = function () { return "[AbstractSoundInstance]" }, a._getPaused = function () { return this._paused }, a._setPaused = function (a) { return a !== !0 && a !== !1 || this._paused == a || 1 == a && this.playState != createjs.Sound.PLAY_SUCCEEDED ? void 0 : (this._paused = a, a ? this._pause() : this._resume(), clearTimeout(this.delayTimeoutId), this) }, a._setVolume = function (a) { return a == this._volume ? this : (this._volume = Math.max(0, Math.min(1, a)), this._muted || this._updateVolume(), this) }, a._getVolume = function () { return this._volume }, a._setMuted = function (a) { return a === !0 || a === !1 ? (this._muted = a, this._updateVolume(), this) : void 0 }, a._getMuted = function () { return this._muted }, a._setPan = function (a) { return a == this._pan ? this : (this._pan = Math.max(-1, Math.min(1, a)), this._updatePan(), this) }, a._getPan = function () { return this._pan }, a._getPosition = function () { return this._paused || this.playState != createjs.Sound.PLAY_SUCCEEDED || (this._position = this._calculateCurrentPosition()), this._position }, a._setPosition = function (a) { return this._position = Math.max(0, a), this.playState == createjs.Sound.PLAY_SUCCEEDED && this._updatePosition(), this }, a._getStartTime = function () { return this._startTime }, a._setStartTime = function (a) { return a == this._startTime ? this : (this._startTime = Math.max(0, a || 0), this._updateStartTime(), this) }, a._getDuration = function () { return this._duration }, a._setDuration = function (a) { return a == this._duration ? this : (this._duration = Math.max(0, a || 0), this._updateDuration(), this) }, a._setPlaybackResource = function (a) { return this._playbackResource = a, 0 == this._duration && this._playbackResource && this._setDurationFromSource(), this }, a._getPlaybackResource = function () { return this._playbackResource }, a._getLoop = function () { return this._loop }, a._setLoop = function (a) { null != this._playbackResource && (0 != this._loop && 0 == a ? this._removeLooping(a) : 0 == this._loop && 0 != a && this._addLooping(a)), this._loop = a }, a._sendEvent = function (a) { var b = new createjs.Event(a); this.dispatchEvent(b) }, a._cleanUp = function () { clearTimeout(this.delayTimeoutId), this._handleCleanUp(), this._paused = !1, createjs.Sound._playFinished(this) }, a._interrupt = function () { this._cleanUp(), this.playState = createjs.Sound.PLAY_INTERRUPTED, this._sendEvent("interrupted") }, a._beginPlaying = function (a) { return this._setPosition(a.offset), this._setLoop(a.loop), this._setVolume(a.volume), this._setPan(a.pan), null != a.startTime && (this._setStartTime(a.startTime), this._setDuration(a.duration)), null != this._playbackResource && this._position < this._duration ? (this._paused = !1, this._handleSoundReady(), this.playState = createjs.Sound.PLAY_SUCCEEDED, this._sendEvent("succeeded"), !0) : (this._playFailed(), !1) }, a._playFailed = function () { this._cleanUp(), this.playState = createjs.Sound.PLAY_FAILED, this._sendEvent("failed") }, a._handleSoundComplete = function () { return this._position = 0, 0 != this._loop ? (this._loop--, this._handleLoop(), void this._sendEvent("loop")) : (this._cleanUp(), this.playState = createjs.Sound.PLAY_FINISHED, void this._sendEvent("complete")) }, a._handleSoundReady = function () { }, a._updateVolume = function () { }, a._updatePan = function () { }, a._updateStartTime = function () { }, a._updateDuration = function () { }, a._setDurationFromSource = function () { }, a._calculateCurrentPosition = function () { }, a._updatePosition = function () { }, a._removeLooping = function () { }, a._addLooping = function () { }, a._pause = function () { }, a._resume = function () { }, a._handleStop = function () { }, a._handleCleanUp = function () { }, a._handleLoop = function () { }, createjs.AbstractSoundInstance = createjs.promote(AbstractSoundInstance, "EventDispatcher"), createjs.DefaultSoundInstance = createjs.AbstractSoundInstance }(), window.createjs = window.createjs || {}, function () { "use strict"; var AbstractPlugin = function () { this._capabilities = null, this._loaders = {}, this._audioSources = {}, this._soundInstances = {}, this._volume = 1, this._loaderClass, this._soundInstanceClass }, a = AbstractPlugin.prototype; AbstractPlugin._capabilities = null, AbstractPlugin.isSupported = function () { return !0 }, a.register = function (a) { var b = this._loaders[a.src]; return b && !b.canceled ? this._loaders[a.src] : (this._audioSources[a.src] = !0, this._soundInstances[a.src] = [], b = new this._loaderClass(a), b.on("complete", this._handlePreloadComplete, this), this._loaders[a.src] = b, b) }, a.preload = function (a) { a.on("error", this._handlePreloadError, this), a.load() }, a.isPreloadStarted = function (a) { return null != this._audioSources[a] }, a.isPreloadComplete = function (a) { return !(null == this._audioSources[a] || 1 == this._audioSources[a]) }, a.removeSound = function (a) { if (this._soundInstances[a]) { for (var b = this._soundInstances[a].length; b--;) { var c = this._soundInstances[a][b]; c.destroy() } delete this._soundInstances[a], delete this._audioSources[a], this._loaders[a] && this._loaders[a].destroy(), delete this._loaders[a] } }, a.removeAllSounds = function () { for (var a in this._audioSources) this.removeSound(a) }, a.create = function (a, b, c) { this.isPreloadStarted(a) || this.preload(this.register(a)); var d = new this._soundInstanceClass(a, b, c, this._audioSources[a]); return this._soundInstances[a] && this._soundInstances[a].push(d), d.setMasterVolume && d.setMasterVolume(createjs.Sound.volume), d.setMasterMute && d.setMasterMute(createjs.Sound.muted), d }, a.setVolume = function (a) { return this._volume = a, this._updateVolume(), !0 }, a.getVolume = function () { return this._volume }, a.setMute = function () { return this._updateVolume(), !0 }, a.toString = function () { return "[AbstractPlugin]" }, a._handlePreloadComplete = function (a) { var b = a.target.getItem().src; this._audioSources[b] = a.result; for (var c = 0, d = this._soundInstances[b].length; d > c; c++) { var e = this._soundInstances[b][c]; e.playbackResource = this._audioSources[b], this._soundInstances[b] = null } }, a._handlePreloadError = function () { }, a._updateVolume = function () { }, createjs.AbstractPlugin = AbstractPlugin }(), window.createjs = window.createjs || {}, function () { "use strict"; function a(a) { this.AbstractLoader_constructor(a, !0, createjs.Types.SOUND) } var b = createjs.extend(a, createjs.AbstractLoader); a.context = null, b.toString = function () { return "[WebAudioLoader]" }, b._createRequest = function () { this._request = new createjs.XHRRequest(this._item, !1), this._request.setResponseType("arraybuffer") }, b._sendComplete = function () { a.context.decodeAudioData(this._rawResult, createjs.proxy(this._handleAudioDecoded, this), createjs.proxy(this._sendError, this)) }, b._handleAudioDecoded = function (a) { this._result = a, this.AbstractLoader__sendComplete() }, createjs.WebAudioLoader = createjs.promote(a, "AbstractLoader") }(), window.createjs = window.createjs || {}, function () { "use strict"; function WebAudioSoundInstance(a, c, d, e) { this.AbstractSoundInstance_constructor(a, c, d, e), this.gainNode = b.context.createGain(), this.panNode = b.context.createPanner(), this.panNode.panningModel = b._panningModel, this.panNode.connect(this.gainNode), this._updatePan(), this.sourceNode = null, this._soundCompleteTimeout = null, this._sourceNodeNext = null, this._playbackStartTime = 0, this._endedHandler = createjs.proxy(this._handleSoundComplete, this) } var a = createjs.extend(WebAudioSoundInstance, createjs.AbstractSoundInstance), b = WebAudioSoundInstance; b.context = null, b._scratchBuffer = null, b.destinationNode = null, b._panningModel = "equalpower", a.destroy = function () { this.AbstractSoundInstance_destroy(), this.panNode.disconnect(0), this.panNode = null, this.gainNode.disconnect(0), this.gainNode = null }, a.toString = function () { return "[WebAudioSoundInstance]" }, a._updatePan = function () { this.panNode.setPosition(this._pan, 0, -.5) }, a._removeLooping = function () { this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext) }, a._addLooping = function () { this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0)) }, a._setDurationFromSource = function () { this._duration = 1e3 * this.playbackResource.duration }, a._handleCleanUp = function () { this.sourceNode && this.playState == createjs.Sound.PLAY_SUCCEEDED && (this.sourceNode = this._cleanUpAudioNode(this.sourceNode), this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext)), 0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0), clearTimeout(this._soundCompleteTimeout), this._playbackStartTime = 0 }, a._cleanUpAudioNode = function (a) { if (a) { if (a.stop(0), a.disconnect(0), createjs.BrowserDetect.isIOS) try { a.buffer = b._scratchBuffer } catch (c) { } a = null } return a }, a._handleSoundReady = function () { this.gainNode.connect(b.destinationNode); var a = .001 * this._duration, c = Math.min(.001 * Math.max(0, this._position), a); this.sourceNode = this._createAndPlayAudioNode(b.context.currentTime - a, c), this._playbackStartTime = this.sourceNode.startTime - c, this._soundCompleteTimeout = setTimeout(this._endedHandler, 1e3 * (a - c)), 0 != this._loop && (this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0)) }, a._createAndPlayAudioNode = function (a, c) { var d = b.context.createBufferSource(); d.buffer = this.playbackResource, d.connect(this.panNode); var e = .001 * this._duration; return d.startTime = a + e, d.start(d.startTime, c + .001 * this._startTime, e - c), d }, a._pause = function () { this._position = 1e3 * (b.context.currentTime - this._playbackStartTime), this.sourceNode = this._cleanUpAudioNode(this.sourceNode), this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext), 0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0), clearTimeout(this._soundCompleteTimeout) }, a._resume = function () { this._handleSoundReady() }, a._updateVolume = function () { var a = this._muted ? 0 : this._volume; a != this.gainNode.gain.value && (this.gainNode.gain.value = a) }, a._calculateCurrentPosition = function () { return 1e3 * (b.context.currentTime - this._playbackStartTime) }, a._updatePosition = function () { this.sourceNode = this._cleanUpAudioNode(this.sourceNode), this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext), clearTimeout(this._soundCompleteTimeout), this._paused || this._handleSoundReady() }, a._handleLoop = function () { this._cleanUpAudioNode(this.sourceNode), this.sourceNode = this._sourceNodeNext, this._playbackStartTime = this.sourceNode.startTime, this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0), this._soundCompleteTimeout = setTimeout(this._endedHandler, this._duration) }, a._updateDuration = function () { this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._pause(), this._resume()) }, createjs.WebAudioSoundInstance = createjs.promote(WebAudioSoundInstance, "AbstractSoundInstance") }(), window.createjs = window.createjs || {}, function () { "use strict"; function WebAudioPlugin() { this.AbstractPlugin_constructor(), this._panningModel = b._panningModel, this.context = b.context, this.dynamicsCompressorNode = this.context.createDynamicsCompressor(), this.dynamicsCompressorNode.connect(this.context.destination), this.gainNode = this.context.createGain(), this.gainNode.connect(this.dynamicsCompressorNode), createjs.WebAudioSoundInstance.destinationNode = this.gainNode, this._capabilities = b._capabilities, this._loaderClass = createjs.WebAudioLoader, this._soundInstanceClass = createjs.WebAudioSoundInstance, this._addPropsToClasses() } var a = createjs.extend(WebAudioPlugin, createjs.AbstractPlugin), b = WebAudioPlugin; b._capabilities = null, b._panningModel = "equalpower", b.context = null, b._scratchBuffer = null, b._unlocked = !1, b.DEFAULT_SAMPLE_RATE = 44100, b.isSupported = function () { var a = createjs.BrowserDetect.isIOS || createjs.BrowserDetect.isAndroid || createjs.BrowserDetect.isBlackberry; return "file:" != location.protocol || a || this._isFileXHRSupported() ? (b._generateCapabilities(), null == b.context ? !1 : !0) : !1 }, b.playEmptySound = function () { if (null != b.context) { var a = b.context.createBufferSource(); a.buffer = b._scratchBuffer, a.connect(b.context.destination), a.start(0, 0, 0) } }, b._isFileXHRSupported = function () { var a = !0, b = new XMLHttpRequest; try { b.open("GET", "WebAudioPluginTest.fail", !1) } catch (c) { return a = !1 } b.onerror = function () { a = !1 }, b.onload = function () { a = 404 == this.status || 200 == this.status || 0 == this.status && "" != this.response }; try { b.send() } catch (c) { a = !1 } return a }, b._generateCapabilities = function () { if (null == b._capabilities) { var a = document.createElement("audio"); if (null == a.canPlayType) return null; if (null == b.context && (b.context = b._createAudioContext(), null == b.context)) return null; null == b._scratchBuffer && (b._scratchBuffer = b.context.createBuffer(1, 1, 22050)), b._compatibilitySetUp(), "ontouchstart" in window && "running" != b.context.state && (b._unlock(), document.addEventListener("mousedown", b._unlock, !0), document.addEventListener("touchstart", b._unlock, !0), document.addEventListener("touchend", b._unlock, !0)), b._capabilities = { panning: !0, volume: !0, tracks: -1 }; for (var c = createjs.Sound.SUPPORTED_EXTENSIONS, d = createjs.Sound.EXTENSION_MAP, e = 0, f = c.length; f > e; e++) { var g = c[e], h = d[g] || g; b._capabilities[g] = "no" != a.canPlayType("audio/" + g) && "" != a.canPlayType("audio/" + g) || "no" != a.canPlayType("audio/" + h) && "" != a.canPlayType("audio/" + h) } b.context.destination.numberOfChannels < 2 && (b._capabilities.panning = !1) } }, b._createAudioContext = function () { var a = window.AudioContext || window.webkitAudioContext; if (null == a) return null; var c = new a; if (/(iPhone|iPad)/i.test(navigator.userAgent) && c.sampleRate !== b.DEFAULT_SAMPLE_RATE) { var d = c.createBuffer(1, 1, b.DEFAULT_SAMPLE_RATE), e = c.createBufferSource(); e.buffer = d, e.connect(c.destination), e.start(0), e.disconnect(), c.close(), c = new a } return c }, b._compatibilitySetUp = function () { if (b._panningModel = "equalpower", !b.context.createGain) { b.context.createGain = b.context.createGainNode; var a = b.context.createBufferSource(); a.__proto__.start = a.__proto__.noteGrainOn, a.__proto__.stop = a.__proto__.noteOff, b._panningModel = 0 } }, b._unlock = function () { b._unlocked || (b.playEmptySound(), "running" == b.context.state && (document.removeEventListener("mousedown", b._unlock, !0), document.removeEventListener("touchend", b._unlock, !0), document.removeEventListener("touchstart", b._unlock, !0), b._unlocked = !0)) }, a.toString = function () { return "[WebAudioPlugin]" }, a._addPropsToClasses = function () { var a = this._soundInstanceClass; a.context = this.context, a._scratchBuffer = b._scratchBuffer, a.destinationNode = this.gainNode, a._panningModel = this._panningModel, this._loaderClass.context = this.context }, a._updateVolume = function () { var a = createjs.Sound._masterMute ? 0 : this._volume; a != this.gainNode.gain.value && (this.gainNode.gain.value = a) }, createjs.WebAudioPlugin = createjs.promote(WebAudioPlugin, "AbstractPlugin") }(), window.createjs = window.createjs || {}, function () { "use strict"; function HTMLAudioTagPool() { throw "HTMLAudioTagPool cannot be instantiated" } function a() { this._tags = [] } var b = HTMLAudioTagPool; b._tags = {}, b._tagPool = new a, b._tagUsed = {}, b.get = function (a) { var c = b._tags[a]; return null == c ? (c = b._tags[a] = b._tagPool.get(), c.src = a) : b._tagUsed[a] ? (c = b._tagPool.get(), c.src = a) : b._tagUsed[a] = !0, c }, b.set = function (a, c) { c == b._tags[a] ? b._tagUsed[a] = !1 : b._tagPool.set(c) }, b.remove = function (a) { var c = b._tags[a]; return null == c ? !1 : (b._tagPool.set(c), delete b._tags[a], delete b._tagUsed[a], !0) }, b.getDuration = function (a) { var c = b._tags[a]; return null != c && c.duration ? 1e3 * c.duration : 0 }, createjs.HTMLAudioTagPool = HTMLAudioTagPool; var c = a.prototype; c.constructor = a, c.get = function () { var a; return a = 0 == this._tags.length ? this._createTag() : this._tags.pop(), null == a.parentNode && document.body.appendChild(a), a }, c.set = function (a) { var b = createjs.indexOf(this._tags, a); -1 == b && (this._tags.src = null, this._tags.push(a)) }, c.toString = function () { return "[TagPool]" }, c._createTag = function () { var a = document.createElement("audio"); return a.autoplay = !1, a.preload = "none", a } }(), window.createjs = window.createjs || {}, function () { "use strict"; function HTMLAudioSoundInstance(a, b, c, d) { this.AbstractSoundInstance_constructor(a, b, c, d), this._audioSpriteStopTime = null, this._delayTimeoutId = null, this._endedHandler = createjs.proxy(this._handleSoundComplete, this), this._readyHandler = createjs.proxy(this._handleTagReady, this), this._stalledHandler = createjs.proxy(this._playFailed, this), this._audioSpriteEndHandler = createjs.proxy(this._handleAudioSpriteLoop, this), this._loopHandler = createjs.proxy(this._handleSoundComplete, this), c ? this._audioSpriteStopTime = .001 * (b + c) : this._duration = createjs.HTMLAudioTagPool.getDuration(this.src) } var a = createjs.extend(HTMLAudioSoundInstance, createjs.AbstractSoundInstance); a.setMasterVolume = function () { this._updateVolume() }, a.setMasterMute = function () { this._updateVolume() }, a.toString = function () { return "[HTMLAudioSoundInstance]" }, a._removeLooping = function () { null != this._playbackResource && (this._playbackResource.loop = !1, this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1)) }, a._addLooping = function () { null == this._playbackResource || this._audioSpriteStopTime || (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), this._playbackResource.loop = !0) }, a._handleCleanUp = function () { var a = this._playbackResource; if (null != a) { a.pause(), a.loop = !1, a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1), a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1), a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), a.removeEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1); try { a.currentTime = this._startTime } catch (b) { } createjs.HTMLAudioTagPool.set(this.src, a), this._playbackResource = null } }, a._beginPlaying = function (a) { return this._playbackResource = createjs.HTMLAudioTagPool.get(this.src), this.AbstractSoundInstance__beginPlaying(a) }, a._handleSoundReady = function () { if (4 !== this._playbackResource.readyState) { var a = this._playbackResource; return a.addEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1), a.addEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1), a.preload = "auto", void a.load() } this._updateVolume(), this._playbackResource.currentTime = .001 * (this._startTime + this._position), this._audioSpriteStopTime ? this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1) : (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), 0 != this._loop && (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), this._playbackResource.loop = !0)), this._playbackResource.play() }, a._handleTagReady = function () { this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1), this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1), this._handleSoundReady() }, a._pause = function () { this._playbackResource.pause() }, a._resume = function () { this._playbackResource.play() }, a._updateVolume = function () { if (null != this._playbackResource) { var a = this._muted || createjs.Sound._masterMute ? 0 : this._volume * createjs.Sound._masterVolume; a != this._playbackResource.volume && (this._playbackResource.volume = a) } }, a._calculateCurrentPosition = function () { return 1e3 * this._playbackResource.currentTime - this._startTime }, a._updatePosition = function () { this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1); try { this._playbackResource.currentTime = .001 * (this._position + this._startTime) } catch (a) { this._handleSetPositionSeek(null) } }, a._handleSetPositionSeek = function () { null != this._playbackResource && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1)) }, a._handleAudioSpriteLoop = function () { this._playbackResource.currentTime <= this._audioSpriteStopTime || (this._playbackResource.pause(), 0 == this._loop ? this._handleSoundComplete(null) : (this._position = 0, this._loop--, this._playbackResource.currentTime = .001 * this._startTime, this._paused || this._playbackResource.play(), this._sendEvent("loop"))) }, a._handleLoop = function () { 0 == this._loop && (this._playbackResource.loop = !1, this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1)) }, a._updateStartTime = function () { this._audioSpriteStopTime = .001 * (this._startTime + this._duration), this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1)) }, a._updateDuration = function () { this._audioSpriteStopTime = .001 * (this._startTime + this._duration), this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1)) }, a._setDurationFromSource = function () { this._duration = createjs.HTMLAudioTagPool.getDuration(this.src), this._playbackResource = null }, createjs.HTMLAudioSoundInstance = createjs.promote(HTMLAudioSoundInstance, "AbstractSoundInstance") }(), window.createjs = window.createjs || {}, function () { + "use strict"; function HTMLAudioPlugin() { this.AbstractPlugin_constructor(), this._capabilities = b._capabilities, this._loaderClass = createjs.SoundLoader, this._soundInstanceClass = createjs.HTMLAudioSoundInstance } var a = createjs.extend(HTMLAudioPlugin, createjs.AbstractPlugin), b = HTMLAudioPlugin; b.MAX_INSTANCES = 30, b._AUDIO_READY = "canplaythrough", b._AUDIO_ENDED = "ended", b._AUDIO_SEEKED = "seeked", b._AUDIO_STALLED = "stalled", b._TIME_UPDATE = "timeupdate", b._capabilities = null, b.isSupported = function () { return b._generateCapabilities(), null != b._capabilities }, b._generateCapabilities = function () { if (null == b._capabilities) { var a = document.createElement("audio"); if (null == a.canPlayType) return null; b._capabilities = { panning: !1, volume: !0, tracks: -1 }; for (var c = createjs.Sound.SUPPORTED_EXTENSIONS, d = createjs.Sound.EXTENSION_MAP, e = 0, f = c.length; f > e; e++) { var g = c[e], h = d[g] || g; b._capabilities[g] = "no" != a.canPlayType("audio/" + g) && "" != a.canPlayType("audio/" + g) || "no" != a.canPlayType("audio/" + h) && "" != a.canPlayType("audio/" + h) } } }, a.register = function (a) { var b = createjs.HTMLAudioTagPool.get(a.src), c = this.AbstractPlugin_register(a); return c.setTag(b), c }, a.removeSound = function (a) { this.AbstractPlugin_removeSound(a), createjs.HTMLAudioTagPool.remove(a) }, a.create = function (a, b, c) { var d = this.AbstractPlugin_create(a, b, c); return d.playbackResource = null, d }, a.toString = function () { return "[HTMLAudioPlugin]" }, a.setVolume = a.getVolume = a.setMute = null, createjs.HTMLAudioPlugin = createjs.promote(HTMLAudioPlugin, "AbstractPlugin") +}(); + +module.exports = window.createjs; \ No newline at end of file diff --git a/src/utils/plugins/stats-2d.js b/src/utils/plugins/stats-2d.js new file mode 100644 index 0000000..e525f33 --- /dev/null +++ b/src/utils/plugins/stats-2d.js @@ -0,0 +1,54 @@ +var FPS = FPS || {}; +FPS.time = 0; +FPS.FPS = 0; +FPS.showText = ""; +FPS.startFPS = function (stage,pos = {x : 0, y : 0}, app){ + FPS.app = app; + FPS.pos = pos; + FPS.shape = new createjs.Shape(); + FPS.shape.graphics.beginFill("#2dffda").drawRect(pos.x, pos.y, 140, 50); + FPS.shape.alpha = .5; + FPS.txt = new createjs.Text("COUNT:", "24px Arial", "#ffffff"); + FPS.txt.x = 20; + FPS.txt.y = pos.y+10; + FPS.container = new createjs.Container(); + if (FPS.app.debug) { + stage.addChild(FPS.container); + } + FPS.container.addChild(FPS.shape) + FPS.container.addChild(FPS.txt); + FPS.container.cache(pos.x, pos.y, 140,50); + createjs.Ticker.addEventListener("tick", FPS.TickerFPS); + +// setInterval(FPS.TickerFPS,18) +} +FPS.TickerFPS = function (event) +{ + FPS.date = new Date(); + FPS.currentTime = FPS.date.getTime(); + if(FPS.time!=0) + { + FPS.FPS = Math.ceil(1000/(FPS.currentTime - FPS.time)); + } + FPS.time = FPS.currentTime; + FPS.txt.text = "FPS: "+FPS.FPS + "\n" + FPS.showText; + FPS.container.cache(FPS.pos.x, FPS.pos.y, 140,50); +} +FPS.startFPS2 = function (stage) +{ + FPS.txt = document.getElementById("fps"); + createjs.Ticker.addEventListener("tick", FPS.TickerFPS2); +} +FPS.TickerFPS2 = function (event) +{ + FPS.date = new Date(); + FPS.currentTime = FPS.date.getTime(); + if(FPS.time!=0) + { + FPS.FPS = Math.ceil(1000/(FPS.currentTime - FPS.time)); + } + FPS.time = FPS.currentTime; + FPS.txt.innerText = "FPS: "+FPS.FPS; +} + +module.exports = FPS; \ No newline at end of file diff --git a/src/utils/plugins/stats-3d.min.js b/src/utils/plugins/stats-3d.min.js new file mode 100644 index 0000000..ef000cf --- /dev/null +++ b/src/utils/plugins/stats-3d.min.js @@ -0,0 +1,5 @@ +// stats.js - http://github.com/mrdoob/stats.js +var Stats=function(){function h(a){c.appendChild(a.dom);return a}function k(a){for(var d=0;de+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}}; +Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f, +v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats);