Вращение не обязательно противоположный угол, почти отражающий?

Итак, я получил этот класс bulletContainer, который стреляет всеми этими пулями, он работает и стреляет отлично, когда я помещаю класс в moveiclip, чтобы добавить его на сцену. Я не могу использовать это в видеоклипе, потому что, когда я вызываю функцию bulletClass, она выдает мне сообщение об ошибке, говорящее, что этого не существует. Теперь моя проблема заключается в том, что когда я добавляю Child(bulletClass) на сцену, он будет работать именно так, как он запрограммирован, за исключением движения/анимации. Пуля движется нормально, за исключением случаев, когда я стреляю, она стреляет в противоположную сторону, а не ПРОСТО стреляет в противоположную сторону, она стреляет немного влево (если я указываю прямо вверх и немного влево), тогда, если я направляю полностью вправо, она стреляет повернуть, чтобы стрелять прямо со мной. Так что это в основном бас-аквардс Во всех отношениях, как я уже сказал, и только тогда, когда я добавляю Child() с классом (который расширяет Movieclip). Я не знаю, почему я даю вам свой код, потому что он просто запутает вас больше, чем все проверяется; Я думаю, что где-то есть преобразование, например, классы, которые расширяют Movieclip, ориентированы иначе, чем Library MovieClips?

Этот код находится в функции bulletAdder(), это единственное место, где создаются маркеры в bulletContainer.

var localPlayer = Object(root).localSurvivor;

//Select what movieclip should go into the bullet
var newBullet;
    newBullet = new bullet1;

//Create a local movieclip for this
var newBulletMC:MovieClip = new MovieClip;
    newBulletMC.addChild(newBullet);
    newBulletMC.x = setX;
    newBulletMC.y = setY;
    //trace(localPlayer.rotation);

//Create the newBullet class for movement
var localPlayerRotation = Object(root).localSurvivor.rotation;
trace(localPlayerRotation);
var newBulletClass:bulletClass = new bulletClass(localPlayerRotation, bulletLifetime);

//Add bulletMC to the bulletClass
    newBulletClass.addChild(newBulletMC);

//Add to array
    bulletArray.push(newBulletClass);

//Add to stage
    localStage.addChild(newBulletClass);

Это bulletClass, пули, которые движутся по экрану.

package  com{
        import flash.display.*
        import flash.utils.*

    public class bulletClass extends MovieClip{
            public var lifetime = 0;
            public var dir = 0;
                    var animationInt;
        public function bulletClass(playerRotation, bLifetime:Number = 1){
            dir = playerRotation
            //Start life
            animationInt = setInterval(animateBullet, 40);

        }

        private function animateBullet(){
            this.x += 10 * Math.sin(dir * (Math.PI / 180));
            this.y += 10 * Math.cos(dir * (Math.PI / 180));
        }

    }

}

person Xenland    schedule 12.03.2011    source источник


Ответы (1)


Значит, вы разобрались?

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

Если вы создаете игру, я настоятельно рекомендую хотя бы проверить один или два больших фреймворка Flash Game. Они делают МНОГО оптимизаций для вас за кулисами, и даже большая часть игровой логики абстрагируется за вас. Взгляните, например, на Flixel — очень легко настроить и быстро запустить, и есть множество руководств.

Просто мои два цента, надеюсь, это поможет!

person Myk    schedule 13.03.2011
comment
Фреймворки, как правило, раздуты и больше, чем кому-то нужно, но хорошо для начинающих. - person Feltope; 13.03.2011
comment
Что ж, фреймворки заменяют список отображения сверхбыстрым блиттингом растровых изображений. Вы можете накатить свой собственный, но во многих случаях это действительно не стоит. - person Myk; 13.03.2011