Actionscript 3 把它切成小块3

Actionscript 3 把它切成小块3,actionscript-3,class,flashdevelop,Actionscript 3,Class,Flashdevelop,为了便于学习和实用,我想把代码分解成更小的部分。三个球。2从右向左移动,每次离开屏幕时,它们的速度都会增加,并以随机高度重新出现在右侧。另一个球也是一样,但它是垂直移动的 我确实为球写了一个单独的类(这样我就不必对球进行3次大小调整和着色),尽管这个类实际上很糟糕,因为我只能添加更多相等的球,而不能调整大小或更改颜色 TL;博士需要对课程有更好的了解 您可以在下面的“我的代码”中看到(如果需要,请将其复制到FD) 球的运动 function update(e:Event):void {

为了便于学习和实用,我想把代码分解成更小的部分。三个球。2从右向左移动,每次离开屏幕时,它们的速度都会增加,并以随机高度重新出现在右侧。另一个球也是一样,但它是垂直移动的

我确实为球写了一个单独的类(这样我就不必对球进行3次大小调整和着色),尽管这个类实际上很糟糕,因为我只能添加更多相等的球,而不能调整大小或更改颜色

TL;博士需要对课程有更好的了解

您可以在下面的“我的代码”中看到(如果需要,请将其复制到FD)

球的运动

    function update(e:Event):void {
      a.ball.x = a.ball.x - Aspeed * speedModifier;
      b.ball.x = b.ball.x - Bspeed * speedModifier;
      c.ball.y = c.ball.y + Cspeed * speedModifier;

      if (a.ball.x < -a.ball.width) {
        a.ball.x = stage.stageWidth + a.ball.width;
        a.ball.y = Math.random() * stage.stageHeight;
        if (Aspeed<40) {
          Aspeed += 5;
        }
      }

      if (c.ball.y > stage.stageHeight+c.ball.height) {
        c.ball.y = stage.stageHeight - stage.stageHeight-c.ball.height;
        c.ball.x = Math.random() * stage.stageWidth;
        if (Cspeed<40) {
          Cspeed += 5;
        }
      }
    }
功能更新(e:事件):无效{
a、 ball.x=a.ball.x-Aspeed*speedModifier;
b、 ball.x=b.ball.x-Bspeed*speedModifier;
c、 ball.y=c.ball.y+Cspeed*speedModifier;
如果(a.ball.x<-a.ball.width){
a、 ball.x=stage.stageWidth+a.ball.width;
a、 ball.y=Math.random()*stage.stageHeight;
if(Asped舞台高度+c.ball.高度){
c、 ball.y=stage.stageHeight-stage.stageHeight-c.ball.height;
c、 ball.x=Math.random()*stage.stageWidth;

如果(Cspeed你开始做得很好-为你称之为
Ball
的东西创建一个类。然后你可以在它里面创建公共函数来更改它的属性:

function setSpeed(value:Number) {
    this.speed = value; // what used to be Aspeed, Bspeed, Cspeed, now is simply 'speed'
}

function setColor(color:uint) {
    this.graphics.beginFill(color); // used to be `0xFF0000`, now is dynamic
}
speed
是该类内部的成员变量,之所以使用
this.graphics
,是因为该类应该扩展Sprite


因此,您将实例化同一个类,但只需使用一行函数对其进行“蒙皮”。您甚至可以创建for循环,以便更轻松地创建球。

现在我使用的不是最初文章中的代码,而是一个好的类吗

这是RedBall类(RedBall只是名称,球可以有其他颜色)

现在只有一个问题,那就是startMovement函数,因为它不工作!在函数中:

function update(e:Event):void {
            a.startMovement();
      }

没有线索:3,然后实例化新的object.ball。?你应该检查类是如何工作的。应该是这样的:
var-ball:ball=new-ball();ball.setSpeed(100);ball.setColor(0xffccee);
我刚刚这么做了,没有球输出:[-
var-a:RedBall=new-RedBall();a.setSpeed(10);a.setSize(0,50);a.setColor(0x000000)
它可以编译,但屏幕上没有圆圈:P和I添加了child(a);哦,它缺少尾端填充;目标是“移动”。方向和速度是移动的属性。绘制矩形是方法。它的颜色是属性。出现在屏幕上是动作。位置是属性。尝试将事物分为
动作
属性
。开始时会容易得多。
    public function setColor(color:uint) {
        this.graphics.beginFill(color);
    }

    public function setSize(ballX, ballY, radius:uint) {
        this.graphics.drawCircle (ballX, ballY, radius);
    }

    public function setAcceleration(value:Number) {
        this.accel = value;
    }

    public function setSpeed(value:Number) {
        this.speed = value;
    }

    public function startMovement() {
        this.x -= this.speed;           
    }
function update(e:Event):void {
            a.startMovement();
      }