在Flex 4.6中创建一个国际象棋棋盘

时间:2012-09-12 17:41:06

标签: flex flash-builder

我正在Flash Builder 4.6中开始一个新项目,需要一些建议才能向一个方向而不是正确的方向。

基本上,我在Flash Builder中的应用程序适用于移动设备和平板电脑,因此我需要知道如何创建一个能够精确修复任何设备宽度的棋盘。我不知道我怎么能在Flex中完全做到这一点。

有人可以提出想法或提供我可以使用的例子吗?

感谢。

1 个答案:

答案 0 :(得分:0)

为什么不使用100%高度和宽度的TileGroup / TileLayout?然后将rowHeight设置为{this.height / ROWS}(ROWS在棋盘上有很多行)并对columnWidth执行相同的操作。你甚至可以使用horizo​​ntalGap和verticalGap属性来显示一个黑色背景,它可以用作每个框之间的分隔符(虽然你必须在你的rowHeight和columnWidth计算中考虑到这一点,显然)

我会通过AS3填充屏幕,而不是Flex。这样的事情就是我想到的。

var columnCount:int = 0;
var rowCount:int = 0;
var boxes:int = 64; //however many boxes on a chess board goes here
for ( var i:Number = 0; i < boxes; i+ ){
    var rect:Rect = new Rect();
    var color:SolidColor;
    rect.percentHeight = 100;
    rect.percentWidth = 100;
    rect.name = i.toString(); //this will make it easier to keep track of which box is which later on
    if ( rowCount % 2 == 1 ) {
        if ( i % 2 == 1 ) color = 0x000000;
        else color = 0xffffff;
    }
    else {
        if ( i % 2 == 1 ) color = 0xffffff;
        else color = 0x000000;
    }
    this.rect.fill = color;
    this.tileGroup.addElement(rect);

    if ( columnCount == 7 ) {
        columnCount = 0;
        rowCount++;
    }
    else {
        columnCount++;
    }
}

这完全脱离了我的头脑并且未经测试,所以我确信有一两个错误,但你知道它是如何工作的。

编辑:作为事后的想法,您可以在不使用rowCount / columnCount变量的情况下以数学方式100%完成颜色,但这可能要容易得多。