我正在制作游戏,我正在尝试创建一个落在多个位置的同一个对象的数组。我也想让他们落在不同的地方,使用数学随机。我遇到的问题是对象(香蕉)根本不会出现在屏幕上。可以在动作脚本3中的y轴上随机使用数学吗?如果是这样,有人会举个例子吗? 这就是我在主程序中所拥有的:
var numBananas = 20;
var theBananas: Array = new Array();
theBananas = [];
for (var i = 0; i < numBananas; i++) {
var aBanana: banana_fall = new banana_fall();
aBanana.y=-10;
theBananas.push(aBanana);
theBananas[i].setSpeed(-(Math.random()), 5);
这就是我在动作脚本类中所拥有的:
package {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.Event;
public class banana_fall extends MovieClip {
var velX: Number = 0;
var velY: Number = 0;
var falling: Boolean = false;
var gravity: Number = 2;
public function banana_fall() {
var timing: Timer = new Timer(20, 0);
timing.addEventListener(TimerEvent.TIMER, moveMe);
timing.start();
}
private function moveMe(event: TimerEvent) {
this.x = this.x + velX;
this.y = this.y + velY;
if (falling) {
falling=true;
velY = velY + gravity;
}
}
public function setSpeed(dx, dy) {
velX = dx;
velY = dy;
}
}
}
答案 0 :(得分:4)
我认为问题出在这个方法中:
private function moveMe(event: TimerEvent)
{
this.x = this.x + velX;
this.y = this.y + velY;
if (falling)
{
falling=true;
velY = velY + gravity;
}
}
您设置负速度,下降最初为 false ,因此重力永远无效。你的香蕉去了香蕉,它们出现在屏幕上方,然后逃到负面 y 的空地上。
作为一般规则,您需要跟踪(...)事物以了解问题所在。此外,没有必要在类方法中明确使用 this :
private function moveMe(event: TimerEvent)
{
x += velX;
y += velY;
if (falling) velY += gravity;
trace("[BANANA] position:", x, y, "speed:", velX, velY);
}