动作脚本中的数学随机数3
Math random in action script3
我正在制作游戏,我正在尝试创建一个落在多个位置的相同对象的数组。我还想让它们落在不同的位置,使用数学随机数。我遇到的问题是对象(香蕉)根本没有出现在屏幕上。可以在动作脚本 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);
这就是我在动作脚本中的内容 class:
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;
}
}
}
我认为问题出在这个方法中:
private function moveMe(event: TimerEvent)
{
this.x = this.x + velX;
this.y = this.y + velY;
if (falling)
{
falling=true;
velY = velY + gravity;
}
}
您设置了负速度并且 falling 最初是 false 所以重力永远不会起作用。你的香蕉变香蕉了,它们出现在屏幕上方,然后逃到负 y.
的开放 space 中
作为一般规则,您需要跟踪(...) 事物以了解问题所在。此外,无需在 class 方法中显式使用 this:
private function moveMe(event: TimerEvent)
{
x += velX;
y += velY;
if (falling) velY += gravity;
trace("[BANANA] position:", x, y, "speed:", velX, velY);
}
我正在制作游戏,我正在尝试创建一个落在多个位置的相同对象的数组。我还想让它们落在不同的位置,使用数学随机数。我遇到的问题是对象(香蕉)根本没有出现在屏幕上。可以在动作脚本 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);
这就是我在动作脚本中的内容 class:
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;
}
}
}
我认为问题出在这个方法中:
private function moveMe(event: TimerEvent)
{
this.x = this.x + velX;
this.y = this.y + velY;
if (falling)
{
falling=true;
velY = velY + gravity;
}
}
您设置了负速度并且 falling 最初是 false 所以重力永远不会起作用。你的香蕉变香蕉了,它们出现在屏幕上方,然后逃到负 y.
的开放 space 中作为一般规则,您需要跟踪(...) 事物以了解问题所在。此外,无需在 class 方法中显式使用 this:
private function moveMe(event: TimerEvent)
{
x += velX;
y += velY;
if (falling) velY += gravity;
trace("[BANANA] position:", x, y, "speed:", velX, velY);
}