トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     サイズが一定でない表示オブジェクトの動的なレイアウト
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
opt13
Åê¹ÆNo.44498
投稿日時: 2010-3-6 19:44
新米
居住地:
投稿: 1
使用環境:
Mac OSX 10.4, Flash CS3
ActionScript 3.0
サイズが一定でない表示オブジェクトの動的なレイアウト
はじめて質問させて頂きます。

以下のURLのサイトのように、写真のサムネイルをウィンドウリサイズによってレイアウト位置を変化させるものを作成したいと思っています。
http://shimaifudosan.co.jp/earththeresidence/

上記のサイトでは段を貫く縦長のサムネイルもうまくかわしてレイアウトさせるようになっていますが、この仕組みがさっぱりわかりません。

現状ウィンドウリサイズによってサムネイルをウィンドウの横幅からはみ出ないようにレイアウトし直すようにはできていますが、上記サイトのように縦長のサムネイルがあった場合は、その縦長のサムネイルの縦幅分間が空いてしまします。
これをうまくよけて一定のマージンを保ってレイアウトするようにしたいのです。

サムネイルのサイズの規則性があるのは前提として、意図した動きにするにはどのように考えたらよいでしょうか?
是非教えて頂ければと思います。

環境は Mac OSX 10.4, Flash CS3, ActionScript 3.0 です。

以下に現在までに作ったソースの一部を記載します。
宜しくお願いします。

private var _thumbs:Array = [];

// コンストラクタ
private function ThumbnailMenu()
{
	// ※ここでサムネイルを作成して_thumbsにpush()

	// 最初にレイアウト
	_layout();
	
	// ウィンドウリサイズを監視
	stage.addEventListener(Event.RESIZE, _resize);
}

// ウィンドウリサイズリスナーメソッド
private function _resize(e:Event):void
{
	// ウィンドウがリサイズされたらレイアウトし直す
	_layout();
}

// サムネイルをレイアウトするメソッド
private function _layout():void
{
	// マージン
	var margin:uint = 8;
	// 行での最大縦幅
	var maxHeight:uint = 0;
	
	// サムネイルをレイアウト
	for (var i:int = 0; i < _thumbs.length; i ++)
	{
		// 最初でない場合
		if (i != 0)
		{
			// 直前のサムネイルを参照
			var pre:MovieClip = _thumbs[i-1];
			
			// レイアウトが範囲内の場合
			if (pre.x + pre.width + _thumbs[i].width < stage.stageWidth)
			{
				_thumbs[i].x = pre.x + pre.width + margin;
				_thumbs[i].y = pre.y;
				// 直前までの最大縦幅を超える場合は値を更新
				if (_thumbs[i].height > maxHeight ) maxHeight = _thumbs[i].height;
			}
			// 範囲を出た場合は折り返す
			else
			{
				_thumbs[i].x = _thumbs[i].width / 2;
				_thumbs[i].y = pre.y + maxHeight + margin;
				// 最大縦幅の値を更新
				maxHeight = _thumbs[i].height;
			}
		}
		// 最初の場合初期値
		else
		{
			_thumbs[i].x = 0;
			_thumbs[i].y = 0;
			maxHeight = _thumbs[i].height;
		}
	}
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops