Actionscript 3 动作脚本-如何将10个不同的盘子(装入器)随机排列?
你好,我有一个疑问,需要你的帮助,如果可能的话。 我有一个类盘,我加载1个文件“.swf”,我有一个小游戏,工作原理如下: 盘子在x轴和y轴上移动,当我在盘子中单击时,它会落下。 但我不想只吃一道菜,我要10道不同的菜,有不同的图像。 我希望它们以随机序列出现。 但我不知道我怎么做不到…有人能给我“光” 我使用这些变量将我的盘子加载到游戏项目的舞台上Actionscript 3 动作脚本-如何将10个不同的盘子(装入器)随机排列?,actionscript-3,flash,adobe,Actionscript 3,Flash,Adobe,你好,我有一个疑问,需要你的帮助,如果可能的话。 我有一个类盘,我加载1个文件“.swf”,我有一个小游戏,工作原理如下: 盘子在x轴和y轴上移动,当我在盘子中单击时,它会落下。 但我不想只吃一道菜,我要10道不同的菜,有不同的图像。 我希望它们以随机序列出现。 但我不知道我怎么做不到…有人能给我“光” 我使用这些变量将我的盘子加载到游戏项目的舞台上 var load_dish:Loader = new Loader(); var path:URLRequest = new URLRequest
var load_dish:Loader = new Loader();
var path:URLRequest = new URLRequest("dish.swf");
下面是一个例子,说明你每次都可以随机得到一道菜:
// whenever you need to create a new dish
var dishFilenames:Array = ['dish1.swf', 'dish2.swf', 'dish3.swf']; // etc etc
var randomIndex:int = Math.random() * dishFilenames.length;
var filename:String = dishFilenames[randomIndex];
var load_dish:Loader = new Loader();
var path:URLRequest = new URLRequest(filename);
谢谢你的回答!
所以我不能把所有的菜都放在同一个“swf”里?
我需要创建尽可能多的swf?
到目前为止,我班的菜是这样的:
我没有其他方法可以做到这一点?(只有一个包含所有菜肴的swf)
包装{
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.MouseEvent;
public class Dishe {
var velX: int;
var velY: int ;
var game:Game; //i have also a class game to control everyting
var broken_dish:URLRequest = new URLRequest("broken_dish.swf");
var gravity:int = 2;
var dishFilenames:Array = [ 'dish.swf','second_dish.swf'];
var randomIndex:int = Math.random() * dishFilenames.length;
var filename:String = dishFilenames[randomIndex];
var load_dish:Loader = new Loader();
var path:URLRequest = new URLRequest(filename);
public function Dishe(e:Game, vX:int, vY:int)
{
velX = vX;
velY = vY;
load_dish.x = -180;
load_dish.y = randomBetween(250,-5);
load_dish.load(caminho);
game = e;
game.myStage.addChild(load_dishe);
load_dish.addEventListener(MouseEvent.CLICK, _shoot);
}
public function broken_dish(e:Event)
{
velY += gravity;
load_dish.y +=velY ;
if(load_dish.y >= game.myStage.stageHeight)
{
game.game_states(Game.state_playing);
}
}
public function _enterFrame(e:Event):void
{
if(load_dish.content!=null)
{
load_dish.x += velX;
load_dish.y += velY *(1 - (load_dish.x / game.myStage.stageWidth) * 2 );
if(load_dish.x > game.myStage.stageWidth)
{
load_dish.y = randomBetween(250,-5);
load_dish.x = -180;
}
}
}
public function _shoot(e:MouseEvent):void
{
trace("nice!!");
game.game_states(Game.state_stop);
load_dishe.load(broken_dish);
}
function randomBetween(a:int, b:int) : int {
return a + int(Math.round( (b-a)*Math.random() ));
}
}
}我试过了,但不管用!我试过那个密码,但总是一样!应该可以正常工作,您必须没有错误地复制某些内容,或者现有代码中没有其他问题。只要您有一个多个唯一文件名的数组,这应该可以正常工作。感谢您的回答…我将您的代码调整到我的工作中,但所发生的是,randomIndex结果始终相同,因此我得到的始终是第一个([0])位置的盘!你的阵列中有多少个盘子?如果您有10,randomIndex并不总是0。同样,您复制的内容不正确或类似。如果你在数组中只有一道菜,那么你当然只能得到第一道菜。我现在有两道菜要测试,我更新了我的代码。你能看看是否一切都正常吗?谢谢你再给我一次机会!你不清楚你想要什么。如果你愿意,你可以把所有的菜都放在同一个盘子里。如果每个框架上都有一个盘子,只需使用
gotoAndStop()
将框架更改为您想要的任何盘子即可-您说过您需要10个不同的装载机,这就是为什么我假设您有多个。swf的每个框架都有一个不同的盘子。