Flash 在as3中水平随机移动字符。

Flash 在as3中水平随机移动字符。,flash,actionscript,coding-style,flash-cs5,Flash,Actionscript,Coding Style,Flash Cs5,我只是在做一个小游戏。我只是一个动作脚本的初学者。我希望我的角色在屏幕顶部从左到右或从右到左随机飞行。而且它是随机出现的。我对这件事一无所知。有人能给我解释一下吗 使用此功能: 得到一个随机数。在此之后,使用此数字确定它是左还是右(例如,检查值是否低于最大值/2(0.5,因为它是介于0和1之间的随机生成器),并确定它是左还是右,其他部分将用于另一侧)。然后通过设置角色的坐标相应地移动角色。 然而,如果你让它移动太少,太快,它会导致奇怪的动作。根据您的游戏,您可能需要根据随机元素使某些内容更加复

我只是在做一个小游戏。我只是一个动作脚本的初学者。我希望我的角色在屏幕顶部从左到右或从右到左随机飞行。而且它是随机出现的。我对这件事一无所知。有人能给我解释一下吗

使用此功能:

得到一个随机数。在此之后,使用此数字确定它是左还是右(例如,检查值是否低于最大值/2(0.5,因为它是介于0和1之间的随机生成器),并确定它是左还是右,其他部分将用于另一侧)。然后通过设置角色的坐标相应地移动角色。 然而,如果你让它移动太少,太快,它会导致奇怪的动作。根据您的游戏,您可能需要根据随机元素使某些内容更加复杂


希望这对您有所帮助。

您可以让电影剪辑从左向右移动,如下所示:

//the center point to move around
var center:Number = 512;

//the offset to move to the left and right (512 + 300 and 512 - 300)
var offset:Number = 300;

//the speed the object moves (higher = slower, lower = faster)
var speed:Number = 2000;

//create a object to move around, or just get something from the stage
var dragon:MovieClip = new MovieClip();
dragon.graphics.beginFill(0);
dragon.graphics.drawRect(0, 0, 50, 50);
dragon.graphics.endFill();
addChild(dragon);

addEventListener(Event.ENTER_FRAME, onEnter_frame);
function onEnter_frame(e:Event):void {
  var time:Number = new Date().valueOf() / speed;
  dragon.x = center + (Math.cos(time) * offset)
}

我现在已经做了类似的事情。但我知道这不是正确的方法。如果我这样做的话,从右到左只有三条龙。我需要更多的龙来随机从右到左的屏幕上一个接一个

//DRAGON Properties
var Dragon:dragon=new dragon();
Dragon.x+=1100;
Dragon.y=100;
addChild(Dragon);
stage.addEventListener(Event.ENTER_FRAME,dragonmove);

function dragonmove(e:Event):void{
Dragon.x-=2;
Dragon.y=100;
}

var Dragon1:dragon1=new dragon1();
Dragon1.x+=1900;
Dragon1.y=100;
addChild(Dragon1);
stage.addEventListener(Event.ENTER_FRAME,dragon1move);

function dragon1move(e:Event):void{
Dragon1.x-=2;
Dragon1.y=150;
}

var Dragon2:dragon2=new dragon2();
Dragon2.x+=2800;
Dragon2.y=100;
addChild(Dragon2);
stage.addEventListener(Event.ENTER_FRAME,dragon2move);

function dragon2move(e:Event):void{
Dragon2.x-=2;
Dragon2.y=50;
}

谢谢大家的回答。这工作干得不错

//the center point to move around
var center:Number = 512;

//the offset to move to the left and right (512 + 300 and 512 - 300)
var offset:Number = 300;

//the speed the object moves (higher = slower, lower = faster)
 var speed:Number = 2000;

//create a object to move around, or just get something from the stage
var dragon:MovieClip = new MovieClip();
dragon.graphics.beginFill(0);
dragon.graphics.drawRect(0, 0, 50, 50);
dragon.graphics.endFill();
addChild(dragon);

addEventListener(Event.ENTER_FRAME, onEnter_frame);
function onEnter_frame(e:Event):void {
var time:Number = new Date().valueOf() / speed;
dragon.x = center + (Math.cos(time) * offset)
}

嘿,谢谢你。根据网格标尺的值,这些东西随机出现。我创造了一个像龙一样的物体来移动。嘿,玛丽金,你的代码很好用。但我的龙却一动不动。只有矩形会四处移动。你需要在我的代码中修改龙,当然要参考你的龙。我现在明白了。但问题是,当我的龙从右向左飞来时,它飞得非常好。当它从左向右飞行时,它会以相反的方向飞行。有没有办法在AS3中对其进行变换或旋转?是的,但这完全取决于您想要的动画。也许你应该在第三方tweening脚本中获得一个战利品,比如tweenite(),或者Tweener()。你最好使用对象池,创建一些龙(例如20条),并让它们随机移动。然后当它们离开屏幕时,重新使用它们。观看此视频: