[twitter]the your world
久々にflash。
あなたとフォロワーの世界を創ります。
ツイート数、フォロー数、フォロワー数によって世界情勢は変わります。
久々にflash。
あなたとフォロワーの世界を創ります。
ツイート数、フォロー数、フォロワー数によって世界情勢は変わります。
追記
※このコンテンツは2010年6月30日のTwitterのBASIC認証廃止と同時に使用不可になります。
TwitterのBASIC認証廃止、企業ユーザーが知っておくべきこと
前回エントリーしたflashをグレードアップ。
twitterのプロフィールの現在地の設定から緯度経度を取得し、
GoogleMap上にアイコンを表示。
緯度経度が取得出来なかった時は、太平洋上に表示。
前回と同様にtwitterでフォローしあってる人を次々に表示。
1人から出てくる人物は5名までに制限。
twitterAPIを使用しない方法に変更。
ステージドラッグ:全体移動
サムネクリック:対象のtwitterページを開く
マウスホイール:ズームインアウト
追記
※このコンテンツは2010年6月30日のTwitterのBASIC認証廃止と同時に使用不可になります。
TwitterのBASIC認証廃止、企業ユーザーが知っておくべきこと
twitterでフォローしあってる人をクモの巣状に表示していきます。
百聞は一見に如かず。とりあえずtwitterのIDを入力してスタートを押してください。
1人から出てくる人物は5名までに制限しています。
ステージドラッグ:全体移動
サムネドラッグ:サムネ移動
サムネダブルクリック:対象のtwitterページを開く
マウスホイール:ズームインアウト
さて、次の更新は水曜日です。
Box2DでLocoRoco風public alphaです。
BGMは「音の葉っぱ」様からお借りしました。
マウスホイール:ズームイン・アウト
ステージドラッグ:世界を傾ける
ステージダブルクリック:つぶれたキャラを元に戻す
追記
※このコンテンツは2010年6月30日のTwitterのBASIC認証廃止と同時に使用不可になります。
TwitterのBASIC認証廃止、企業ユーザーが知っておくべきこと
ソースの話
flashは違うドメインにアクセスしようとするとセキュリティエラーが出てアクセスできません。
そこで実際のtwitterの処理はPHPで行っています。今回のflashでは下記のような処理をしています。
それぞれflashからPOSTでtwitterのid, pass及びtwitterAPIのurlを送信しています。
ログイン処理
urlはhttp://twitter.com/account/verify_credentials.xml
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERPWD, $id.":".$pass); $result=curl_exec($ch); curl_close($ch); echo $result;
つぶやき取得
urlはhttp://twitter.com/statuses/friends_timeline.rss
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; if($id=="" || $pass==""){ echo file_get_contents($url); }else{ $url=get_url_with_idpass($url, $id, $pass); echo file_get_contents($url); } function get_url_with_idpass($a, $b, $c){ $a=str_replace("http://", "", $a); $a="http://".$b.":".$c."@".$a; return $a; }
投稿
urlはhttp://twitter.com/statuses/update.xml
$url = $_POST['url']; $id = $_POST['id']; $pass = $_POST['pass']; $message = $_POST['status']; $url = $url."?status=". rawurlencode($message); $opts = array("http" => array( "method" => "POST", "header" => "Authorization: Basic ". base64_encode($id. ":". $pass) ) ); $context = stream_context_create($opts); $result = file_get_contents($url , false, $context); echo $result;
久々にPapervision3Dでtriangle3Dです。
三角形ポリゴンにバラバラになって別の形にトランスフォーム
import org.papervision3d.core.geom.TriangleMesh3D; import org.papervision3d.core.geom.renderables.Triangle3D; import org.papervision3d.core.geom.renderables.Vertex3D; import org.papervision3d.core.math.NumberUV; var mesh:TriangleMesh3D = new TriangleMesh3D(mat, new Array(), new Array(), null ); var v0:Vertex3D= new Vertex3D( -10, -10, 0 ); var v1:Vertex3D= new Vertex3D( 10, -10, 0 ); var v2:Vertex3D= new Vertex3D( 0, 10, 0 ); mesh.geometry.vertices.push( v0 ); mesh.geometry.vertices.push( v1 ); mesh.geometry.vertices.push( v2 ); var uvA:NumberUV= new NumberUV( 0, 0 ); var uvC:NumberUV= new NumberUV( 1, 0 ); var uvB:NumberUV= new NumberUV( 0, 1 ); mesh.geometry.faces.push( new Triangle3D( mesh, new Array(v0,v1,v2), null, new Array(uvA,uvC,uvB) )); mesh.geometry.ready = true; scene.addChild(mesh);
DisplayObject3Dの面はgeometry.facesに格納されている。
アクセスするときはこんな感じ。
var meshface:Triangle3D=item.geometry.faces[0];
そしてこのDisplayObject3Dの面であるTriangle3Dには頂点が定義されている。
その頂点の情報はverticesに格納されておりx,y,zプロパティがある。
アクセスするときはこんな感じ。
var meshface:Triangle3D=item.geometry.faces[0]; var vx:Number=meshface.vertices[0].x; var vy:Number=meshface.vertices[0].y; var vz:Number=meshface.vertices[0].z; //三角形ポリゴンなのでお察しの通りverticesはvertices[2]まである。
DisplayObject3Dの面Triangle3D(以下モデルMesh)に
外部のTriangleMesh3D(以下外部Mesh)及び外部Meshの面Triangle3Dをぴったし合わせるには
・モデルMeshの頂点定義から三角形の中心点の座標を計算して出す。
・その座標に外部Meshを移動させる。
・モデルMeshの頂点座標から外部Meshの座標を引く。
・出てきた値を外部Meshの面の各頂点座標に適応する。
という処理が必要です。