这是一个空中应用程序,但我确信这是其他事情的常见问题。
我一直在努力找出在网格中调整瓷砖大小的最佳方法。我有类似下面代码的东西,哪种有效,但我遇到的问题是整个东西在小屏幕上缩小了太多。
我正在尝试找到一种缩放多个图块的最佳方法,以便它们适合屏幕并保持最大尺寸。我可以实现滚动,但我想避免这种情况。
是否有一种不那么有价值/更有效的方法来安排和缩放瓷砖以适应空间?
var scaleFactor:Number = Model.appScale * this.scaleX;
var gap:Number = 10 /scaleFactor;
var _width:Number = stage.fullScreenWidth / scaleFactor;
var sampleWidth:Number = sample.width;
var sampleHeight:Number = sample.height;
var _scale:Number = 1;
var colWidth:Number = sampleWidth + gap;
var totalWidth:Number;
var columns:Number = 0;
var rows:Number = 0;
do{
rows ++;
columns = Math.ceil(_children.length/rows);
totalWidth = columns * colWidth;
if(rows > Math.sqrt(_children.length) && totalWidth > _width)
_scale = (_width/totalWidth) * _scale;
totalWidth = columns * colWidth * _scale;
}
while(totalWidth > _width)
var top:Number = - ((rows * (sampleHeight + gap)) + (gap *2)) * _scale;
// if it's too big scale it down
var pt:Point = localToGlobal(new Point(0, 0));
if(Math.abs(top) > pt.y/scaleFactor){
_scale = (((pt.y - (bg.height + gap))/scaleFactor)/Math.abs(top)) * _scale;
top = -pt.y/scaleFactor;
}
var col:int = 0;
var row:int = 0;
for each(var button:MenuRenderer in _children)
{
Tweener.addTween(button,{
x : _0x + (((sampleWidth + gap) * _scale) * col),
y : top + (((sampleHeight + gap) * _scale) * row),
scaleX: _scale,
scaleY: _scale,
time: 0.05 * button.order,
transition: "easeInOut"
});
col ++;
if(col == columns)
{
row ++;
col = 0;
}
}