Сделал, работает отлично! После этого сделал столкновение справа и слева, все гуд, но не получается нормально сделать столкновение с платформой сверху, при прыжке - прыжок тормозится, но персонаж всё равно головой проходит сквозь платформу, пробовал исправить тем же приемом, что Вы посоветовали выше - не помогает. Что можете подсказать?
Вот код на данный момент:

Код AS1/AS2:
var boxes = [];
addBox = function (obj) {
boxes.push(obj);
};
prityazhenie = 20;
humanstep = 15;
grav = 3; //замедление скорости прыжка, направленной вверх
jumptime = 0;
humanjump = false;
humanreversed = false;
jumpstep = 25;
//движение вправо и влево
function Movement() {
if (Key.isDown(key.RIGHT)) {
human._x += humanstep;
human._xscale = 40;
human.gotoAndPlay(1);
humanreversed = false;
} else if (Key.isDown(key.LEFT)) {
human._x -= humanstep;
human._xscale = -40;
human.gotoAndPlay(1);
humanreversed = true;
} else {
human.gotoAndPlay(3);
}
}
checkHitPlatform = function () {
var i = boxes.length;
while (i--) {
var curB = boxes[i];
if (curB.hitTest(human.p4)) {
//контакт ног персонажа с платформой
prityazhenie = 0;
upact = false;
jumptime = 0;
jumpstep = 40;
if (humanjump == true) {
humanjump = false;
}
if (!curB.hitTest(human.p4)) {
while (!curB.hitTest(human.p4)) {
human._y += 0.1;
}
}
if (curB.hitTest(human.p4)) {
while (curB.hitTest(human.p4)) {
human._y -= 0.1;
}
}
} else {
prityazhenie = 20;
}
if (curB.hitTest(human.p3)) {
//контакт c платформой справа
human._x -= humanstep;
}
if (curB.hitTest(human.p3) && humanreversed == true) {
//контакт с платформой слева
human._x += humanstep*2;
}
if (curB.hitTest(human.p2)) {
//контакт головы персонажа с платформой
upact = true;
hero._y = curB._y-curB._height/2-hhy;
}
}
};
onEnterFrame = function () {
human._y += prityazhenie; //притяжение вниз
checkHitPlatform();
Movement();
//----------- прыжок
if (((Key.isDown(key.UP) && Key.isDown(key.RIGHT)) || (Key.isDown(key.LEFT) && Key.isDown(key.UP)) || (Key.isDown(key.UP))) && upact == false) {
humanjump = true;
} else {
humanjump = false;
}
if (humanjump == true && jumptime<5) {
human.gotoAndPlay(2);
human._y -= jumpstep;
jumptime += 1;
jumpstep -= grav;
}
//-----------
};