PDA

Просмотр полной версии : Не работают if - ы


Pro3ik
03.10.2007, 20:49
Вот написал такой класс с движением космокорабля - но столкнулся с тем что операторы 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
А зачем столько if'ов? А switch и case'ы уже не в моде?
а как написать свич, чтобы проверять сразу _x и _y?..

_ViPeR_
04.10.2007, 15:20
а как написать свич, чтобы проверять сразу _x и _y?..
Судя по выложенному коду, вижу только одиночные условия в ифах

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

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