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);*/
}
}
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);*/
}
}