Я играю в лабиринт.Персонаж не может пройти сквозь стены лабиринта (из-за обнаружения столкновения между растровыми данными персонажа и bmd со стен).Когда персонаж достигает двери, должен появиться следующий уровень / рамка с новым лабиринтом (новые границы)
Для следующего уровня (следующего кадра) я создал новый лабиринт с разными стенами.Но растровые данные из первого лабиринта все еще «активны».Поэтому, несмотря на то, что появился новый лабиринт, растровые данные с предыдущих стен невидимы, но все же нарисованы на сцене.
Мой вопрос к вам: я хочу изменить границы / лабиринт каждый кадр, как я могу удалить предыдущие растровые данные, чтобы персонаж не проходил границы следующего лабиринта?Или можно сделать массив из разных «границ»?
stop();
var isRight:Boolean=false;
var isLeft:Boolean=false;
var isUp:Boolean=false;
var isDown:Boolean=false;
var speed:int = 10;
var mazeRect:Rectangle = bounds.getBounds(this);
var charRect:Rectangle = char.getBounds(this);
var boundsBmpData = new BitmapData(mazeRect.width, mazeRect.height, true, 0);
var charBmpData = new BitmapData(charRect.width, charRect.height, true, 0);
boundsBmpData.draw(bounds);
charBmpData.draw(char);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.ENTER_FRAME, moving);
function keyPressed(event:KeyboardEvent):void
{
if(event.keyCode==39){
isRight=true}
if(event.keyCode==37){
isLeft=true}
if(event.keyCode==38){
isUp=true}
if(event.keyCode==40){
isDown=true}
}
function keyReleased(event:KeyboardEvent)
{
if(event.keyCode==39){
isRight=false}
if(event.keyCode==37){
isLeft=false}
if(event.keyCode==38){
isUp=false}
if(event.keyCode==40){
isDown=false}
}
function moving(e: Event): void
{
var newx: Number = char.x - (isLeft ? speed : 0) + (isRight ? speed : 0);
var newy: Number = char.y - (isUp ? speed : 0) + (isDown ? speed : 0);
if(!boundsBmpData.hitTest(new Point(bounds.x, bounds.y),
255,
charBmpData,
new Point(newx, newy),
255))
{
char.x = newx;
char.y = newy;
}
if(char.hitTestObject(door))
{
onHitTest();
}
}
function onHitTest() : void
{
nextFrame();
}