- 2007-11-27 (火)
- action script
CASA Framework の LoadGroup でまとめてロードしたサムネイル画像を、所定サイズ内に収まるようにタイル上に並べたくてとりあえず書いたコード。
今から根本的に違うもの作るから一時保管メモ。
var thumbs:Array = thumbLoadGroup.getLoads();
var preMc:MovieClip;
for(var i:Number=0;i<thumbs.length;i++){
var mc:MovieClip = thumbs[i].getMovieClip();
if(preMc._x + preMc._width + mc._width <= this._width){
mc._x=preMc._x+preMc._width;
mc._y=preMc._y;
}else{
mc._x=0;
mc._y=preMc._y+preMc._height;
}
preMc = mc;
}
preMc は直前に処理したムービークリップ。LoadGroup 完了後にこの処理をするので、getMovieClip() して _width や _height もキチンと取得できる。
forループ1発目の preMc._x とかは undefined だけど 0 として扱ってくれるので気にしない。
6行目の this._width 部分を折り返しMAXのx座標値にすればOK。
割と初期の段階で CASA パッケージをダウンロードした人は、LoadGroup のインスタンスメソッド getLoads が追加される前のパッケージの可能性があるので最新版のご確認を。getLoads() と (MediaLoadクラスの)getMovieClip() は便利ですよ。
getLoads()して配列に格納して中のMediaLoadインスタンスをgetMovieClip()すると、一番最後にロードしたものが配列番号0番目になっているので注意
たぶんもっとスマートな方法はあるんでしょうね。何を今更的なコードだけど、こういう数学パズル的なことを考えるのが楽しい。この楽しさを5年前ぐらいの僕に教えてやりたい。
追記:同じようなタイリング用ユーティリティーがの CASA に既にあるということをたけしCEOに教えてもらいました。CASA の DistributionCollection を使えばいいとのこと。リンク先ページ「View source」でクラスファイルが見れるので、いかにスマートに実装してるかを見比べるがいいさ。
- Newer: CBCNETコラム2本目を書きました
- Older: Fisix をゼロから触る時のメモ
Comment:4
- たけし 2007-11-27 (火) 12:39
-
CASA の DistributionCollection も指定範囲にタイル上に並べられますよー
CSSっぽくマージンとかも設定できるので、ただ"並べるだけ"なら一応使えないことはないかとw - tera 2007-11-27 (火) 13:49
-
ええ〜っ!そうだったんですか!!
僕がAPIリファレンス読んでないのがバレてしまいましたねwじっくり読まないとですね。
お恥ずかしい限りです。いやはやCASA便利だなぁ。 - そら 2008-01-31 (木) 18:30
-
こんにちは、いつも参考にさせて頂いています。
ビデオチュートリアルCASAを使ってホットペッパーの画像を読み込み
この記事を参考にして画像をタイル上に並べることが出来ました。次にCASAのDistributionCollectionが便利そうなので、
これを使ってタイル上に並べようとしているのですがうまくいきません。
ドキュメントのサンプルは動かすことが出来ました。今現在はこのようになってます。
function onGroupLoadComplete(){
trace("全画像ロード完了");var _dist:DistributionCollection;
_dist = new DistributionCollection( true );
_dist.setRectangle( new Rectangle(50, 50, 800, Number.POSITIVE_INFINITY) );
_dist.setMargin(10, 10, 10, 10);var thumbs:Array = myLoadGroup.getLoads();
for(var i:Number=0;i var mc:MovieClip = thumbs[i].getMovieClip();
_dist.addItem( attachMovie("mc", "mc"+i, getNextHighestDepth()));
}
_dist.positionItems();
}四角などのMovieClipを作って、リンゲージをboxとかにして
attachMovieのmcと置き換えると四角がタイル上に整列出来ます。間違っている箇所があればご指摘くださるとありがたいです。
- tera 2008-01-31 (木) 23:22
-
>soraさん
コメントありがとうございます。
興味深かったので別エントリにしました。
http://www.trick7.com/blog/2008/01/31-231306.php
僕も知らないことがあったので勉強になりました。
今後ともよろしくお願いいたします。
Trackback:0
- TrackBack URL for this entry
- http://www.trick7.com/blog/mt-tb.cgi/647
- Listed below are links to weblogs that reference
- ロードした画像達をタイル上に並べる from trick7.com blog



