2010-02-09(Tue) 14:48
【AS3.0】Twitterの自分の発言を取得する。

FlashでTwitterの自分発言のRSSを取得して表示してみようと思います。
Flashオンリーでもできますが、クロスドメインの関係や、
将来的にBASIC認証が廃止になりOAouth認証になったときに
Flashだけでは厳しい面がありますので、今回はTwitterからRSSを取得するのにPHPを使用します。

  1. まずはPHPの準備。
    といっても自分の発言を取得するのには認証は必要ないのでこれだけです。

    <?php
    $req = @file_get_contents('http://twitter.com/statuses/user_timeline/ユーザー名.xml');
    header("Content-Type: application/xml");
    echo $req;
    ?>
    

    アドレスのユーザー名の部分には自分のものを入れてください。
    適当な名前を付けて保存したらサーバーへアップするか、ローカルホストにいれます。
    今回は「load.php」としました。
    アドレスはこんな感じです。
    http://localhost/load.php

    他にフォローしている人の情報や発言なども取得できます。
    APIの日本語訳が公開されてますので、以下のアドレスを参考にしてください。

    http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt

  2. ActionScriptの部分です。
    RSSはXMLファイルですので、扱い方は同じです。
    自分の発言は「status -> text」で取得できます。

    package
    {
    	import flash.display.Sprite;
    	import flash.net.URLLoader;
    	import flash.net.URLRequest;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.events.IOErrorEvent;
    	import flash.text.TextField;
    	import flash.text.TextFieldType;
    
    	public class Main extends Sprite
    	{
    		var xmlLoader:URLLoader;
    		var rss:XML;
    
    		public function Main()
    		{
    
    			//PHPファイルの指定
    			var xmlURL:String = "http://localhost/load.php";
    
    			xmlLoader = new URLLoader();
    			xmlLoader.load(new URLRequest(xmlURL));
    
    			//ロード完了時イベント
    			xmlLoader.addEventListener(Event.COMPLETE, loadComp);
    			//ロードエラー時イベント
    			xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioError);
    
    		}
    		//RSS取得失敗時の処理
    		public function ioError(event:IOErrorEvent):void
    		{
    			var error_txt = new TextField();
    			error_txt.text = "RSSの取得に失敗しました。";
    			this.addChild(error_txt);
    		}
    
    		//RSSロード完了後の処理
    		public function loadComp(event:Event):void
    		{
    			//テキストを入れる配列
    			var textArray:Array = new Array();
    
    			//ロードしたXMLの配置
    			rss = new XML(xmlLoader.data);
    			//テキストの高さ合計
    			var allHeight:Number = 0;
    
    			for (var i:int = 0; i <= 4; i++) {
    				textArray[i] = new TextField();
    				textArray[i].text = rss.status[i].text;
    				//横幅設定
    				textArray[i].width = 200;
    				//折り返し設定ON
    				textArray[i].multiline = textArray[i].wordWrap = true;
    				//ステージに配置
    				this.addChild(textArray[i]);
    				//合計の高さに配置
    				textArray[i].y = allHeight;
    
    				//高さの合計に今の高さをプラス
    				allHeight += textArray[i].textHeight +15;
    			}
    		}
    	}
    }
    

    で、最新の5つまでの発言を取得し表示できるはずです。
    (テキストの配置でちょっとめんどうなことになってます……もっとスマートなやり方があると思うのでが)


comments : 8

  • [...] 【AS3.0】Twitterの自分の発言を取得する。 | ONE OP IXEL http://www.oneopixel.net/2010/02/09_14242 – view page – cached Web制作(主にFlashとかWordPress)の私的メモ日記 Tweets about this link Topsy.Data.Twitte [...]

    Twitter Trackbacks for 【AS3.0】Twitterの自分の発言を取得する。 | ONE OP IXEL [oneopixel.net] on Topsy.com 2010-05-07(Fri) 23:55

  • はじめまして
    Flashでtwitter表示させたくてたどりつきました。

    上記の方法でやってみたのですが画面に何もでません。
    環境FlashCS5

    ・AS3で新規作成
    ・タイムラインに上記ソースコピペ(phpは指定)

    これでパブリッシュしましたが画面が真っ白なままなのですが
    問題点が判れば教えていただけますでしょうか

    くっきんぐ 2010-08-13(Fri) 06:07

  • 閲覧頂ありがとうございます。
    このコードですがタイムラインではなく、外部ASファイルに書く必要があります。
    詳しくは下記のアドレスを参考にして頂ければと思います。
    http://www.webopixel.net/actionscript/120.html

    kei(管理人) 2010-08-15(Sun) 00:33

  • はじめまして。
    FlashでTwitterの発言を表示させるバナーを作りたくて、さまざまなサイトを見てきましたが、ド素人の私でも出来たのは、こちらだけでした。感謝いたします。
    さて、作りたいバナーは、このTwitter表示を1発言づつ自動スクロールをさせて最新のものを表示させたいと思っております。参考になるようなスクリプトやホームページがあればご教授いただきたいのですが・・・宜しくお願い致します。わがままで申し訳ありません。

    hide 2010-08-15(Sun) 19:34

  • hideさん閲覧いただきありがとうございます。
    スクロールするスクリプトとのことですが、上記のスクリプトにTimerイベントで一定時間ごとにアニメーションさせるという感じになると思います。
    そのまま使えるスクリプトというのが私の方でも見つけることができませんでした。お力になれずすみません。
    今後作成できる機会がありましたら、こちらでご紹介しますね。

    kei(管理人) 2010-08-16(Mon) 00:17

  • kei様

    上記のhideと申します。
    お忙しいところを有り難うございました。
    少し方針を変更してみようと思います。
    現在のスクリプトでは最新の発言5件を表示していますが
    これをランダムで表示することは簡単でしょうか?
    それで一度swfを作成して、新たに作ったswfのタイムライン上で、このswfをモーションさせれば私にも出来そうです。

    hide 2010-08-16(Mon) 16:35

  • ランダムで取得というのはTwitterのAPIでは見つかりませんでした(見落としているかもしれませんが)
    なのである程度の数を取得してFlash側でランダムで表示するという感じにするしかないと思います。

    上記のサンプルコードだったら最後のfor文のループ回数を増やしてみてください。
    またPHPの取得時にhttp://twitter.com/statuses/user_timeline/ユーザー名.xml?count=200とすると最大200まで取得できるようです。

    kei(管理人) 2010-08-16(Mon) 22:21

  • お世話になってます。
    一番上の書き込みしたくっきんぐです。
    無事、表示できました!ありがとうございます!

    もう少しだけ希望することがあるのですが

    現在ドキュメント内の一部に今回のtwitterを表示させようとしています。
    この場合ドキュメントの一部にに直に記述する方法が分らないので、表示させる範囲と同じサイズのドキュメントを作成し外部swfにして読み込ませようとしています。

    それでしたいことなのですが

    ・表示された文字の色を白にする
    ・表示する範囲を制限してるため、古い発言はスクロールバーなどで見えるようにする

    は可能でしょうか?
    説明不足かもしれませんが、お力添えいただきたく思います。

    くっきんぐ 2010-08-19(Thu) 07:02

  • くっきんぐ さん
    テキストの色の変更はTextFieldのtextColorプロパティで変更できます。

    上記のサンプルだと最後のループ(54行目あたり)で
    textArray[i].textColor = 0xFFFFFF;
    と入れてみてください。

    スクロールバースクロールバーコンポーネントを利用する方法が一番簡単なんじゃないかと思います。

    hideさん
    もう解決されたかもしれませんが、アニメーションできりかえるというものを作ってみました。
    ちょっと違うものかもしれませんが、少しでも参考になればと思います。
    http://www.webopixel.net/actionscript/130.html

    kei(管理人) 2010-08-20(Fri) 01:20

このコメント欄の RSS フィード

trackbacks : 1

Comment Form
Name
E-mail
URL
Comment

TrackBack URL