Demo | Download
note: this wont work for protected accounts, it’ll require authentication.
neat yeah? 🙂 buggy though, you may download the source code and improve it anyway you could!
in a nutshell, Im using PHP to receive data from flash & send it over to twitter via an API call and then send back the received XML to flash,
twitter.as package { import flash.display.*; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.system.Security; import flash.net.URLVariables; import flash.net.*; public class Twitter extends MovieClip { private var cont:MovieClip; public var speed:Number=-6; private var menu:Array = new Array(); //Security.allowDomain("twitter.com"); public function Twitter():void { //create a new container ( a movieclip ) cont = new MovieClip(); // set its x and y cont.x=stage.stageWidth*0.5; cont.y=(stage.stageHeight*0.5); // add it to the stage addChild(cont); //attach an event listener addEventListener(Event.ENTER_FRAME, render); //attach an event listener to the "go" button go.addEventListener(MouseEvent.CLICK,loadTweets) } private function loadTweets(E:Event):void{ loading_mc.alpha = 1; //PHP path or full path var url:String = "proxy.php"; //Grab the twitter handle var tweetHandle:String = handle.text; //declare variables var myVars:URLVariables = new URLVariables(); //assign variables myVars.user = tweetHandle; //create a new request var Request:URLRequest = new URLRequest(); //assign request url Request.url = url; //define the methiod ( GET or POST ) Request.method = URLRequestMethod.POST; //attach the variables to the request Request.data = myVars; //create a kiader for the request var tweetXmlLoader:URLLoader = new URLLoader(); //define the data format tweetXmlLoader.dataFormat = URLLoaderDataFormat.TEXT; // attach an event listener tweetXmlLoader.addEventListener(Event.COMPLETE, generateTweets); //time for action! tweetXmlLoader.load(Request); //remove unwanted library items and ditach unused events listeners go.enabled = false; go.removeEventListener(MouseEvent.CLICK, loadTweets); removeChild(go); removeChild(handle); } public function generateTweets(e:Event):void { //remove "loading tweets" movieclip from stage removeChild(loading_mc); //define an XMLList and assign the new received data to it var tweetXML:XMLList = new XMLList(e.target.data ); // loop em BABY! for (var i:uint=0; i<10; i++) { //grab a tweetbox from the library ( runtime loading ) see export for more info. var t:MovieClip = new tweetBox(); //assign the status ( tweet ) to the text within the tweetBox t.txtBox.text = tweetXML.status[i].text //just to check trace (tweetXML.status[i].text); // assign a z prop ( focal length ) how close/far is each box t.z=3000-(i*400); // add it to the container we created earlier cont.addChild(t); //push the movieclip to use it on the Event.ENTER_FRAME function ( render ) menu.push(t); } } function render(e:Event):void { // loop through menu for(var j:int=menu.length-1;j>=0;j--) { //increase the z prop! menu[j].z+=speed; // if item in menu Z prop is greater less than 600 then take it back to 3400 if (menu[j].z<-600){ menu[j].z=3400; } } } } }
Now for the PHP part … you may also consider using the php function “readfile” instead if cURL, I just felt like testing it!
<?php $url = $_POST['user']; $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL,'https:\/\/zainals.com//zainals.com\/\/zainals.com//zainals.com//api.twitter.com/1/statuses/user_timeline.xml?screen_name='.$url); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($curl_handle); curl_close($curl_handle); if (empty($buffer)) { print "Sorry, Moe is a sicko!.<p>"; } else { print $buffer; } ?>