Реализация фроггера со вспышкой - PullRequest
1 голос
/ 04 мая 2009

Для начала: я работаю с Flash CS3 и Actionscript 2.0

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

Для тех из вас, кто не знает frogger: http://www.actionscript.org/showMovie.php?id=1157,, но я не использую журналы.

Большая проблема в том, что у меня есть 3 машины, все из которых являются клипами в библиотеке, я не буду ставить их на сцену. Несколько экземпляров должны появиться одновременно. Эти машины должны двигаться в обоих направлениях, и все 3 машины должны появиться на всех полосах (у меня 4 полосы) Конечно, 1 полоса движения имеет только 1 направление.

Я могу использовать hitTest(), чтобы увидеть, попала ли моя лягушка в одну из машин, но мне нужно сделать ее реалистичной, то есть я не могу жестко указать количество машин на каждой полосе.

Я тоже не могу найти, как вращать видеоклип вокруг его центра ...

Ответы [ 2 ]

2 голосов
/ 04 мая 2009

Ну, есть пара вещей, которые я могу предложить.

Для автомобилей создайте каждый автомобиль в Библиотеке как отдельный объект (не ставьте их на сцену). Когда вам нужно, чтобы он появился на экране, используйте attachMovie (), чтобы создать экземпляр автомобиля, который вы хотите.

Чтобы заставить их смотреть в разные стороны (я полагаю, вам просто нужно повернуть налево и направо), вы можете создать 2 копии каждого автомобиля в библиотеке, по одному на каждое направление. Или, я думаю, если вы установите значение xScale равным -100%, я думаю, что оно перевернет его по горизонтали, чтобы вы могли использовать один и тот же экземпляр библиотеки для обоих. Однако, вероятно, было бы легче иметь дело, если бы у вас было отдельные экземпляры Библиотеки для каждого направления, вместо того, чтобы делать повороты на одном.

1 голос
/ 04 мая 2009

чтобы ответить на ваш вопрос о вращении, видеоклипы вращаются вокруг своей точки регистрации, а не вокруг их визуального центра. Поэтому, когда вы создаете свои клипы, убедитесь, что перекрестие на экране редактирования символов отображается в центре. Перекрестие является точкой регистрации, которая в основном определяет, где x: 0, y: 0 находится в клипе.

Похоже, ваш вопрос на самом деле о том, как использовать hitTest, чтобы увидеть, попала ли лягушка в какую-либо из машин, независимо от того, какая из них находится на сцене и т. Д. Поэтому я хотел бы создать класс для автомобиль со статическим членом, который может быть указателем на лягушку, и затем иметь класс, проверяющий, поражает ли он лягушку.

Итак, для начала:

public class Car extends MovieClip{     
    public static var frog:MovieClip;
    private var interval;
    public function Car(){
        super();
        interval = setInterval(checkHit,500);
    }
    private function checkHit(){
            if(this.hitTest(frog)){
            trace("the frog hit the car");
            clearInterval(interval);
            //do what you need to do when the frog gets hit 
        }
    }
}

Для каждого отдельного автомобиля вы можете расширить класс автомобиля:

class Truck extends Car{
    public function Truck(){
        super();
    }
}

class Volkswagen extends Car{
    public function Volkswagen(){
        super();
    }
}

class Bus extends Car{
    public function Bus(){
        super();
    }
}

После создания отдельных классов используйте Linkage на символах вашей библиотеки для каждого автомобиля. (щелкните символ правой кнопкой мыши, выберите «Связывание» и введите имя своего класса в поле «Класс»).

Наконец, установите члена лягушки на вашу лягушку на сцене

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth())
Car.frog = frog; //set the static var "frog" to your frog instance

И теперь все ваши машины должны сами проверить, не бьют ли они лягушку.

Другим вариантом является кодирование этой функции checkHit () в первом кадре каждого отдельного автомобильного мувиклипа, вместо использования классов для каждого:

this.onEnterFrame = function(){
    if(this.hitTest(_root.frog)){
        trace("the frog hit the car");
        //do what you need to do when the frog gets hit 
        delete this.onEnterFrame;
    }
}
...