Hi.
Here is my suggestion. Feel free to fix or improve in any way you want.
Preview:

Code:
var meterPower = 0.005;
var playerPower = 0.02;
var totalEnergy = 1 - meterPower;
var down = false;
var keys = {};
// keys used to raise the bar
var keyCodes =
{
space:32,
j: 74,
k: 75
};
// press these keys in sequence to raise the bar
var keysSequence =
[
keyCodes.j,
keyCodes.k
];
var count = 0;
function resizeMeter(force)
{
totalEnergy += force;
if (totalEnergy < 0)
totalEnergy = 0;
else if (totalEnergy > 1)
totalEnergy = 1;
}
function loop(e)
{
resizeMeter(-meterPower);
this.meter.top.scaleX = totalEnergy;
if (totalEnergy >= 1 - meterPower)
{
this.gotoAndStop("win");
createjs.Ticker.off("tick", loop);
}
}
function hitHandler(e)
{
resizeMeter(playerPower);
}
function keyDown(e)
{
if(down)
return;
down = true;
if (e.keyCode == keysSequence[count % keysSequence.length])
{
resizeMeter(playerPower);
count++;
}
else
count = 0;
}
function keyUp(e)
{
down = false;
}
this.startGame = function()
{
this.stop();
this.hitButton.on("click", hitHandler.bind(this));
createjs.Ticker.on("tick", loop.bind(this));
document.addEventListener("keydown", keyDown, false);
document.addEventListener("keyup", keyUp, false);
}
this.startGame();
FLA download:
animate_cc_html5_meter.zip - Google Drive
Regards,
JC
EDIT: As suggested by @BallsDeepWeep, I've updated the FLA and code to add support for:
- key presses;
- key repetition prevention ("turbo" mode);
- keys sequence (e.g. press j, k, j, k...);
- fake loader.