"Front end" uses JavaScript to achieve the effect of a ball pool

Source: Internet
Author: User
Tags cloudflare

Ballpool

Using JavaScript to achieve the effect of a ball pool, the implementation of the effect is as follows:

Motion diagram:

HTML code:

<! DOCTYPE html>

  

CSS code:

body {  margin:0;  Overflow:hidden;  Color:rgba (255,255,255,.5);  font-family:arial;  Font-size:3em;  font-family: ' Young circle ';  Color: #fff;  text-shadow:1px 1px 10px #000;  Position:relative;} Canvas {  background: #dbdbdb;}. Instructions {  position:absolute;  width:100%;} #title {  display:inline-block;;  border:2px solid transparent;  box-shadow:1px 1px 20px #000;  width:100%;  Margin:auto;  padding:  3px 0 3px 0;  Text-align:center;  Background:inherit;  opacity:0.8;  position:fixed;  Cursor:none;  border-radius:0 0 20px 20px;}

  

JavaScript code:

Initialize//*******************const userdefined = {gravity:10, friction:., ballsize:65, wall Friction:. 5, distribution:10, spread:10}const colours = [' 0xf20053 ', ' 0xfffc00 ', ' 0x0070ff ', ' 0x00ffff ', ' 0x00f F00 ', ' 0xffb2aa ']const colourslength = colours.length;const Halfspread = Userdefined.spread/2;var mouse = {X:0,y:0};var Oldmouse = {X:0,y:0};var balls = [];//*******************//image//*******************const pixeltexture = PIXI. Texture.fromimage (' Data:image/png;base64, Ivborw0kggoaaaansuheugaaadiaaaaycayaaaaep4ixaaaagxrfwhrtb2z0d2fyzqbbzg9izsbjbwfnzvjlywr5ccllpaaaayzpvfh0we1momnvbs5hzg9iz s54bxaaaaaaadw/ehbhy2tldcbizwdpbj0i77u/iibpzd0ivzvnme1wq2voauh6cmvtek5uy3pryzlkij8+ Idx4onhtcg1ldgegeg1sbnm6ed0iywrvymu6bnm6bwv0ys8iihg6eg1wdgs9ikfkb2jlifhnucbdb3jliduuni1jmdy3idc5lje1nzc0nywgmjaxns8wmy8zm C0ymzo0mdo0miagicagicagij4gphjkzjpsreygeg1sbnm6cmrmpsjodhrwoi8vd3d3lnczlm9yzy8xotk5lzaylziylxjkzi1zew50yxgtbnmjij4gphjkzj Pezxnjcmlwdglvbibyzgy6ywjvdxq9iiigeg1sbnm6eg1wpsjodhrwoi8vbnmuywrvymuuy29tl3hhcc8xljaviib4bwxuczp4bxbntt0iahr0cdovl25zlmfkb2jllmnvbs94yxavms4wl21tlyigeg1sbnm 6c3rszwy9imh0dha6ly9ucy5hzg9izs5jb20vegfwlzeumc9zvhlwzs9szxnvdxjjzvjlzimiihhtcdpdcmvhdg9yvg9vbd0iqwrvymugughvdg9zag9wiend Idiwmtugkfdpbmrvd3mpiib4bxbnttpjbnn0yw5jzulepsj4bxauawlkoji5ndk2murfnuu4mjexrtdcrta2oufemeffnui1rtzdiib4bxbnttpeb2n1bwvud Elepsj4bxauzglkoji5ndk2murgnuu4mjexrtdcrta2oufemeffnui1rtzdij4gphhtce1nokrlcml2zwrgcm9tihn0umvmomluc3rhbmnlsuq9inhtcc5paw Q6mjk0otyxrem1rtgymtffn0jfmdy5quqwquu1qjvfnkmiihn0umvmomrvy3vtzw50suq9inhtcc5kawq6mjk0otyxreq1rtgymtffn0jfmdy5quqwquu1qjv fnkmilz4gpc9yzgy6rgvzy3jpchrpb24+idwvcmrmoljerj4gpc94onhtcg1ldge+idw/ ehbhy2tldcblbmq9iniipz6bdvmyaaassuleqvr42rxaaaxd11xee5/ h3veexzy9wtoou6fn1liputoktgqbzidqd1ckcgm18ashlckgqgvuiosqsqguiyocp0aneogfeuicvrgtviaccdpmsbedo4kdj8/2g+ 57dzjd3pvvw2vfm4skpy3t+vm8++45556z11rf+r611rk2xmiu9l/w3jrnxw5sro07f/hmh9q6ev9o/i25mfvb1s9nzpvzlq0hy85g61/s1/ 2nv5cvffuoo+593me4ndu7xzrl56rwyk/okggux7pwu+/kyofxe8sfgy6qm1vvd4fg88xh+dbiv3uozzrnosltwo7q7rq+hmzoxdgx2nh4cmz229e3zu/5z8xfvzednp0tmmrjfso7co7m3b21y7+8unll/ ujjnrhud8aaiivx2+lk1sakk+e5qtrks1hjtmhkljm53sm0rkiwtrjiw/he6urg7zuda76299qdj7dum/vxgeiboaxzzz/00oktvznor98/ gm4u8lnpthvn2skuhhglt1ik4+zkwwwxx0syrm8he0iwbdpi+0hrrjf9wzabqb9/vt+r/vq6g2/90y1bty85fp5tnqq32hzsmac+ u3xl6dohrafbbjehexlzms70nf5zuxqfjlcmhcez/rywbtayxrgcsmfgjrr+mridocahsttm+wahnmlyazk8rq2tpzcv3c8deoct/ 8jrvi2gvhts6g3nzp76k/ xl5q96edij3og9fgrafn0py4rcxayrwq2nshuydudkom4jzjjhia2ax56zgntggfdakohba9gpmfibwxjug7d1eutfxtz5u3+4c/e+/ luzcvx7zz7wyssnvzoadpe1tw0kzelzzuyhxu5mwdofqike7jz8lzksji/wcs9k7ui1b+zgbzjbspqilkgr/ cwciahh8t6atm6bni99omdgu1evwvldewthnut+fxhh7npfb535dyakc+losw+ eonnsz0dvped5ay4cmc2krsk6hrmal6j0khp0lewsj0dejnicrsdqgcw2aekau+yiubgbvoxkfkzptes0hut94ytldxoajilc2+ fmhrx84ftwms9/aevc4pkfoilcd/z5zx448/ljrw0go7kkksgbh4imhi2yl5dcfoztlbwozbflj1cd8kygx2tmojmwgzm/4lozjm+ ckghvtgbjgnngfkqrqumdylsasa+mdixbpoqmmv3e8f/md+37xw3zc5f+75rfllrphh3u0kkxj391mbjmnw3nnjyblt2ogiducphgq/ r1cquwjcwxzvfyithispytu+h4lpzgxiogjygcs06h5zcsorbbel3gdqeuxm/buug23gdx75ipazbdc/hc6s+trs0x/68h/ fxe1otntn2lglx7qjyohxirnro5csclydjmacdlwhkfmlimheubqa3g8jyqmsyw2mpo6t6bojxlhbca7le5gfugx0gkajcgfwrram4zs7ofxf9b /tsz7vsawoppp/34bw821u+yiygb/mkljleuefepl4ks4peln4pshxhqelzbkcgjgeay0vdo84u6exge4cu/gdeorj0t5ehxzlqmofp2pkv/ iaaucwbcrpqg5qap69+7eoh8+9/ueobf2dmv3bw6tvjqixxqp9tobqhkto8xuyl9lpjs48ksmdlihb+ sefqwfrkbeh3nrnov1iqfaogzutqowgi7tmoycira+uu2jq5a7sw5w1+8x7czizdoptki4rhup9w6gva+mbhstl3bkf5vjx/ h2lof8b6dacbqvfljsyjrdd0hpbkbr2sfgeodcjy4xjgykag4wvmelxfqacliyukeqpd0muynebqmgxijid/eceynxgtqs2/haky9oa+ lho0cgd1uydlmi0sxzvzcgww59clxd/hr/bp1+ Saqyejv0yyoeifklcugk5h1klwlfunguo4kvakkdj6yyeqw2wqqidkrluodg1wzjlvvoresokkktvtfijbiijmmvbptozewf9mowpwhlexlmyagofo162srvx lrfrlahm4em1adlf6ifjafifm5qhbcdzfvcctqbrdkt7tcjmo5jrybyv3oaqj71lukj2hqi62gas3twu5jcikl6uu0+ smsannxzva6sizy90ni7zycxvy7ep7mzmf/4z5+kgddi57mxcdbm9xakl1k6hk5gummktbjqww3k+ Hnhiqsjfcea3aoa0sntypgnwyig6nlhozfqnf+ocujduuaywuwkxhhpbh/vbfyqbztbv5xi3ph3ol78mltvfieaxfhfbamto5sowf0yghljepl+ Jiluqzitlitn1qrlj3eoovg6qvejipbobywrnqkcqclpmi5t2x5xqsjj9fklvboragdqrj57070rpvpihr3zu9biaatxdinmjwsd2xkcmlfenncecrro5cysj syj7wbjbcjbv9lrnubridy3b1mz1gzk/uccw7uji06k6nphqviihq8tn7stamojvserchazxwm/ S78ytk5ovztvatv2qlozojblg2fmjqemzuumsqvi0xq0mokh1pyatwryyvqsbawx5vm2fosjkdcclmyfyschotvguyciwc9h9gwbeoo4pjmc8oqi41e3gt1ei k8jkaj2/mzp06+a+ 3pdswfuoy8uzxkgjmrejskm9zhchenghwp0dc8cijrfj4t2ug9osdcvkhhqsfepuvds6gmhvyxy8puggh2khqjmehejkssziqygcwph8p+ ireiux4fel0vbjmkynos3drunop+mckxihxpkvuymsm5ogwvo0bpovioet8oxlqrtzztlnpb4hggxgepwcr3bmplfy26kqtjtigzj/ Mai8bl87lv/k0qhqejnitmrezacoy54nkjqqo3wabokmnlgnmvvuouogn0gq30jwof5i+qclgof9vmk9wt0dxzqxjdx2xbnisnyr7y1he0qyrg /ujjgkbnyye3yc35iviznt4jnrsnthbkuqxkcimxo6wy6libqfesds9s+i3211kiihfjy1musd5i76+ hdljarqpiltlssipmzxhlbows2wciqz9mpskgprgtageuahiw45p3iczibwqn6m0tty71p0g9gjxrwalazryamyxjhrwjqtcutaxi3+ gxzuivjjvtfvpscspsrh6x1ljxaukxvmiymsal2txjogkba+nu7koy5/ Yja2axyertjrzzrj6scxgumqrqehyqia4imtbrfzyldmdxkhsvliolmezciehdnlzoyo4g7orknvlqdvpc02gewqo8zbpbzoquwekkahwbvog6et19q4gi6furvj6d5aqvyflioylgsbewbmpmhylang3sxn2bmawhadol40jla4kog/lcpmmdjmnu5pcuxq+cjzkf/ xutu9rksqsb3kgqefov+rytzfnu4pq1a2m4sxz+vfs0vhgotgxgzxhferzeifxbmtgvf0zvm+ dry7itkwhq1dz1k1jkc3s0uovnfqtvc4frt6c069s2srzem5pr212uaajs+jsr0vfsgecr3lm4cgsyjlnsqtqfgfm5mlr6m00wb1m+ sg2vqtgkf68l91gniwqnjowkejfoa4c1i/clwbnfecjgoczkf0kpgzjwtbqrei1c83qee/ggf/ fwujdiexhomzugkvsuvhqoucbhnl5gudrtytl2xhbwjlefsiktjkdhbgq4a8ubyyhs7tqcrjhriclhip2gxeqmjqh+ Azm29oilm0qumfnjhdgieqmzgvyouk5ruzuvs6wvsep5ziznairbbsxdgqi2jji01q2jwqu5iqlenyrvycmhugdsfkfhpxhsiexaei37wauog5iw2nae8quup /deuhceeiev6ujdjqkb5f42a03n84io9wgvgt80zmmwoo1uuvndxyemj5uopyhcspesawfb1kfmeaeteobl9u/ sbwteo8bmpi0eg0rnbvh1ie5iyqwzgknobvpbnw1ohae3wtfvcin9uamrabw+ganqm8q2aofyxxlw7dkyxscg6+ Tmbsv2x1cq5feaqv4u7n27gzfhqwngxyb1u44ojkpm0fhrs50bey4z2csylbjiqrmvmjletmolpllqvedrsjttjcedosx8dmjsrp1g0pdoatrvffthlh5rmto 0oyoogj3iyrkm27fnp0qm6xq8bojrgwwlapbjhag4gc9eprrmspljcxrdkxp2ef4t+klkh7iy8c/ Yxancoszwchfc2tzrbhludmidwg7hoacrjr/4gridzzbdgrlwg0cxdu4+krpo2rlr7+gly0svqqwoudyifdxojou4wqxk9qkuhxhrz1kco4kikdanst06+5rgwlsjdkiayhkljyck1rojoutnbolgk4ksfash1dbqjiwxkzis2puwnvzr+v01zhs+ vmp3vp5uvzu3bl3u7c787wgw+jxws0yovofq0naob+lw8cr1l0xdiq+sxs9hfg1avpabugjodjzpjpa0qdg7vsarftulvk+ fwsvtjmxwid6qgcjjapcqslv9s7zysbf/4lv/hsojyrrlyx7hytdnuhr28uhcl6+ td69wsflf8jhybp6putq0vpqu2tg1ygkfflashjcbnkbclmg09fyqwcxbnxpzyn0msg+ Idrqpxb8mgcqgwlvvawydjdwmgiaaw1h1d9vndj3zunhq4o5dj8ui81ekt1zhfxidjpbglfye8sgyb6aledfhllbhx42q4d2kfivamhkp5ve9hugyqjyaxtfp 2lizydnhrhe9ocmcstledwooqgqp8zwim6zbzn7n9dfwzkwlkxtzc3u/sn1+5xun8atrkwuphfnvb4kvbqeewb+ lsiv2yni8zwqpohixkqtijtpzn1hpk2ot/mzk6ztk0kralylphdbptmdivwljlikvpvxbiwjylyzt/x0zlaly8uvlmzo77yv3pvalv+tsa/ c6zndznzuxfhz3/p7sxbopaiuze0kcp7mgdajo0qc1ul81wntzhqwqnllqisgdgsfuesfguik+ugywruu/ zyemrtfq0axz8dk0yxrfchhtiprbcofz09am14povpxjt73v0b+pjxjt5yn8/ 61vpfrfdjd8bacnemwsj804hy9wb9hsexmfxrvvodfuar1cgxxuxmnjvj8afuqh0ate43rvcmkdg8k7jzmomij03gqy1zwfenfbxq6ull+ 55dahpv6e2z94+ac+selfdl5/wxeeonl4els1p++m9hmi1epq8iyivgkehy969fezsw6dyqkm81izplkd+5xvuzhpc1sotu/1l/zcrkgkjgqaj9yys4epfcbk/chaanv84m+986bbdv9qj9727tm/gfz4tscp/8fmtme/ahodevmpeakzu+ zpjsqezfjwxlkzezzmrb7maq1rggw0wi5b0uhrrjikiwon6lamijbjkyqsqwe4ewfczk3bso9nn8/9wufvefdhqelnp9rd0dontu57/pc3/ 3lt9mx9nzkpuxrloz0msfvplcyds1xotdblmlgp0jmsjeowx3sbjpg00letuos/pfsthblbzpf9dki/qn4mronqznbl5++9/xn/ nd29kb6lp7qnxnxh7vc/fenl3w73u1vmtxrxkevxgblwo0c+dsuk8ck8h4honpv4omo0dptzyy+ gfx9utiltak8f03dzwi09knauqd5uyc13axxl8tzc4mfuvu8td09ntv/dc/btl79qhv2fpx5avnludxywdm3nc0gw5k7mvjoekbrqg8xv+ cxdcp09jedmsk/iy5h8oscmzo/0wiphmdhsgfo5bk4cdfnq5zvvupg237jxpvf+19t0znvzzqcu4n//9z/ vund2lc9vmpm5e3bldnlelhf5pmxg7utsjklmjvttmooskrmww78mkaou5fjttyxii6rfepbv1cq2ucw/up5d7/nygym3x/6xfknm/nltnw8++ k8pov7/1s3b5+/odqctrvhemdhuh45hinramxlq0bapwthkiq1ctevbdw1glgz6vszph9m157o/+5kpf/yjh+wbqm/5a07ppf3etn3uhzt/ 8cwniyr3iqhmu6iko6ga9hslic2cqhrias1fcelpitxy7/ckh9dgpr99bseji7uv/btdew88mb+ w6yf9fs1dl5rjx753lfrno5tqchtvbfxwppclimxweh4wc+2idsvg9tq01qcc12sqfwvbewxxnmsfgw4gr/yfuoe7+/ yfxcvk8i2v438fgaceyr+8q5rpeqaaaabjru5erkjggg== ');//****************Window size//*******************var windowdimensions = {width:window.innerWidth, height:window.innerheight}//******* Set pixi//*******************const app = new Pixi. Application (Windowdimensions.width, Windowdimensions.height, {antialias:true, transparent:true});d ocument.body.a Ppendchild (App.view);//*******************//dom//*******************$ (window). On (' Resize ', function () {Windowdim Ensions = {width:window.innerWidth, height:window.innerHeight} app.renderer.resize (Windowdimensions.width,  Windowdimensions.height); }); $ (window). On (' MouseMove touchmove ', function (e) {mouse = {x:e.originalevent.touches? e.originalevent.touches[0 ].pagex:e.pagex, y:e.originalevent.touches? E.originalevent.touches[0].pagey:e.pagey,} for (Let i = 0, length = math.random () *userdefined.distribution; i < Length i++) {Createball (mouse.x, Mouse.y, (mouse.x-oldmouse.x) *math.random (), (mouse.y-oldMOUSE.Y) *math.random ());  } Oldmouse = {x:mouse.x, y:mouse.y}});//*******************//Create Ball//*******************function Createball (x, Y, XV, YV) {var ball = new PIXI.    Sprite (pixeltexture);    ball.x = x;    Ball.y = y;    Ball.width = Ball.height = Userdefined.ballsize;    BALL.XV = XV + (-halfspread+math.random () *userdefined.spread);    Ball.yv = YV + (-halfspread+math.random () *userdefined.spread);    Ball.tint = Colours[math.floor (Math.random () *colourslength)];      Balls.push (ball);    App.stage.addChild (ball); }//*******************//Start window//*******************settimeout (function () {for "Let i = 0, length = Userdefined.distrib ution*100; i < length; i++) {Createball (Math.random () *windowdimensions.width, Math.random () * (-windowdimensions.height), 5 +math.random () *10, -5+math.random () *10)}}, 2500);//******************//Ball Motion Cycle//****************** (function lo OP () {for (Let i = 0, length = balls.length; i < lenGth    i++) {//Mobile balls[i].x + = BALLS[I].XV;         Balls[i].y + = balls[i].yv+userdefined.gravity;    BALLS[I].XV *= userdefined.friction by friction deceleration;        Balls[i].yv *= userdefined.friction;          Prohibit out-of-bounds if (balls[i].x <= 0) {balls[i].x = 0; } else if (balls[i].x >= windowdimensions.width-userdefined.ballsize) {balls[i].x = Windowdimensions.width-userde          Fined.ballsize;       }//Bounce off if (balls[i].x <= 0 | | balls[i].x >= windowdimensions.width-userdefined.ballsize) {//Invert            Balls[i].xv*=-1;    Deceleration balls[i].xv *= userdefined.wallfriction;  }}//Clear for (Let i = 0, length = balls.length; i < length; i++) {if (balls[i].y >= windowdimensions.height)       {App.stage.removeChild (balls[i]);      Balls.splice (i, 1);     length--; }}//Run Requestanimationframe (loop) again;}) ();

  

"Front end" uses JavaScript to achieve the effect of a ball pool

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.