动作脚本 3. 检查数组是不是有任何元素不跳转,然后跳转

Posted

技术标签:

【中文标题】动作脚本 3. 检查数组是不是有任何元素不跳转,然后跳转【英文标题】:Action Script 3. Check array if any element not Jumping, then jump动作脚本 3. 检查数组是否有任何元素不跳转,然后跳转 【发布时间】:2014-05-16 20:33:55 【问题描述】:

所以我需要让项目跳跃。我有 6 个元素(项目)的数组。我需要让他们随机跳跃,但如果有任何项目跳跃,其他应该留下。

我有跳跃代码,EnterFrame 上的 1 个项目正常工作 - 不停地跳跃。

但这里的问题是,如果我尝试使用此函数一次(例如作为 MouseEvent.CLICK),项目会将项目的 y 减少 15 像素。如果我第二次使用这个功能,它会再次减少 15px。所以我需要启动这个功能19次才能完全跳跃。

//whether or not the main guy is jumping
var mainJumping:Boolean = false;
//how quickly should the jump start off
var jumpSpeedLimit:int = 15;
//the current speed of the jump;
var jumpSpeed:Number = jumpSpeedLimit;

function updateItems(e:Event):void 

    var j:Number = Math.round(Math.random()*5);
                if(!mainJumping)
                    //then start jumping
                    mainJumping = true;
                    jumpSpeed = jumpSpeedLimit*-1;
                    item1[j].y += jumpSpeed;
                  else 
                    //then continue jumping if already in the air
                    if(jumpSpeed < 0)
                        jumpSpeed *= 1 - jumpSpeedLimit/75;
                        if(jumpSpeed > -jumpSpeedLimit/5)
                            jumpSpeed *= -1;
                        
                    
                    if(jumpSpeed > 0 && jumpSpeed <= jumpSpeedLimit)
                        jumpSpeed *= 1 + jumpSpeedLimit/50;
                    
                    item1.y += jumpSpeed;
                    //if main hits the floor, then stop jumping
                    //of course, we'll change this once we create the level
                    if(item1[j].y <= 450)
                        mainJumping = false;
                        item1[j].y = 0;
                        
                

我尝试让 for 循环使用函数 19 次 (var i = 0; i &lt;19; i++) ... ,但在 It 项目之后根本没有跳跃。你有什么想法如何让我在完全跳跃后使用函数?

在我创建var j:Number = Math.round(Math.random()*5); 之后,它在不好的情况下工作,因为它开始跳转第二个项目,直到第一个没有完成跳转。

【问题讨论】:

【参考方案1】:
//whether or not the main guy is jumping
var mainJumping:Boolean = false;
//how quickly should the jump start off
var jumpSpeedLimit:int = 15;
//the current speed of the jump;
var jumpSpeed:Number = jumpSpeedLimit;

// we declare the variable that will hold the random number
var randomItem:Number;

// this function will select a random number and make the item corresponding
// to that number to jump. You call it once and it continues running.
function selectRandom():void

    randomItem = Math.round(Math.random() * 5);
    this.addEventListener(Event.ENTER_FRAME, updateItems);


function updateItems(e:Event):void 


            if(!mainJumping)
                //then start jumping
                mainJumping = true;
                jumpSpeed = jumpSpeedLimit*-1;
                item1[randomItem].y += jumpSpeed;
              else 
                //then continue jumping if already in the air
                if(jumpSpeed < 0)
                    jumpSpeed *= 1 - jumpSpeedLimit/75;
                    if(jumpSpeed > -jumpSpeedLimit/5)
                        jumpSpeed *= -1;
                    
                
                if(jumpSpeed > 0 && jumpSpeed <= jumpSpeedLimit)
                    jumpSpeed *= 1 + jumpSpeedLimit/50;
                
                item1.y += jumpSpeed;
                //if main hits the floor, then stop jumping
                //of course, we'll change this once we create the level
                if(item1[randomItem].y <= 450)
                    mainJumping = false;
                    item1[randomItem].y = 0;
                    // after the item is finished jumping, we remove the listener
                    // and make it select another number. It is basically a loop.
                    this.removeEventListener(Event.ENTER_FRAME, updateItems);
                    selectRandom();
                    

我只是复制/粘贴了您的代码并进行了一些修改。我相信您在某处错过了一些花括号。除此之外,想法是在updateItems 方法之外声明一个变量,因此项目的数量不会在每一帧中随机变化。希望这能解决您的问题。

【讨论】:

以上是关于动作脚本 3. 检查数组是不是有任何元素不跳转,然后跳转的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS地址栏变化为啥不跳转到页面

如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3

如何检查一个数组是不是包含另一个数组的任何元素

检查字符串是不是包含数组的任何元素[重复]

核心数据谓词 - 检查数组中的任何元素是不是与另一个数组中的任何元素匹配

检查一个数组是不是包含 JavaScript 中另一个数组的任何元素