Este es un ejemplo muy sencillo pero funciona:
Código :
//---Crear el héroe
var heroe:Sprite = new Sprite();
heroe.mouseEnabled = false;
with(heroe.graphics){
beginFill(0xFF0000, 1);
drawRect(0, 0, 50, 50);
}
//---Crear el bloque
var bloque:Sprite = new Sprite();
bloque.mouseEnabled = false;
with(bloque.graphics){
beginFill(0x00FF00, 1);
drawRect(0, 0, 50, 400);
}
bloque.x = 400;
//---Acciones del heroe
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveHeroe);
function moveHeroe(evt:KeyboardEvent):void{
//trace(evt.keyCode);
switch(evt.keyCode){
case 37:
heroe.x -= 5;
break;
case 38:
heroe.y -= 5;
break;
case 39:
heroe.x += 5;
break;
case 40:
heroe.y += 5;
break;
}
}
heroe.addEventListener(Event.ENTER_FRAME, checkColumn);
function checkColumn(evt:Event):void{
if(heroe.hitTestObject(bloque)){
trace("HITTTTTT");
}
}
//---Añadir a la escena
addChild(bloque).name = "bloque";
addChild(heroe).name = "heroe";
Lo más probable es que veo que tienes una condición chequeando si hay una colisión entre el héroe y un objeto asignado a una variable de nombre bloque, pero dices que tienes varios bloques dentro del movie juego, te recomiendo que dentro de juego crees un movie llamado pared y dentro de este vayas creando dinamicamente bloques depende de la forma que quieras darle a las paredes, por ejemplo:
Código :
//---Crear el héroe
var heroe:Sprite = new Sprite();
heroe.mouseEnabled = false;
with(heroe.graphics){
beginFill(0xFF0000, 1);
drawRect(0, 0, 50, 50);
}
//---Crear la pared
var pared:Sprite = new Sprite();
pared.mouseEnabled = false;
var block:Sprite
var i:uint;
for(i = 0; i < 10; i++){
block = new bloque;
block.x = Math.round(Math.random()*stage.stageWidth);
block.y = Math.round(Math.random()*stage.stageHeight);
pared.addChild(block).name = "block"+i;
}
//---Acciones del heroe
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveHeroe);
function moveHeroe(evt:KeyboardEvent):void{
//trace(evt.keyCode);
switch(evt.keyCode){
case 37:
heroe.x -= 5;
break;
case 38:
heroe.y -= 5;
break;
case 39:
heroe.x += 5;
break;
case 40:
heroe.y += 5;
break;
}
}
heroe.addEventListener(Event.ENTER_FRAME, checkColumn);
function checkColumn(evt:Event):void{
if(pared.hitTestPoint(heroe.x, heroe.y, true) || pared.hitTestPoint(heroe.x+heroe.width, heroe.y, true) || pared.hitTestPoint(heroe.x+heroe.width, heroe.y+heroe.height, true) || pared.hitTestPoint(heroe.x, heroe.y+heroe.height, true)){
trace("colisión");
heroe.removeEventListener(Event.ENTER_FRAME, checkColumn);
}
}
//---Añadir a la escena
addChild(pared).name = "bloque";
addChild(heroe).name = "heroe";
En el ejemplo los bloques de la pared se crean aleatorios, y se chequea un hitTestPoint con las cuatro esquinas del heroe. Po supuesto hay un MovieClip en la bilbioteca exportado para action script con nombre de clase bloque y perteneciente a la clase flash.display.Sprite, de lo contrario el siguiente código no funcionaría:
Código :
block = new bloque;
Ojalá te haya servido de algo