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字符以及()-三个符号的曲谱。有兴趣的可以自己扩展,很简单。