При работе с html5 я пытался написать игру на холсте, но однажды у меня открылась анимация на 5-10 минут, сбор мусора стал настолько частым, что я не мог играть в игру, потому что весьхолст начал бы полностью глючить.
Я использую ezpz.js @ ezpzjs.org.ezpz.js пытается воссоздать магию кодекульптора, но кодскульптор может запускаться только во всплывающем окне.
Это не та же программа, но в принципе она очень похожа с большим количеством перемещающихся объектов.
Видно в действии здесь: http://www.ezpzjs.org/PicExplore.html
<script>
// var load;
var ww = "background.jpg";
var yy = "cards_jfitz.png";
ImageLoad(yy);
ImageLoad(ww);
var Pos = [1493, 675];
var XVel = 0;
var YVel = 0;
// name, width, height
canvas("myCanvas", 500, 500);
// Function From Timer
function MadAlerts()
{
// name, loc, x-Cen-Src, Y-Cen-Src,widnip,htnip, x placement, y place, wid of place, ht of place, roatation
canvasComplexImage("myCanvas", ww, Pos[0], Pos[1], 500, 500, 250, 250, 500, 500, 0);
canvasComplexImage("myCanvas", yy, 36, 48, 72, 96, 250, 250, 72, 96, 0);
Pos[0] = Pos[0] + XVel;
Pos[1] = Pos[1] + YVel;
}
window.onkeydown = KeydownControl;
window.onkeyup = KeyupControl;
// Keydown Handler
function KeydownControl(e)
{
if (KeyFinder(e.keyCode) == "Right")
{
XVel = 4;
}
if (KeyFinder(e.keyCode) == "Left")
{
XVel = -4;
}
if (KeyFinder(e.keyCode) == "Up")
{
YVel = -4;
}
if (KeyFinder(e.keyCode) == "Down")
{
YVel = 4;
}
}
// Keyup Handler
function KeyupControl(e)
{
if (KeyFinder(e.keyCode) == "Right")
{
if (XVel == -4)
{
XVel = -4;
}
else
{
XVel = 0;
}
}
if (KeyFinder(e.keyCode) == "Left")
{
if (XVel == 4)
{
XVel = 4;
}
else
{
XVel = 0;
}
}
if (KeyFinder(e.keyCode) == "Up")
{
if (YVel == 4)
{
YVel == 4;
}
else
{
YVel = 0;
}
}
if (KeyFinder(e.keyCode) == "Down")
{
if (YVel == -4)
{
YVel = -4;
}
else
{
YVel = 0;
}
}
}
// Timer Name, Timer Var, Incremental (similar to codeskulptor), function to call
TimerInterval("MyTimer", "TimerVar", 15, MadAlerts);