flash钢琴自动弹奏之Windows Script实现版

来源:互联网 发布:gradle mac 编辑:程序博客网 时间:2024/04/28 11:36

flash钢琴,网上有很多,swf版,exe版都有。弹着挺有趣。就是难度高的,弹来弹去都比较难找到感觉,需要听听原曲或者让flash钢琴自动弹奏一下听听。

在windows平台因为有WScript组件,SendKeys方法,可以很容易实现。

// shift {+}// ctrl {^}// alt {%}var shell=WScript.CreateObject("WScript.Shell");//延时毫秒基准根据机器速度自行调整function delay(s){var k=0;for(var t=0;t<s;t++){for(var i=0;i<10000;i++){k++;}}}function activate(name){shell.AppActivate(name);}//flash钢琴所在程序窗体自行调整function onPiano(){WScript.Echo("打开flash钢琴窗口后再关闭我,然后立即点击钢琴窗体");activate("Adobe Flash Player 9");delay(1000);}function key(k){shell.SendKeys(k);}function play(k){key(k);}function musicNormal(m){var codes=m.split("");var oncekeys="";var state="";for(var i=0;i<codes.length;i++){switch(codes[i]){case "(":oncekeys="";state="oncekeys";break;case ")":state="";play(oncekeys);delay(250);break;//延时case "-":delay(250);break;//忽略字符case "\r":case "\n":case " ":case " ":break;default:if(state=="oncekeys"){oncekeys+=codes[i];}else{play(codes[i]);delay(250);}break;}}WScript.Echo("谢谢!");}onPiano();musicNormal("TU(Vf)hj(Uh)(Vf)h(Xj)-(Uc)egece(Tg)(Se)(Ta)df(Sd)(Ta)d(Vf)-(Sh)ehijl(cR)(aQ)(Rb)fi(Qc)(bR)dV-(QF)cfgh(Vc)(Ud)bdfhgfc-(Uc)cfgJTU(fv)hj(hU)(fV)h(jX)-(cU)egece(gT)(eS)(aT)df(Sd)(aT)d(Vf)-(Sh)ehijl(cR)(aQ)(Rb)fi(Qc)(bR)dV-(Wf)ca(cx)(fV)gfc(vd)ut-(ub)-q-(tf)cfghj----");

把代码保存为play.js,关联js文件以WScript解释执行,即可听到“天空之城”的开头部分。

注意现仅支持含26字符以及()-三个符号的曲谱。有兴趣的可以自己扩展,很简单。