Actionscript 3 AS3:如何生成10到20之间的随机数

Actionscript 3 AS3:如何生成10到20之间的随机数,actionscript-3,flash,Actionscript 3,Flash,我一直试图在Flash中生成一个随机数。我一直在看视频并复制它们,但当我点击按钮时,文本框中的数字并没有显示出来 以下是我在air ios游戏中编写的代码: import flash.events.MouseEvent; //creating the vars var difficulty; //listening for the play button to be clicked play_button.addEventListener(MouseEvent.CLICK, letsgoto

我一直试图在Flash中生成一个随机数。我一直在看视频并复制它们,但当我点击按钮时,文本框中的数字并没有显示出来

以下是我在air ios游戏中编写的代码:

import flash.events.MouseEvent;
//creating the  vars
var difficulty;

//listening for the play button to be clicked
play_button.addEventListener(MouseEvent.CLICK, letsgotoframe2);


//and after the listening what do the computer do!
function letsgotoframe2(event:MouseEvent):void
{
    gotoAndStop(2)
    }



//listening for the easy button to be clicked
Easy_button.addEventListener(MouseEvent.CLICK,letsgoeasy)






//what  will it do when it is clicked
function letsgoeasy(e:MouseEvent):void{
    difficulty = 1;
   var rand = (Math.random()*20)
   txt.text = String (rand);
   gotoAndStop(rand);
}

PS:很抱歉结构不好,这是我的第一篇帖子

这将为您提供一个介于0和10之间的数字(包括):

现在,只要再加上10,你就会得到一个介于10和20之间的数字:

10 + Math.floor( Math.random() * 11 )

我假设你想要整数。如果您想要实数,请删除Math.floor并将11改为10(您的上限不会是20,但我会是19,99等)

这将为您提供一个介于0和10之间的数字(包括):

现在,只要再加上10,你就会得到一个介于10和20之间的数字:

10 + Math.floor( Math.random() * 11 )

我假设你想要整数。如果您想要实数,请删除Math.floor并将11改为10(您的上限不会是20,但我会是19,99等)

这将为您提供一个介于0和10之间的数字(包括):

现在,只要再加上10,你就会得到一个介于10和20之间的数字:

10 + Math.floor( Math.random() * 11 )

我假设你想要整数。如果您想要实数,请删除Math.floor并将11改为10(您的上限不会是20,但我会是19,99等)

这将为您提供一个介于0和10之间的数字(包括):

现在,只要再加上10,你就会得到一个介于10和20之间的数字:

10 + Math.floor( Math.random() * 11 )

我假设你想要整数。如果您想要实数,请删除Math.floor并将11改为10(您的上限不会是20,但我会是19,99等)

以下是一个函数,它将为您提供最小值和最大值之间的随机整数:

function random(min:int = 0, max:int = int.MAX_VALUE):int
{
    if (min == max) return min;
    if (min < max) return min + (Math.random() * (max - min + 1));
    else return max + (Math.random() * (min - max + 1));
}

var r = random(10, 20);
函数随机(最小值:int=0,最大值:int=int.max_值):int
{
如果(最小==最大)返回最小值;
if(min
这是一个函数,它将为您提供最小值和最大值之间的随机整数:

function random(min:int = 0, max:int = int.MAX_VALUE):int
{
    if (min == max) return min;
    if (min < max) return min + (Math.random() * (max - min + 1));
    else return max + (Math.random() * (min - max + 1));
}

var r = random(10, 20);
函数随机(最小值:int=0,最大值:int=int.max_值):int
{
如果(最小==最大)返回最小值;
if(min
这是一个函数,它将为您提供最小值和最大值之间的随机整数:

function random(min:int = 0, max:int = int.MAX_VALUE):int
{
    if (min == max) return min;
    if (min < max) return min + (Math.random() * (max - min + 1));
    else return max + (Math.random() * (min - max + 1));
}

var r = random(10, 20);
函数随机(最小值:int=0,最大值:int=int.max_值):int
{
如果(最小==最大)返回最小值;
if(min
这是一个函数,它将为您提供最小值和最大值之间的随机整数:

function random(min:int = 0, max:int = int.MAX_VALUE):int
{
    if (min == max) return min;
    if (min < max) return min + (Math.random() * (max - min + 1));
    else return max + (Math.random() * (min - max + 1));
}

var r = random(10, 20);
函数随机(最小值:int=0,最大值:int=int.max_值):int
{
如果(最小==最大)返回最小值;
if(min
如果在.FLA中看不到时间线的组成,将很难诊断您遇到的此问题,因为您的代码中似乎存在一些导致此问题的因素

问题:

  • 由于没有提供时间线的结构,我不能假设您已经正确设置了实例名为
    txt
    的TextField,使其在时间线的第10帧到第20帧之间存在。我只是假设第20帧是最大值,因为您要求我们提供10到20之间的随机数
  • 调用
    Math.random()
    函数生成实数,而不是整数。因此,在使用
    gotoAndStop
    中的值之前,生成一个随机数而不将其强制转换为
    int
    ,这将是一个问题
  • 因此,为了解决这些问题,我建议如下:

  • 确保文本字段确实存在于从第10帧到第20帧的时间线上。这可以通过以下两种方式之一实现。第一种方法是查看时间线,确保文本字段所在的层的帧数在10到20之间。或者,您可以简单地检查第10帧到第20帧,查看这些帧上是否存在文本字段。同样,如果看不到您的时间线结构,我们很难确定这些部分是否设置正确
  • 您需要将随机数强制转换为
    int
    ,以便在
    gotoAndStop
    语句中正确使用
  • 这是您的代码,已修改以修复铸造问题;但是,您必须手动检查文本字段是否存在:

    import flash.events.MouseEvent;
    //creating the  vars
    var difficulty;
    
    //listening for the play button to be clicked
    play_button.addEventListener(MouseEvent.CLICK, letsgotoframe2);
    
    
    //and after the listening what do the computer do!
    function letsgotoframe2(event:MouseEvent):void
    {
        gotoAndStop(2);
    }
    
    //Easy Button Handler
    function letsgoeasy(e:MouseEvent):void{
       difficulty = 1;
       var rand:int = Math.floor( (Math.random()*11) + 10 );
       txt.text = String (rand);
       gotoAndStop(rand);
    }
    
    //Create listener for the easy button
    Easy_button.addEventListener(MouseEvent.CLICK,letsgoeasy)
    

    如果在.FLA中看不到时间线的组成,则很难诊断您遇到的此问题,因为您的代码中可能存在一些导致此问题的因素

    问题:

  • 由于没有提供时间线的结构,我不能假设您已经正确设置了实例名为
    txt
    的TextField,使其在时间线的第10帧到第20帧之间存在。我只是假设第20帧是最大值,因为您要求我们提供10到20之间的随机数
  • 调用
    Math.random()
    函数生成实数,而不是整数。因此,在使用
    gotoAndStop
    中的值之前,生成一个随机数而不将其强制转换为
    int
    ,这将是一个问题
  • 因此,为了解决这些问题,我建议如下:

  • 确保文本字段确实存在于从第10帧到第20帧的时间线上。这可以通过以下两种方式之一实现。第一种方法是查看时间线,确保文本字段所在的层的帧数在10到20之间。或者,您可以简单地检查第10帧到第20帧,查看这些帧上是否存在文本字段。同样,如果看不到您的时间线结构,我们很难确定这些部分是否设置正确
  • 您需要将随机数强制转换为
    int
    ,以便在pro中使用