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