K,我想出了解决方案。不过,仍然需要进行我的碰撞检测。不是最伟大的。我的球有时会卡在桨中。我正在使用闪光灯对象命中测试。但无论如何。这是我用来让它有点我想要它做的代码。似乎它有时支持它应该去的方向,有时它不支持。
它有效,但问题是我将我的速度降低到负数,所以有时方向是错误的。因为球移动的方向由-1或1决定。如果我把我的速度打成负数。它可能导致一个数字与它的假设相反。
下面是桨类
public var cspeed:Number;
private var timer:Timer;
public var vx:Number = 0;
public var vy:Number = 0;
private var prevx:Number = 0;
private var prevy:Number = 0;
public function Paddle():void
{
timer = new Timer(60);
timer.start();
timer.addEventListener(TimerEvent.TIMER,checkSpeed);
}
private function checkSpeed(e:TimerEvent):void
{
if(prevx == 0)
{
prevx = x;
}
else
{
cspeed = x - prevx;
prevx = 0;
}
}
我检查我的球类内的碰撞。因为它是一个打击一切的人。下面是代码
以下是我的球类。在检查墙壁类中,它检查它是否撞到墙壁或桨。我将我的桨的参考传递给了球类。
private function checkWalls():void
{
if(y > sRef.stageHeight || y < 0)
{
yDir = yDir * -1;
}
else if ( x > sRef.stageWidth || x < 0)
{
xDir = xDir * -1;
}
//trace(dist);
/*var dx:Number = paddle.x - x;
var dy:Number = paddle.y - y;
var dist:Number = Math.sqrt(dx * dx + dy * dy);*/
if(hitTestObject(paddle))
{
xspeed = (paddle.cspeed/100) + xspeed;
yDir = yDir * -1;
}
//trace(paddle.cspeed);
}
private function moveBall():void
{
x += xspeed * xDir;
y += yspeed * yDir;
}
我仍然需要经常眨眼。但如果我努力的话。我想我可以让它做我想做的事。