Как можно лучше понять сборку мусора в html5? - PullRequest
0 голосов
/ 28 марта 2019

При работе с 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...