【问题标题】:How to randomly swap shapes' positions in specific locations如何在特定位置随机交换形状的位置
【发布时间】:2013-09-30 12:52:54
【问题描述】:

帮助!我正在尝试创建一个记忆游戏,但我不太确定如何随机化设置 x 和 y 位置中的形状位置。它们不能重叠,因此每次用户启动程序时,它们必须随机分布在 12 个不同的位置。

【问题讨论】:

    标签: actionscript-3 flash position sprite addchild


    【解决方案1】:

    将您的 x 和 y 位置存储在数组中

    var xArray=new Array();
    var yArray=new Array();
    
    xArray[0]=50;
    yArray[0]=50;
    xArray[1]=100;
    yArray[1]=50;
    xArray[2]=150;
    yArray[2]=50;
    ...
    

    为每个形状创建一个值数组

    var valueArray=new Array(0,1,2.....);
    

    随机排列此数组中的值 - as3 random array - randomize array - actionscript 3

    设置形状的位置

    shape0.x=xArray[valueArray[0]];
    shape0.y=yArray[valueArray[0]];
    shape1.x=xArray[valueArray[1]];
    shape1.y=yArray[valueArray[1]];
    shape2.x=xArray[valueArray[2]];
    shape2.y=yArray[valueArray[2]];
    

    【讨论】:

      【解决方案2】:

      试试看:

      function randomSort(a:*, b:*):Number
      {
          if (Math.random() < 0.5) return -1;
          else return 1;
      }
      
      // Push 12 positions as new Point() in an array.
      var positions:Array = [ new Point(12, 42), new Point(43, 56), new Point(43,87) ]; // ...add 12 positions
      var mcs:Array = [mc1, mc2, mc3]; // ...add 12 mcs
      
      positions.sort(randomSort);
      
      // link randomized position to MovieClips:
      for (var i:int = 0, l:int = positions.length; i < l, i++ ) {
          var mc:MovieClip = mcs[i];
          var point:Point = positions[i];
          mc.x = point.x;
          mc.y = point.y;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 2021-11-29
        • 1970-01-01
        相关资源
        最近更新 更多