※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FORKED
  1. // forked from umhr's Twitterの検索
  2. /*
  3.  * Twitter Search API Method: search
  4.  * http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search
  5.  * 
  6.  * Twitter API 仕様書 (勝手に日本語訳シリーズ)
  7.  * http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html
  8.  * */
  9. package {
  10.     import flash.display.Shape;
  11.     import flash.display.Sprite;
  12.     import flash.events.Event;
  13.     import flash.events.IOErrorEvent;
  14.     import flash.events.KeyboardEvent;
  15.     import flash.events.MouseEvent;
  16.     import flash.events.TextEvent;
  17.     import flash.net.URLRequest;
  18.     import flash.net.URLLoader;
  19.     import flash.text.TextField;
  20.     import flash.text.TextFieldType;
  21.     import flash.net.navigateToURL;
  22.     /**
  23.      * ...
  24.      * @author umhr
  25.      */
  26.     public class Main extends Sprite {
  27.         private var _resultStage:Sprite = new Sprite();
  28.         public function Main():void {
  29.             //ヘッダーのサーチエリア
  30.             //背景
  31.             var titleArea:Shape = new Shape();
  32.             titleArea.graphics.beginFill(0x39CCFF);
  33.             titleArea.graphics.drawRect(0046523);
  34.             addChild(titleArea);
  35.             //Serchの文字
  36.             var serchWord:TextField = new TextField();
  37.             serchWord.text = "Serch:";
  38.             serchWord.width = 33;
  39.             serchWord.height = 18;
  40.             serchWord.x = 2;
  41.             serchWord.y = 2;
  42.             serchWord.textColor = 0xFFFFFF;
  43.             addChild(serchWord);
  44.             //テキスト入力欄。キーボードのキーを押し上げた際にonKeyUpが実行される
  45.             var title:TextField = new TextField();
  46.             title.text = "wonderfl";
  47.             title.width = 426;
  48.             title.height = 18;
  49.             title.x = 36;
  50.             title.y = 2;
  51.             title.border = true;
  52.             title.borderColor = 0xFFFFFF;
  53.             title.background = true;
  54.             title.backgroundColor = 0x99DDFF;
  55.             title.type = TextFieldType.INPUT;
  56.             title.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
  57.             addChild(title);
  58.             
  59.             //検索結果を配置するSpriteをaddChild
  60.             _resultStage.y = 25;
  61.             addChild(_resultStage);
  62.             
  63.             //初期状態で検索結果画面が出るように、検索を実行する。
  64.             serch(title.text);
  65.         }
  66.         
  67.         private function onKeyUp(e:KeyboardEvent):void {
  68.             //Enterキーのキーコード13だったら、serchメソッドを実行。引数には適すと入力欄の文字列
  69.             if (e.keyCode == 13) {
  70.                 serch(e.currentTarget.text)
  71.             }
  72.         }
  73.         
  74.         public function serch(serchWord:String):void {
  75.             //検索APIにリクエストを投げる
  76.             //http://search.twitter.com/crossdomain.xml上で許可をしているので
  77.             //特に指定しなくても自動的に確認して、許可を得られる
  78.             var myURLLoader:URLLoader = new URLLoader();
  79.             myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);
  80.             myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
  81.             var xmlURL:String = "http://search.twitter.com/search.atom?q=";
  82.             //encodeURIComponent()を使うことによって、#や日本語にも対応
  83.             xmlURL += encodeURIComponent(serchWord);        //*1
  84.             myURLLoader.load(new URLRequest(xmlURL));
  85.         }
  86.         
  87.         public function onIoError(e:IOErrorEvent):void {
  88.             trace(e.type);
  89.         }
  90.         
  91.         private function onCompleteXML(e:Event):void {
  92.             //eventListenerを削除
  93.             e.currentTarget.removeEventListener(Event.COMPLETE, onCompleteXML);
  94.             //_resultStage上のオブジェクトを全て削除
  95.             // ☆ 2回目以降検索した際に以前のデータを削除する(そうしないと検索結果が重なる)
  96.             while (_resultStage.numChildren) {
  97.                 _resultStage.removeChildAt(0);
  98.             }
  99.             
  100.             //XML型にキャスト
  101.             var myXML:XML = new XML(e.currentTarget.data);
  102.             //namespaceを設定
  103.             default xml namespace = new Namespace("http://www.w3.org/2005/Atom");        //*2
  104.             
  105.             //ヘッダーの下
  106.             var tfY:int = 0;
  107.             //要素を取り出して、textFieldを作りならべる
  108.             var itemLength:int = myXML.entry.length();
  109.             
  110.             for (var i:int = 0; i < itemLength; i++) {
  111.                 //xmlからlink,authorName,titleの各値を取得
  112.                 var link:String = myXML.entry[i].link[0].@href;
  113.                 var authorName:String = myXML.entry[i].author.name;
  114.                 var title:String = myXML.entry[i].title;
  115.                 //アイコン画像のURLを取得
  116.                 var imgURL:String = myXML.entry[i].link[1].@href;
  117.                 //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別
  118.                 var extention:String = imgURL.substr( -4);
  119.                 extention = extention.toLowerCase();
  120.                 if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
  121.                     //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
  122.                     imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
  123.                 }
  124.                 //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
  125.                 imgURL = encodeURI(imgURL);        //*3
  126.                 //小さい画像で十分なので、名前を差し替える
  127.                 imgURL = imgURL.replace(/_normal\./, "_mini\.");
  128.                 
  129.                 //得られた各値をhtmlTextに入るように整形
  130.                 var htmldata:String = "";
  131.                 htmldata = "<a href='" + link + "' target='_blank'>";
  132.                 htmldata += "<img src='" + imgURL + "' width='24' height='24' />";
  133.                 htmldata += "<b>" + authorName + "</b> " + title + "</a>";
  134.                 
  135.                 //検索結果のテキストフィールド
  136.                 var myTextField:TextField = new TextField();
  137.                 myTextField.width = 460;
  138.                 myTextField.x = 2;
  139.                 myTextField.wordWrap = true;
  140.                 myTextField.background = true;
  141.                 myTextField.backgroundColor = 0xFFFFFF;
  142.                 myTextField.border = true;
  143.                 myTextField.borderColor = 0x39CCFF;
  144.                 myTextField.htmlText = htmldata;
  145.                 myTextField.autoSize = "left";
  146.                 //テキストフィールドのy座標はtfYに加算していくことにより、決定
  147.                 myTextField.y = tfY;
  148.                 tfY += myTextField.height + 3;
  149.                 _resultStage.addChild(myTextField);
  150.             }
  151.         }
  152.     }
  153. }
noswf
  1. /*
  2.  * Twitter Search API Method: search
  3.  * http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search
  4.  * 
  5.  * Twitter API 仕様書 (勝手に日本語訳シリーズ)
  6.  * http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html
  7.  * */
  8. package {
  9.     import flash.display.Bitmap;
  10.     import flash.display.BitmapData;
  11.     import flash.display.DisplayObject;
  12.     import flash.display.Shape;
  13.     import flash.display.Sprite;
  14.     import flash.events.Event;
  15.     import flash.events.IOErrorEvent;
  16.     import flash.events.KeyboardEvent;
  17.     import flash.events.MouseEvent;
  18.     import flash.events.TextEvent;
  19.     import flash.filters.DropShadowFilter;
  20.     import flash.geom.PerspectiveProjection;
  21.     import flash.geom.Point;
  22.     import flash.net.URLRequest;
  23.     import flash.net.URLLoader;
  24.     import flash.text.TextField;
  25.     import flash.text.TextFieldType;
  26.     import flash.net.navigateToURL;
  27.     import flash.display.DisplayObjectContainer;
  28.     import flash.geom.Vector3D;
  29.     import org.libspark.betweenas3.BetweenAS3;
  30.     import org.libspark.betweenas3.tweens.ITween;
  31.     import org.libspark.betweenas3.easing.*;
  32.     /**
  33.      * ...
  34.      * @author umhr
  35.      */
  36.     //[SWF(backgroundColor="0x000000",width=465,height=465)]
  37.     public class Main extends Sprite {
  38.         private var _resultStage:Sprite = new Sprite();
  39.         public function Main():void {
  40.             //ヘッダーのサーチエリア
  41.             //背景
  42.             var titleArea:Shape = new Shape();
  43.             titleArea.graphics.beginFill(0x39CCFF);
  44.             titleArea.graphics.drawRect(0046523);
  45.             addChild(titleArea);
  46.             //Serchの文字
  47.             var serchWord:TextField = new TextField();
  48.             serchWord.text = "Serch:";
  49.             serchWord.width = 33;
  50.             serchWord.height = 18;
  51.             serchWord.x = 2;
  52.             serchWord.y = 2;
  53.             serchWord.textColor = 0xFFFFFF;
  54.             addChild(serchWord);
  55.             //テキスト入力欄。キーボードのキーを押し上げた際にonKeyUpが実行される
  56.             var title:TextField = new TextField();
  57.             title.text = "アップル";
  58.             title.width = 426;
  59.             title.height = 18;
  60.             title.x = 36;
  61.             title.y = 2;
  62.             title.border = true;
  63.             title.borderColor = 0xFFFFFF;
  64.             title.background = true;
  65.             title.backgroundColor = 0x99DDFF;
  66.             title.type = TextFieldType.INPUT;
  67.             title.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
  68.             addChild(title);
  69.             
  70.             //検索結果を配置するSpriteをaddChild
  71.             _resultStage.y = 25;
  72.             //_resultStage.z = 0;
  73.             addChild(_resultStage);
  74.             
  75.             //初期状態で検索結果画面が出るように、検索を実行する。
  76.             serch(title.text);
  77.         }
  78.         
  79.         private function onKeyUp(e:KeyboardEvent):void {
  80.             //Enterキーのキーコード13だったら、serchメソッドを実行。引数には適すと入力欄の文字列
  81.             if (e.keyCode == 13) {
  82.                 serch(e.currentTarget.text)
  83.             }
  84.         }
  85.         
  86.         public function serch(serchWord:String):void {
  87.             //検索APIにリクエストを投げる
  88.             //http://search.twitter.com/crossdomain.xml上で許可をしているので
  89.             //特に指定しなくても自動的に確認して、許可を得られる
  90.             var myURLLoader:URLLoader = new URLLoader();
  91.             myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);
  92.             myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
  93.             var xmlURL:String = "http://search.twitter.com/search.atom?q=";
  94.             //encodeURIComponent()を使うことによって、#や日本語にも対応
  95.             xmlURL += encodeURIComponent(serchWord);        //*1
  96.             myURLLoader.load(new URLRequest(xmlURL));
  97.         }
  98.         
  99.         public function onIoError(e:IOErrorEvent):void {
  100.             trace(e.type);
  101.         }
  102.         
  103.         private function onCompleteXML(e:Event):void {
  104.             //eventListenerを削除
  105.             e.currentTarget.removeEventListener(Event.COMPLETE, onCompleteXML);
  106.             //_resultStage上のオブジェクトを全て削除
  107.             while (_resultStage.numChildren) {
  108.                 _resultStage.removeChildAt(0);
  109.                 _resultStage.z = 0;
  110.             }
  111.             
  112.             //XML型にキャスト
  113.             var myXML:XML = new XML(e.currentTarget.data);
  114.             //namespaceを設定
  115.             default xml namespace = new Namespace("http://www.w3.org/2005/Atom");        //*2
  116.             
  117.             //要素を取り出して、textFieldを作りならべる
  118.             var itemLength:int = myXML.entry.length();
  119.             //trace(itemLength)
  120.             for (var i:int = 0; i < itemLength; i++) {
  121.                 //xmlからlink,authorName,titleの各値を取得
  122.                 var link:String = myXML.entry[i].link[0].@href;
  123.                 var authorName:String = myXML.entry[i].author.name;
  124.                 var title:String = myXML.entry[i].title;
  125.                 //アイコン画像のURLを取得
  126.                 var imgURL:String = myXML.entry[i].link[1].@href;
  127.                 //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別
  128.                 var extention:String = imgURL.substr( -4);
  129.                 extention = extention.toLowerCase();
  130.                 if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
  131.                     //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
  132.                     imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
  133.                 }
  134.                 //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
  135.                 imgURL = encodeURI(imgURL);        //*3
  136.                 //小さい画像で十分なので、名前を差し替える
  137.                 //imgURL = imgURL.replace(/_normal\./, "_mini\.");
  138.                 
  139.                 //得られた各値をhtmlTextに入るように整形
  140.                 var htmldata:String = "";
  141.                 //htmldata = "<a href='" + link + "' target='_blank'>";
  142.                 htmldata += "<img src='" + imgURL + "' width='48' height='48' checkPolicyFile='true' />";
  143.                 htmldata += "<b>" + authorName + "</b> " + title + "";
  144.                 
  145.                 //検索結果のテキストフィールド
  146.                 var myTextField:TextField = new TextField();
  147.                 myTextField.width = 300;
  148.                 myTextField.x = 2+80;
  149.                 myTextField.wordWrap = true;
  150.                 myTextField.background = true;
  151.                 myTextField.backgroundColor = 0x222222;
  152.                 myTextField.border = true;
  153.                 myTextField.selectable = false;
  154.                 myTextField.borderColor = 0x000000;
  155.                 myTextField.textColor = 0xFFFFFF;
  156.                 myTextField.htmlText = htmldata;
  157.                 myTextField.autoSize = "left";
  158.                 //テキストフィールドのy座標はtfYに加算していくことにより、決定
  159.                 myTextField.y = 280;
  160.                 myTextField.z = 3000 - i * 250 + 20;
  161.                 myTextField.name = String(3000 - i * 250);
  162.                 myTextField.filters = [new DropShadowFilter(2,90,0x666666,1,8,8)];
  163.                 _resultStage.addChild(myTextField);
  164.             }
  165.             _resultStage.addEventListener(MouseEvent.CLICK, onClick);
  166.             this.transform.perspectiveProjection = new PerspectiveProjection();
  167.             this.transform.perspectiveProjection.projectionCenter = new Point(stage.stageWidth / 2, stage.stageHeight / 2.5);
  168.         }
  169.         private var _t:ITween;
  170.         private function onClick(event:MouseEvent):void {
  171.             if (_t != null) {
  172.                 _t.stop();
  173.             }
  174.             _t = BetweenAS3.tween(_resultStage, { z: -Number(event.target.name) }, null1, Quint.easeOut);
  175.             _t.onUpdate = onUpdate;
  176.             _t.play();
  177.         }
  178.         private function onUpdate():void {
  179.             var n:int = _resultStage.numChildren;
  180.             for (var i:int = 0; i < n; i++) {
  181.                 _resultStage.getChildAt(i).visible = (_resultStage.getChildAt(i).z+_resultStage.z > -250);
  182.             }
  183.         }
  184.     }
  185. }
noswf
  1. // forked from umhr's Twitterの検索
  2. /*
  3.  * Twitter Search API Method: search
  4.  * http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search
  5.  * 
  6.  * Twitter API 仕様書 (勝手に日本語訳シリーズ)
  7.  * http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html
  8.  * */
  9. package {
  10.     import flash.display.Shape;
  11.     import flash.display.Sprite;
  12.     import flash.events.Event;
  13.     import flash.events.IOErrorEvent;
  14.     import flash.events.KeyboardEvent;
  15.     import flash.events.MouseEvent;
  16.     import flash.events.TextEvent;
  17.     import flash.net.URLRequest;
  18.     import flash.net.URLLoader;
  19.     import flash.text.TextField;
  20.     import flash.text.TextFieldType;
  21.     import flash.net.navigateToURL;
  22.     /**
  23.      * ...
  24.      * @author umhr
  25.      */
  26.     public class Main extends Sprite {
  27.         private var _resultStage:Sprite = new Sprite();
  28.         public function Main():void {
  29.             //ヘッダーのサーチエリア
  30.             //背景
  31.             var titleArea:Shape = new Shape();
  32.             titleArea.graphics.beginFill(0x39CCFF);
  33.             titleArea.graphics.drawRect(0046523);
  34.             addChild(titleArea);
  35.             //Serchの文字
  36.             var serchWord:TextField = new TextField();
  37.             serchWord.text = "Serch:";
  38.             serchWord.width = 33;
  39.             serchWord.height = 18;
  40.             serchWord.x = 2;
  41.             serchWord.y = 2;
  42.             serchWord.textColor = 0xFFFFFF;
  43.             addChild(serchWord);
  44.             //テキスト入力欄。キーボードのキーを押し上げた際にonKeyUpが実行される
  45.             var title:TextField = new TextField();
  46.             title.text = "wonderfl";
  47.             title.width = 426;
  48.             title.height = 18;
  49.             title.x = 36;
  50.             title.y = 2;
  51.             title.border = true;
  52.             title.borderColor = 0xFFFFFF;
  53.             title.background = true;
  54.             title.backgroundColor = 0x99DDFF;
  55.             title.type = TextFieldType.INPUT;
  56.             title.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
  57.             addChild(title);
  58.             
  59.             //検索結果を配置するSpriteをaddChild
  60.             _resultStage.y = 25;
  61.             addChild(_resultStage);
  62.             
  63.             //初期状態で検索結果画面が出るように、検索を実行する。
  64.             serch(title.text);
  65.         }
  66.         
  67.         private function onKeyUp(e:KeyboardEvent):void {
  68.             //Enterキーのキーコード13だったら、serchメソッドを実行。引数には適すと入力欄の文字列
  69.             if (e.keyCode == 13) {
  70.                 serch(e.currentTarget.text)
  71.             }
  72.         }
  73.         
  74.         public function serch(serchWord:String):void {
  75.             //検索APIにリクエストを投げる
  76.             //http://search.twitter.com/crossdomain.xml上で許可をしているので
  77.             //特に指定しなくても自動的に確認して、許可を得られる
  78.             var myURLLoader:URLLoader = new URLLoader();
  79.             myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);
  80.             myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
  81.             var xmlURL:String = "http://search.twitter.com/search.atom?q=";
  82.             //encodeURIComponent()を使うことによって、#や日本語にも対応
  83.             xmlURL += encodeURIComponent(serchWord);        //*1
  84.             myURLLoader.load(new URLRequest(xmlURL));
  85.         }
  86.         
  87.         public function onIoError(e:IOErrorEvent):void {
  88.             trace(e.type);
  89.         }
  90.         
  91.         private function onCompleteXML(e:Event):void {
  92.             //eventListenerを削除
  93.             e.currentTarget.removeEventListener(Event.COMPLETE, onCompleteXML);
  94.             //_resultStage上のオブジェクトを全て削除
  95.             while (_resultStage.numChildren) {
  96.                 _resultStage.removeChildAt(0);
  97.             }
  98.             
  99.             //XML型にキャスト
  100.             var myXML:XML = new XML(e.currentTarget.data);
  101.             //namespaceを設定
  102.             default xml namespace = new Namespace("http://www.w3.org/2005/Atom");        //*2
  103.             
  104.             //ヘッダーの下
  105.             var tfY:int = 0;
  106.             //要素を取り出して、textFieldを作りならべる
  107.             var itemLength:int = myXML.entry.length();
  108.             
  109.             for (var i:int = 0; i < itemLength; i++) {
  110.                 //xmlからlink,authorName,titleの各値を取得
  111.                 var link:String = myXML.entry[i].link[0].@href;
  112.                 var authorName:String = myXML.entry[i].author.name;
  113.                 var title:String = myXML.entry[i].title;
  114.                 //アイコン画像のURLを取得
  115.                 var imgURL:String = myXML.entry[i].link[1].@href;
  116.                 //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別
  117.                 var extention:String = imgURL.substr( -4);
  118.                 extention = extention.toLowerCase();
  119.                 if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
  120.                     //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
  121.                     imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
  122.                 }
  123.                 //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
  124.                 imgURL = encodeURI(imgURL);        //*3
  125.                 //小さい画像で十分なので、名前を差し替える
  126.                 imgURL = imgURL.replace(/_normal\./, "_mini\.");
  127.                 
  128.                 //得られた各値をhtmlTextに入るように整形
  129.                 var htmldata:String = "";
  130.                 htmldata = "<a href='" + link + "' target='_blank'>";
  131.                 htmldata += "<img src='" + imgURL + "' width='24' height='24' />";
  132.                 htmldata += "<b>" + authorName + "</b> " + title + "</a>";
  133.                 
  134.                 //検索結果のテキストフィールド
  135.                 var myTextField:TextField = new TextField();
  136.                 myTextField.width = 460;
  137.                 myTextField.x = 2;
  138.                 myTextField.wordWrap = true;
  139.                 myTextField.background = true;
  140.                 myTextField.backgroundColor = 0xFFFFFF;
  141.                 myTextField.border = true;
  142.                 myTextField.borderColor = 0x39CCFF;
  143.                 myTextField.htmlText = htmldata;
  144.                 myTextField.autoSize = "left";
  145.                 //テキストフィールドのy座標はtfYに加算していくことにより、決定
  146.                 myTextField.y = tfY;
  147.                 tfY += myTextField.height + 3;
  148.                 _resultStage.addChild(myTextField);
  149.             }
  150.         }
  151.     }
  152. }
noswf
  1. // forked from umhr's Twitterの検索
  2. // 矢印キーでスクロールスピードを調整出来ます
  3. /*
  4.  * Twitter Search API Method: search
  5.  * http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search
  6.  * 
  7.  * Twitter API 仕様書 (勝手に日本語訳シリーズ)
  8.  * http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html
  9.  * */
  10. package {
  11.     import flash.display.Shape;
  12.     import flash.display.Sprite;
  13.     import flash.events.Event;
  14.     import flash.events.IOErrorEvent;
  15.     import flash.events.KeyboardEvent;
  16.     import flash.events.MouseEvent;
  17.     import flash.events.TextEvent;
  18.     import flash.net.URLRequest;
  19.     import flash.net.URLLoader;
  20.     import flash.text.TextField;
  21.     import flash.text.TextFieldType;
  22.     import flash.text.TextFormat;
  23.     import flash.net.navigateToURL;
  24.     import caurina.transitions.Tweener;
  25.     /**
  26.      * ...
  27.      * @author umhr
  28.      */
  29.     [SWF(backgroundColor = "0x590073", frameRate = "120")]
  30.     
  31.     public class Main extends Sprite {
  32.         private var _resultStage:Sprite = new Sprite();
  33.                 private var c_SearchBackGround:uint = 0xFF00E9;
  34.                 private var c_SearchText:uint = 0xFFFFFF;
  35.         private var c_TailBackGround:uint = 0x590073;
  36.                 private var c_TitleBackGround:uint = 0xACFF80;
  37.                 private var c_TitleBorder:uint = 0x0C58E8;
  38.                 private var c_TitleText:uint = 0x0C58E8;
  39.                 private var c_ResultBackGround:uint = 0x00FBFF;
  40.                 private var c_ResultBorder:uint = 0xFF00E9;
  41.                 private var c_ResultText:uint = 0x590073;
  42.         private var tfY:int = 0;
  43.         private var speed_:int = 1;
  44.         private var speedBar_:TextField;
  45.         public function Main():void {
  46.             //ヘッダーのサーチエリア
  47.             //背景
  48.             var titleArea:Shape = new Shape();
  49.             titleArea.graphics.beginFill(c_SearchBackGround);
  50.             titleArea.graphics.drawRect(0046523);
  51.             // titleArea.graphics.beginFill(c_TailBackGround);
  52.             // titleArea.graphics.drawRect(0, 23, 465, 465);
  53.             addChild(titleArea);
  54.             //Searchの文字
  55.             var searchWord:TextField = new TextField();
  56.             searchWord.text = "検索:";
  57.             searchWord.width = 33;
  58.             searchWord.height = 18;
  59.             searchWord.x = 2;
  60.             searchWord.y = 2;
  61.             searchWord.textColor = c_SearchText;
  62.             addChild(searchWord);
  63.             //テキスト入力欄。キーボードのキーを押し上げた際にonKeyUpが実行される
  64.             var title:TextField = new TextField();
  65.             title.text = "ヤクルト";
  66.             title.width = 426;
  67.             title.height = 18;
  68.             title.x = 36;
  69.             title.y = 2;
  70.             title.border = true;
  71.             title.borderColor = c_TitleBorder;
  72.             title.background = true;
  73.             title.backgroundColor = c_TitleBackGround;
  74.                         title.textColor = c_TitleText;
  75.             title.type = TextFieldType.INPUT;
  76.             title.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
  77.             addChild(title);
  78.             //検索結果を配置するSpriteをaddChild
  79.             _resultStage.y = 25;
  80.             addChildAt(_resultStage, 0);
  81.             
  82.             //初期状態で検索結果画面が出るように、検索を実行する。
  83.             search(title.text);
  84.             // スピード制御
  85.             stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
  86.             // スピード表示
  87.             speedBar_ = new TextField();
  88.             var format:TextFormat = new TextFormat();
  89.             format.size = 30;
  90.             speedBar_.defaultTextFormat = format;
  91.             speedBar_.width = 465;
  92.             speedBar_.y = stage.stageHeight * 0.5 - Number(format.size);
  93.             speedBar_.autoSize = "center";
  94.             speedBar_.background = true;
  95.             speedBar_.backgroundColor = 0x000000;
  96.             speedBar_.border = true;
  97.                         speedBar_.textColor = 0xFFFFFF;
  98.             speedBar_.alpha = 0;
  99.             speedBar_.text = "";
  100.             addChild(speedBar_);
  101.         }
  102.         
  103.         private function onKeyUp(e:KeyboardEvent):void {
  104.             //Enterキーのキーコード13だったら、searchメソッドを実行。引数には適すと入力欄の文字列
  105.             if (e.keyCode == 13) {
  106.                 search(e.currentTarget.text)
  107.                 speed_ = 1;
  108.             }
  109.         }
  110.         
  111.         public function search(searchWord:String):void {
  112.             //検索APIにリクエストを投げる
  113.             //http://search.twitter.com/crossdomain.xml上で許可をしているので
  114.             //特に指定しなくても自動的に確認して、許可を得られる
  115.             var myURLLoader:URLLoader = new URLLoader();
  116.             myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);
  117.             myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
  118.             // 検索オプション
  119.             var xmlURL:String = "http://search.twitter.com/search.atom?q=";
  120.             //encodeURIComponent()を使うことによって、#や日本語にも対応
  121.             xmlURL += encodeURIComponent(searchWord);        //*1
  122.             // 日本語のみ
  123.             xmlURL += "&lang=ja"
  124.             // 件数表示
  125.             xmlURL += "&rpp=100";
  126.             // 検索結果のうち、指定したIDより大きな値のIDの発言のみを返す
  127.             // xmlURL += "&since_id=7584851355";
  128.             // 読み込み
  129.             myURLLoader.load(new URLRequest(xmlURL));
  130.         }
  131.         
  132.         public function onIoError(e:IOErrorEvent):void {
  133.             trace(e.type);
  134.         }
  135.         
  136.         private function onCompleteXML(e:Event):void {
  137.             //eventListenerを削除
  138.             e.currentTarget.removeEventListener(Event.COMPLETE, onCompleteXML);
  139.             //_resultStage上のオブジェクトを全て削除
  140.             while (_resultStage.numChildren) {
  141.                 _resultStage.removeChildAt(0);
  142.             }
  143.             
  144.             //XML型にキャスト
  145.             var myXML:XML = new XML(e.currentTarget.data);
  146. //            trace("========");
  147. //            trace(myXML);
  148.             //namespaceを設定
  149.             default xml namespace = new Namespace("http://www.w3.org/2005/Atom");        //*2
  150.             
  151.             //ヘッダーの下
  152.             tfY = 0;
  153.             //要素を取り出して、textFieldを作りならべる
  154.             var itemLength:int = myXML.entry.length();
  155.             
  156.             for (var i:int = 0; i < itemLength; i++) {
  157.                 //xmlからlink,authorName,titleの各値を取得
  158.                 var link:String = myXML.entry[i].link[0].@href;
  159.                 var authorName:String = myXML.entry[i].author.name;
  160.                 var title:String = myXML.entry[i].title;
  161.                 //アイコン画像のURLを取得
  162.                 var imgURL:String = myXML.entry[i].link[1].@href;
  163.                 //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別
  164.                 var extention:String = imgURL.substr( -4);
  165.                 extention = extention.toLowerCase();
  166.                 if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
  167.                     //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
  168.                     imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
  169.                 }
  170.                 //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
  171.                 imgURL = encodeURI(imgURL);        //*3
  172.                 //小さい画像で十分なので、名前を差し替える
  173.                 imgURL = imgURL.replace(/_normal\./, "_mini\.");
  174.                 
  175.                 //得られた各値をhtmlTextに入るように整形
  176.                 var htmldata:String = "";
  177.                 htmldata = "<a href='" + link + "' target='_blank'>";
  178.                 htmldata += "<img src='" + imgURL + "' width='24' height='24' />";
  179.                 htmldata += "<b>" + authorName + "</b> " + title + "</a>";
  180.                 
  181.                 //検索結果のテキストフィールド
  182.                 var myTextField:TextField = new TextField();
  183.                 myTextField.width = 460;
  184.                 myTextField.x = 2;
  185.                 myTextField.wordWrap = true;
  186.                 myTextField.background = true;
  187.                 myTextField.backgroundColor = c_ResultBackGround;
  188.                 myTextField.border = true;
  189.                 myTextField.borderColor = c_ResultBorder;
  190.                                 myTextField.textColor = c_ResultText;
  191.                 myTextField.htmlText = htmldata;
  192.                 myTextField.autoSize = "left";
  193.                 
  194.                 //テキストフィールドのy座標はtfYに加算していくことにより、決定
  195.                 myTextField.y = tfY;
  196.                 tfY += myTextField.height + 3;
  197.                 _resultStage.addChild(myTextField);
  198.                 //スクロール
  199.                 myTextField.addEventListener(Event.ENTER_FRAME, updateText);
  200.                 
  201.             }
  202.         }
  203.         private function updateText(e:Event):void {
  204.             e.target.y -= speed_;
  205.             var size:int = Math.max(tfY, 465);
  206.             
  207.             if (e.target.y + e.target.height < -24)
  208.               e.target.y += size + 100;
  209.             if (e.target.y > size)
  210.               e.target.y -= size + 100;
  211.         }
  212.         private function onKeyDown(e:KeyboardEvent):void {
  213.             if (e.keyCode == 38) {
  214.             speed_ -= 1;
  215.             if (speed_ < -10)
  216.               speed_ = -10;
  217.              updateSpeedBar();
  218.               
  219.             } else if (e.keyCode == 40) {
  220.             speed_ += 1;
  221.             if (speed_ > 10)
  222.               speed_ = 10;
  223.              updateSpeedBar();
  224.             }
  225.         }
  226.         private function updateSpeedBar():void {
  227.             speedBar_.text = speed_.toString();
  228.             speedBar_.alpha = 1;
  229.             Tweener.addTween(speedBar_, {time:1, alpha:0, transition:"linear"});
  230.         }
  231.     }
  232. }
noswf
  1. // forked from umhr's Twitterの検索
  2. /*
  3.  * Twitter Search API Method: search
  4.  * http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search
  5.  * 
  6.  * Twitter API 仕様書 (勝手に日本語訳シリーズ)
  7.  * http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html
  8.  * */
  9. package {
  10.     import flash.display.Shape;
  11.     import flash.display.Sprite;
  12.     import flash.events.Event;
  13.     import flash.events.IOErrorEvent;
  14.     import flash.events.KeyboardEvent;
  15.     import flash.events.MouseEvent;
  16.     import flash.events.TextEvent;
  17.     import flash.net.URLRequest;
  18.     import flash.net.URLLoader;
  19.     import flash.text.TextField;
  20.     import flash.text.TextFieldType;
  21.     import flash.net.navigateToURL;
  22.     /**
  23.      * ...
  24.      * @author umhr
  25.      */
  26.     public class Main extends Sprite {
  27.         private var _resultStage:Sprite = new Sprite();
  28.         public function Main():void {
  29.             //ヘッダーのサーチエリア
  30.             //背景
  31.             var titleArea:Shape = new Shape();
  32.             titleArea.graphics.beginFill(0x39CCFF);
  33.             titleArea.graphics.drawRect(0046523);
  34.             addChild(titleArea);
  35.             //Serchの文字
  36.             var serchWord:TextField = new TextField();
  37.             serchWord.text = "Serch:";
  38.             serchWord.width = 33;
  39.             serchWord.height = 18;
  40.             serchWord.x = 2;
  41.             serchWord.y = 2;
  42.             serchWord.textColor = 0xFFFFFF;
  43.             addChild(serchWord);
  44.             //テキスト入力欄。キーボードのキーを押し上げた際にonKeyUpが実行される
  45.             var title:TextField = new TextField();
  46.             title.text = "wonderfl";
  47.             title.width = 426;
  48.             title.height = 18;
  49.             title.x = 36;
  50.             title.y = 2;
  51.             title.border = true;
  52.             title.borderColor = 0xFFFFFF;
  53.             title.background = true;
  54.             title.backgroundColor = 0x99DDFF;
  55.             title.type = TextFieldType.INPUT;
  56.             title.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
  57.             addChild(title);
  58.             
  59.             //検索結果を配置するSpriteをaddChild
  60.             _resultStage.y = 25;
  61.             addChild(_resultStage);
  62.             
  63.             //初期状態で検索結果画面が出るように、検索を実行する。
  64.             serch(title.text);
  65.         }
  66.         
  67.         private function onKeyUp(e:KeyboardEvent):void {
  68.             //Enterキーのキーコード13だったら、serchメソッドを実行。引数には適すと入力欄の文字列
  69.             if (e.keyCode == 13) {
  70.                 serch(e.currentTarget.text)
  71.             }
  72.         }
  73.         
  74.         public function serch(serchWord:String):void {
  75.             //検索APIにリクエストを投げる
  76.             //http://search.twitter.com/crossdomain.xml上で許可をしているので
  77.             //特に指定しなくても自動的に確認して、許可を得られる
  78.             var myURLLoader:URLLoader = new URLLoader();
  79.             myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);
  80.             myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
  81.             var xmlURL:String = "http://search.twitter.com/search.atom?q=";
  82.             //encodeURIComponent()を使うことによって、#や日本語にも対応
  83.             xmlURL += encodeURIComponent(serchWord);        //*1
  84.             myURLLoader.load(new URLRequest(xmlURL));
  85.         }
  86.         
  87.         public function onIoError(e:IOErrorEvent):void {
  88.             trace(e.type);
  89.         }
  90.         
  91.         private function onCompleteXML(e:Event):void {
  92.             //eventListenerを削除
  93.             e.currentTarget.removeEventListener(Event.COMPLETE, onCompleteXML);
  94.             //_resultStage上のオブジェクトを全て削除
  95.             while (_resultStage.numChildren) {
  96.                 _resultStage.removeChildAt(0);
  97.             }
  98.             
  99.             //XML型にキャスト
  100.             var myXML:XML = new XML(e.currentTarget.data);
  101.             //namespaceを設定
  102.             default xml namespace = new Namespace("http://www.w3.org/2005/Atom");        //*2
  103.             
  104.             //ヘッダーの下
  105.             var tfY:int = 0;
  106.             //要素を取り出して、textFieldを作りならべる
  107.             var itemLength:int = myXML.entry.length();
  108.             
  109.             for (var i:int = 0; i < itemLength; i++) {
  110.                 //xmlからlink,authorName,titleの各値を取得
  111.                 var link:String = myXML.entry[i].link[0].@href;
  112.                 var authorName:String = myXML.entry[i].author.name;
  113.                 var title:String = myXML.entry[i].title;
  114.                 //アイコン画像のURLを取得
  115.                 var imgURL:String = myXML.entry[i].link[1].@href;
  116.                 //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別
  117.                 var extention:String = imgURL.substr( -4);
  118.                 extention = extention.toLowerCase();
  119.                 if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
  120.                     //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
  121.                     imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
  122.                 }
  123.                 //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
  124.                 imgURL = encodeURI(imgURL);        //*3
  125.                 //小さい画像で十分なので、名前を差し替える
  126.                 imgURL = imgURL.replace(/_normal\./, "_mini\.");
  127.                 
  128.                 //得られた各値をhtmlTextに入るように整形
  129.                 var htmldata:String = "";
  130.                 htmldata = "<a href='" + link + "' target='_blank'>";
  131.                 htmldata += "<img src='" + imgURL + "' width='24' height='24' />";
  132.                 htmldata += "<b>" + authorName + "</b> " + title + "</a>";
  133.                 
  134.                 //検索結果のテキストフィールド
  135.                 var myTextField:TextField = new TextField();
  136.                 myTextField.width = 460;
  137.                 myTextField.x = 2;
  138.                 myTextField.wordWrap = true;
  139.                 myTextField.background = true;
  140.                 myTextField.backgroundColor = 0xFFFFFF;
  141.                 myTextField.border = true;
  142.                 myTextField.borderColor = 0x39CCFF;
  143.                 myTextField.htmlText = htmldata;
  144.                 myTextField.autoSize = "left";
  145.                 //テキストフィールドのy座標はtfYに加算していくことにより、決定
  146.                 myTextField.y = tfY;
  147.                 tfY += myTextField.height + 3;
  148.                 _resultStage.addChild(myTextField);
  149.             }
  150.         }
  151.     }
  152. }
noswf
Get Adobe Flash Player