Как я могу заставить AS3 Var Loop двигаться быстрее по оси Y при повторении моего университетского проекта? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь заставить изображение машины сместиться вниз по экрану по оси Y, повторить и сопоставить с другим объектом

        //creates the new Car
        for (var c:int=0; c<8; c++){
            var newcar = new car();
            newcar.x = 55*c;
            newcar.y = 100;
            EntityArray.push(newcar);
            stage.addChild(newcar);
            trace("Car Created"+c)
            }

Как сделать так, чтобы оно совпало со следующим и удалить его с экрана

        //creates the new Frog
        for (var f:int=0; f<1; f++){
            var newfrog = new frog();
            newfrog.x = 210;
            newfrog.y = 498;
            EntityArray.push(newfrog);
            stage.addChild(newfrog);
            trace("Frog Created"+f)
            }

[изображение] [1] [1]: https://i.stack.imgur.com/Ihsfx.png

1 Ответ

0 голосов
/ 27 марта 2019

Хотя мне очень приятно слышать, что сегодня они все еще рассказывают вам о ActionScript в колледже, здесь довольно сложно дать вам совет, поскольку я еще не знаю, что они рассмотрели.Вообще говоря, вы могли бы реализовать это с помощью простого игрового цикла, который периодически запускается в самой простой форме:

  • проверяет ввод пользователя (в вашем случае, скорее всего, нажатие влево / вправо для перемещения лягушки)
  • обновить состояние игры (переместить машины и лягушек; проверить на столкновение)
  • нарисовать все на экране

Для создания периодического цикла Flash / ActionScript предлагаетмощное событие под названием ENTER_FRAME .После запуска он будет работать с частотой кадров фильма.Так что если вы установите свой фильм на 60fps, он будет выполнять функцию обратного вызова примерно каждые 17 мс.Я предполагаю, что ваши экземпляры Frog и Car расширяют класс Flash Sprite или MovieClip - так что обнаружение столкновений также довольно легко, поскольку вы можете использовать унаследованный метод hitTestObject () .Чтобы было немного проще, я бы порекомендовал вам не помещать ссылку на экземпляр frog внутри EntityArray.Лучше использовать глобальную ссылку.(Кроме того, вам не нужен цикл for, потому что есть только одна лягушка)

В качестве другого обозначения довольно часто имена классов начинаются с заглавной буквы.

private var newfrog:frog; // defines a class variable we can access anywhere inside our class

//Later on instantiate new cars and the frog:
for (var c:int=0; c<8; c++){
    var newcar = new car();
    newcar.x = 55*c;
    newcar.y = 100;
    EntityArray.push(newcar);
    stage.addChild(newcar);
}
newfrog = new frog();
newfrog.x = 210;
newfrog.y = 498;
stage.addChild(newfrog);

addEventListener(Event.ENTER_FRAME, loop); // register an ENTER_FRAME listener for the main game loop

private function loop(e:Event):void
{
    var tempCar:car;
    for(var a:int=0;a<EntityArray.length;a++)
    {
        tempCar=EntityArray[a]; // get a car from the EntityArray
        tempCar.y++; // move it down on screen
        if(tempCar.y>600) // if it's vertical position is greater than 600...
        {
            tempCar.y=0; // ...move it back to the top
        }
        if(newfrog.hitTestObject(tempCar)) // evaluates to true, if a car and the frog's bounding boxes overlap
        {
            trace("there's a collision!"); // do something
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...