【问题标题】:AS3 Board Game How to draw 15x15 square boardAS3棋盘游戏如何画15x15方板
【发布时间】:2012-05-08 19:11:07
【问题描述】:

我正在为一个 Uni 项目在 AS3 中创建棋盘游戏。我想知道是否有人可以告诉我在舞台上创建 15x15 方格板的最佳方法?我希望能够在方块上添加鼠标悬停效果。此外,当玩家点击棋盘时,他们的计数器将放置在该方格上。

【问题讨论】:

    标签: arrays actionscript-3


    【解决方案1】:

    这是一个非常基本的问题。二维板 = 您将需要使用两个循环,一个内另一个。

    var myArrayOfTiles:Array = new Array();
    
    var distanceX:Number = 0;
    var distanceY:Number = 0;
    for(var i:Number = 0; i < 15; i++) {
        myArrayOfTiles[i] = new Array();
        for(var j:Number = 0; j < 15; j++) {
            myArrayOfTiles[i][j] = new mySquare();
            myArrayOfTiles[i][j].x = distanceX;
            myArrayOfTiles[i][j].y = distanceY;
            distanceX += myArrayOfTiles[i][j].width;
        }
        distanceX = 0;
        distanceY += myArrayOfTiles[i][j].height;
    }
    

    这样您就可以定位到可以访问它们的图块和二维数组。您可以在创建监听器后添加监听器。

    编辑: Flash 专业版:

    var myArrayOfTiles:Array = [];
    
    var distanceX:Number = 0;
    var distanceY:Number = 0;
    for(var i:Number = 0; i < 15; i++) {
        myArrayOfTiles[i] = new Array();
        for(var j:Number = 0; j < 15; j++) {
        var mySquare:Symbol1 = new Symbol1();
            addChild(mySquare);
            myArrayOfTiles[i][j] = mySquare;
            myArrayOfTiles[i][j].x = distanceX;
            myArrayOfTiles[i][j].y = distanceY;
            distanceX += mySquare.width + 1;
        }
        distanceX = 0;
        distanceY += mySquare.height + 1;
    }
    

    这应该适用于 FP,我检查了这个。

    【讨论】:

    • 您好,感谢您的帮助。想知道,为什么我在尝试您的代码时会在第 5、6 和 7 行出现错误? 1084:语法错误:在右括号之前需要分号。 1084:在左括号前需要冒号的语法错误。 1083: 语法错误:for 是意外的。
    • 有点错字,刚刚改正。
    • 好的,很好。你知道为什么我得到错误,TypeError:错误#1007:在非构造函数上尝试实例化。我认为 mySquare 是一个方块大小的方块,它是为 Actionscript 导出的movieClip?
    • 这可能是您的代码有问题。您需要提供有关如何使用我的剪辑的更多信息。和/或显示哪行代码错误。
    • 它只是放在第二帧的开头。还创建了这个变量。 var mySquare = new BoardTile; 这是我在舞台上绘制并导出为影片剪辑的一个红色小方块。错误只是指出TypeError: Error #1007: Instantiation attempted on a non-constructor. at Main/frame2()
    【解决方案2】:

    您的错误可能是因为您没有使用正确的语法来创建变量。应该是:

    var mySquare:BoardTile = new BoardTile();
    

    此外,您可以在创建板时直接添加 mouseEventListener,以及使图块像按钮一样对鼠标做出反应。你这样做:

    var myArrayOfTiles:Array = [];
    
    var distanceX:Number = 0;
    var distanceY:Number = 0;
    for(var i:Number = 0; i < 15; i++) {
        myArrayOfTiles[i] = new Array();
        for(var j:Number = 0; j < 15; j++) {
        var mySquare:Symbol1 = new Symbol1();
            mySquare.addEventListener(MouseEvent.CLICK, fnClick); //adding the eventlistener
            mySquare.buttonMode = true; //now the cursor changes when you mouse over the square, to indicate you can interact with it
            addChild(mySquare);
            myArrayOfTiles[i][j] = mySquare;
            myArrayOfTiles[i][j].x = distanceX;
            myArrayOfTiles[i][j].y = distanceY;
            distanceX += mySquare.width + 1;
        }
        distanceX = 0;
        distanceY += mySquare.height + 1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多