gpt4 book ai didi

android - 如何居中网格?

转载 作者:行者123 更新时间:2023-11-29 19:20:45 25 4
gpt4 key购买 nike

大家好我已经使用下面的代码在舞台上创建了一个网格。一切正常,网格已创建。唯一的问题是当我将列和行的值更改为更高的值时,网格位置更改为舞台中心的偏移量。我希望它是当我更改值并添加更多列等时,网格保持死点。

此外,网格似乎从网格的左上角扩展到正 x 轴。

我该怎么做才能解决这个问题?

public function geniusMatchEngine() 
{
//Instantiate Variables
nSquares = 0;
//Movie clips
_gridContainer = new MovieClip();

stage.addChild(_gridContainer);

createGrid();

//Add Listeners
stage.addEventListener(Event.ENTER_FRAME, logicHandler);
}

private function logicHandler(e:Event):void
{

}

private function createGrid():void
{
for (var gy:int = 0; gy < rows; gy++)
{
for (var gx:int = 0; gx < columns; gx ++)
{
var _grid:mcGrid = new mcGrid();
_grid.x = (stage.stageWidth / 2) + _grid.width * gx;
_grid.y = (stage.stageHeight / 2) + _grid.height * gy;
_gridContainer.addChild(_grid);
_grid.addEventListener(MouseEvent.CLICK, tapGrid);
}
}
}

private function tapGrid(e:MouseEvent):void
{
trace("CLICKED");
e.currentTarget.destroy(); //Destroy current target
}

private function centerGrid(gCenter:MovieClip):void
{
gCenter.x = (stage.width / 2) - (gCenter.width / 2); // center horizontally.
gCenter.y = (stage.height / 2) - (gCenter.height / 2); // center vertically.
}

最佳答案

要使舞台居中,请执行以下操作:

private function centerThis(s:<Type>):void{
s.x = stage.width / 2 - s.width / 2; // center horizontally.
s.y = stage.height / 2 - s.height / 2; // center vertically.
}

然后用你的网格你可以做:

centerThis(_grid);

注意:确保替换<Type>与任何有意义的。在这种情况下,它可能是 mcGrid但为了使其更通用,以便您可以在任何影片剪辑或 Sprite 上使用此功能,请使用 MovieClipSprite .

更新

由于您似乎对范围有点困惑,我将以您的具体案例为例。

//Variables
private var rows:int = 2;
private var columns:int = 2;

for (var gy:int = 0; gy < rows; gy++)
{
for (var gx:int = 0; gx < columns; gx ++)
{
var _grid:mcGrid = new mcGrid();
_grid.x = (stage.stageWidth / 2) - _grid.width / 2;
_grid.y = (stage.stageHeight / 2) - _grid.height / 2;
stage.addChild(_grid);
}
}

我认为 _mcGrid 是预制网格。我现在看到它可能只是网格中的一个单元格(也许将类名更改为 _mcGridCell ... 减少混淆)。忘记尝试相对于舞台中心放置单元格。将它们添加到父 Sprite(或 MovieClip,如果您愿意),然后使用我的 centerThis 公式将 Sprite (movieClip) 居中。这是显示对象容器的美妙之处。

更新

好的。当您将网格容器居中时,容器中的所有内容都会随之移动。因此,无需像您所做的那样尝试将网格中的单元格居中。

grid.x = (stage.stageWidth / 2) + _grid.width * gx;

应该只是

grid.x = _grid.width * gx;

关于android - 如何居中网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com