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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     FLICKR APIを使ったリキッドレイアウトのフォトギャラリー
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
aronzo
Åê¹ÆNo.44310
投稿日時: 2010-1-22 16:35
新米
居住地:
投稿: 2
使用環境:
FLICKR APIを使ったリキッドレイアウトのフォトギャラリー
はじめまして、ActionScript3.0を始めたばかりで間違があり、ご迷惑をおかけするかもしれませんが、ご教授頂ければ助かります。よろしくお願いします。

FLICKR APIを使ったリキッドレイアウトのフォトギャラリーを作りたいです。

画像を読み込んで、ステージに表示させるところまではできたのですが、
ステージのサイズが変更された際にステージサイズに合わせて画像の並びが変更できず悩んでいます。

ソフト:
Flash CS4

以下のソースです。


package {
	import flash.display.Sprite;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.display.LoaderInfo;
    public class Flickr2 extends Sprite {
		//NSID api_key
		private var _user_id:String = "○○○";
		private var _api_key:String = "○○○";
		private var _set_id:String  = "○○○";
		
		//返り値のXMLを格納するXMLオブジェクトを生成
		private var _myXML:XML;
		
		//読み込むためのLoaderを生成
		private var _myLoader:Loader;
		
		//リクエスト用のURLを生成
		private var _url:String = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=" + _api_key + "&photoset_id=" + _set_id;
		private var _myURLReq:URLRequest = new URLRequest(_url);
		
		//リクエストを発行
		private var _myXMLLoader:URLLoader = new URLLoader();
		
		public function Flickr2() {
			setStageProperty();
			setStageEvents();
			loadXML();
		}

		internal function setStageProperty():void {
			//ステージの伸縮を「拡大・縮小なし」に設定(必須)
			stage.scaleMode = StageScaleMode.NO_SCALE;
			//ステージの位置を「左上」に設定(必須)
			stage.align = StageAlign.TOP_LEFT;
		}

		private function setStageEvents():void {
			//ステージリサイズ時のイベントリスナー登録
			stage.addEventListener(Event.RESIZE,setPhotoXML);
		}
		
		private function loadXML(e:Event = null):void {
			_myXMLLoader.addEventListener(Event.COMPLETE,setPhotoXML);
			_myXMLLoader.load(_myURLReq);
		}
		
		private function setPhotoXML(e:Event = null):void {
			_myXML = new XML(_myXMLLoader.data);
			var photoLength:int = Math.min(_myXML.photoset.photo.length());
			var _myImgCount = Math.floor(stage.stageWidth/80);
	    	for(var i:int = 0; i < photoLength; i++){
				var photo_id:String  = _myXML.photoset.photo[i].@id;
		    	var farm_id:String   = _myXML.photoset.photo[i].@farm;
		    	var server_id:String = _myXML.photoset.photo[i].@server;
				var secret:String    = _myXML.photoset.photo[i].@secret;
				var size:String      = "s";
				var photoURL:String  = "http://farm" + farm_id + ".static.flickr.com/" + server_id + "/" + photo_id + "_" + secret + "_" + size + ".jpg";
				var myURLRequest:URLRequest = new URLRequest(photoURL);
				_myLoader = new Loader();
	        	_myLoader.load(myURLRequest);
				_myLoader.x = 10 + (i  % _myImgCount) * 83;
				_myLoader.y = 10 + Math.floor(i / _myImgCount) * 83;
				addChild(_myLoader);
	        }
		}
	}
}


よろしくお願いいたします。
TJFORD
Åê¹ÆNo.44311
投稿日時: 2010-1-22 17:25
半人前
居住地: Tokyo
投稿: 42
使用環境:
:Flash CS3
Re: FLICKR APIを使ったリキッドレイアウトのフォトギャラリー
こんにちは。

こちらはステージサイズが変わる度に画像を読み込んでいるのですか?そうする必要は何かあるのでしょうか。

loaderをaddChild()しているようですのでそちらを初回読み込み時に配列に入れて保持しておいてステージサイズが変わる度にその配列内のloader(写真)の位置を調節すればよいのではないでしょうか?
aronzo
Åê¹ÆNo.44327
投稿日時: 2010-1-27 15:10
新米
居住地:
投稿: 2
使用環境:
Re: FLICKR APIを使ったリキッドレイアウトのフォトギャラリー
こんにちは。返事が遅くなりすみません。


>こちらはステージサイズが変わる度に画像を読み込んでいるのですか?そうする必要は何かあるのでしょうか。

必要性はありませんでした。

loaderをaddChild()しているようですのでそちらを初回読み込み時に配列に入れて保持しておいてステージサイズが変わる度にその配列内のloader(写真)の位置を調節すればよいのではないでしょうか?

「配列に入れて保持」が大きなヒントになり、無事、問題が解決しました。ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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