【问题标题】:AS3 platformer generationAS3 平台游戏生成
【发布时间】:2012-05-22 18:10:18
【问题描述】:

我试图在玩家面前无限生成 x 距离的平台,但我几乎不知道从哪里开始。他们也不能“堆叠”在彼此之上。目前,我所拥有的内容如下,没有错误,虽然它占用了相当多的内存并且我的游戏滞后到了 flash cs3 崩溃的地步

function enterFrameHandler(e:Event):void{
    //gravitate the player
    _vy += 1.5;
    //move the player
    Player.x += _vx;
    Player.y += _vy;

    //process collisions
    processCollisions();
    //Process other collisions
    processOtherCollisions();
    //scroll the stage
    scrollStage();
    //Process Key Presses
    KeyHandler();
    //Process Lives once
    LifeHandler();
    //Generate Objects
    generateObjects();
}
//Function for generating objects
var ObjectArray:Array = [];
var ChildrenColliding:Boolean = false;
function generateObjects():void{
    if(_vx > 0){
        var Square:MovieClip;
        Square = new mcSquare();
        Square.x = Math.random() * 500 + Math.abs(_boundaries.x);
        Square.y = Math.random() * stage.stageHeight/2.5 + (stage.stageHeight/2.5);
        ObjectArray.push(Square);
        _boundaries.addChild(Square);
    }
    for(var i in ObjectArray){
        for(var a in ObjectArray){
            if(ObjectArray[a].hitTestObject(ObjectArray[i]) && a != i){
                ChildrenColliding = true;
            }
        }
        while(ChildrenColliding){
        ObjectArray[i].x = Math.random() * 500 + Math.abs(_boundaries.x);
        ObjectArray[i].y = Math.random() * stage.stageHeight/2.5 + (stage.stageHeight/2.5);
        }
    }

}

【问题讨论】:

  • 附带说明,从惯用的角度来看,您的 AS3 代码令人困惑。 AS3 中的变量往往是驼峰式(或有时是下划线命名),而类往往是 PascalCased。混合使用这些大小写会使阅读变得困难。

标签: arrays actionscript-3


【解决方案1】:

您在此处显示的代码很好。将ObjectArray 设置为[] 是完全安全的,不应为空。这个故事肯定还有更多内容。

你能发布这个课程的其余代码吗?你还有其他设置ObjectArray 的代码吗?必须有一行代码在其他地方设置ObjectArray,将其设置为null。

【讨论】:

  • 这真的是我唯一接触 ObjectArray 或 square 的地方,从来没有在其他任何地方引用过
  • @Cory 如果在其他任何地方都没有引用它,目的是什么?为什么要把物体推到上面?为什么它是私有成员变量?你能给我们看看剩下的课吗?我们错过了更大的图景,如果没有看到其余代码,我们将无法为您提供任何进一步的帮助。
  • 我的目标是检查数组中的对象是否相互碰撞,以防止它们相互堆叠。
【解决方案2】:

为什么不只是:

ObjectArray.push(Square);

【讨论】:

  • 这给了我一个空对象引用错误,当我注释掉错误消失的数组时
  • var ObjectArray:Array = []; 不是偶然在其他函数中定义的吗?
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 2016-03-25
相关资源
最近更新 更多