代码之家  ›  专栏  ›  技术社区  ›  user1587341

关于动作脚本3的一些帮助

  •  0
  • user1587341  · 技术社区  · 12 年前

    好吧,开门见山,我相信这个函数是我的问题的根源。

    function getRandomLabel():String {
        var labels:Array = new Array(24,62,49,74,37);
        var index:Number = Math.floor(Math.random() * labels.length);
        return labels[index];
    }
    this.gotoAndPlay(getRandomLabel());
    

    此函数用于以上5位数字的随机化(24,62,49,74,37) 所以我的痣(5个痣)会随机出现。 目前正在开发一款打地鼠flash游戏

    当前场景:2/3

    不知怎的,当我测试播放它时,它会循环回到场景1第1帧。

    还有一件事,当我试图将“游戏本身”放入场景2中时,问题就开始了,我的其余代码都在场景2中(菜单、机制等)

    1 回复  |  直到 12 年前
        1
  •  1
  •   davidbuzatto    12 年前

    正如安德鲁所说,你没有什么要求。你只是暴露了你所拥有的,但没有揭露正在发生的事情。嗯,你的函数没有问题。我对AS很生疏,但我会这样写:

    function getRandomFrame( frameNumbers: Array ): int {
        return frameNumbers[Math.floor( Math.random() * frameNumbers.length )];
    }
    gotoAndPlay( getRandomFrame( [24, 62, 49, 74, 37] ) );
    

    你得到的是帧编号而不是标签,所以我更改了它的名称。由于您正在调用gotoAndPlay,您的电影“播放头”将转到选定的帧,并将播放到时间线的末尾,默认情况下,电影将重新开始。如果需要停止动画,则需要在所需帧中设置停止。使用gotoAndStop而不是gotoAndPlay尝试您的代码。电影将转到随机帧,然后停止。如果需要获取帧标签,请创建一个字符串数组:

    function getRandomLabel( labels: Array ): String {
        return labels[Math.floor( Math.random() * labels.length )];
    }
    gotoAndPlay( getRandomLabel( ["car", "dog", "music"] ) );
    

    你似乎是一个Flash新手,所以你需要更多地研究你正在处理的工具;)Flash CS5中的ActionScript默认版本是第三个。