动作脚本 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 <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. 检查数组是不是有任何元素不跳转,然后跳转的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3