Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Не работают if - ы (http://www.flasher.ru/forum/showthread.php?t=101835)

Pro3ik 03.10.2007 20:49

Не работают if - ы
 
Вот написал такой класс с движением космокорабля - но столкнулся с тем что операторы if в onEnterFrame - e как то странно себя ведут. Тоесть должно работать так, чтоб мой корабль при вылетании за пределы появлялся с другой стороны. Но в моей версии они срабатывают сразу и возвращают на указанные координаты мой корабль. Вообщем прошу совета как исправить - или же как написать это правильно. Сама проблема в закомменченном блоке - но на всякий - я выложу весь код.
Код:

class SpaceShipClip extends MovieClip
{
        var c:Number = 0;
        var flamme:MovieClip;
        var dX:Number = 0;
        var dY:Number = 0;
        var speed:Number = 0;
        var rotangl:Number = 0;
        var counter:Number = 0;
        var radians:Number = Math.PI / 180;
        public function SpaceShipClip()
        {
                Key.addListener(this);
        }
        public function onKeyDown():Void
        {
                if (Key.isDown(39))
                {
                        rotangl += 0.2;
                }
                if (Key.isDown(37))
                        rotangl -= 0.2;
                }
                if (Key.isDown(38))
                {
                        speed += 0.1;
                }
                if (Key.isDown(40))
                {
                        speed -= 0.3;
                }
                if (Key.isDown(32))
                {
                }
        }
        public function onEnterFrame():Void
        {
                dX = Math.cos(rotangl) * speed;
                dY = Math.sin(rotangl) * speed;
                this._rotation = (rotangl / radians) + 90;
                dX *= 0.9;
                dY *= 0.9;
                this._x += dX;
                this._y += dY;
                counter++;
      /*if (speed < 0);
                {
                        //speed = 0;
                }
                if (this._x > 600);
                        {
                                this._x = 0;
                        }
                        if (this._y > 500);
                        {
                                this._y = 0;
                        }
                        if (this._x <= 0);
                        {
                                this._x = 600;
                        }
                        if (this._y <= 0);
                        {
                                this._y = 500;
                        }
                        trace (this._x);*/

        }
}


DarkLight 03.10.2007 22:18

Пусть х = 605
Код:

if (this._x > 600){
                                this._x = 0;
                        }//тут стало х = 0
                        if (this._y > 500);
                        {
                                this._y = 0;
                        }
                        if (this._x <= 0);
                        {
                                this._x = 600;
                        }//а теперь стало х = 600
                        if (this._y <= 0);
                        {
                                this._y = 500;
                        }
                        trace (this._x);*/
        }//и все зависло

else if надо ставить, а не просто стопку if

Pro3ik 03.10.2007 23:39

Спасибо.

_ViPeR_ 04.10.2007 15:09

А зачем столько if'ов? А switch и case'ы уже не в моде?

Double 04.10.2007 15:12

Цитата:

Сообщение от _ViPeR_
А зачем столько if'ов? А switch и case'ы уже не в моде?

а как написать свич, чтобы проверять сразу _x и _y?..

_ViPeR_ 04.10.2007 15:20

Цитата:

Сообщение от Double
а как написать свич, чтобы проверять сразу _x и _y?..

Судя по выложенному коду, вижу только одиночные условия в ифах

Double 04.10.2007 15:29

ну так а какой смысл менять 2 if для _x и 2 для _y на 2 switch с парой же case для каждого?..

Pro3ik 04.10.2007 15:56

Вложений: 1
Может ещё посоветуете как движение исправить? Просто я его и через Swich писал и для каждой кнопки по функции делал и onKeyDown в онЕнтерФрейм засовывал, а всё равно как то одновременно не срабатывают две кнопки.Как оно сейчас работает можете глянуть в файле.


Часовой пояс GMT +4, время: 11:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.