特定の数のアイテムをグリッドに表示するためのエレガントな方法を見つけようとしています。答えは部分的にモジュラスにあるように感じますが、それよりも少し複雑です。設定された列数に基づいてグリッドにアイテムを配置する方法を知っています。このようなもの:
for (var j=0;j<numFiles;j++){
clip.x = clip.width * (j % cols);
clip.y = clip.width * int(j / cols);
}
しかし、私がやりたいのは、アイテムが1つしかない場合(j = 0)、画像が使用可能な領域全体(stage.Widthとstage.Height、または簡単にするために1000pxと500px)をカバーするように設定することです。2つのアイテムがある場合、2つの列があり、画像はステージの幅の半分とすべての高さ(500x500)を占め、3つのアイテム-3列(300x500)、4つのアイテム-2列と2行( 500x250)など、バランスの取れたグリッドレイアウトを維持しながら、アイテムのサイズを減らし、論理的かつバランスの取れた方法で行数を増やします。
これを数学的に行う方法が必要ですが、私はそれに出くわしておらず、自分でそれを把握することはできないようです。誰かアイデアがあれば聞いてみたいです。私はFlashAS3でこれを行っていますが、どんな例でも役に立ちます。