In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

flash on 2011-2-15

Copyright gupon ( http://wonderfl.net/user/gupon )
MIT License ( http://www.opensource.org/licenses/mit-license.php )
Downloaded from: http://wonderfl.net/c/nUlB
Get Adobe Flash player
by marcsali 15 Feb 2011
    Embed
/**
 * Copyright marcsali ( http://wonderfl.net/user/marcsali )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/Av6U
 */

/**
 * Copyright gupon ( http://wonderfl.net/user/gupon )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nUlB
 */

package {
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.system.Security;
    import flash.utils.escapeMultiByte;
    
    [SWF(width=320,height=350,frameRate=29)]
    public class YouTubePlayer extends Sprite{
        private static const PLAYER_URL:String = "http://www.youtube.com/apiplayer?version=3";
        private static const YOUTUBE_DOMAIN:String = "www.youtube.com";
        private static const SEARCH_URL_BASE:String = "http://gdata.youtube.com/feeds/api/videos?vq=";
        private var player:Object;
        private var loader:Loader;
        private var box:SearchBox; 
        
        public function YouTubePlayer() {
            setBlack();
            setPlayer();
            addChild( box = new SearchBox( this ));
            
            addEventListener( Event.ADDED_TO_STAGE, function( event:Event ):void{
                box.setFocus();
            });
        }
        
        public function search( keyword:String ):void{
            keyword.replace(" ", "+")
            keyword.replace(" ", "+")
            treasureHunt( escapeMultiByte( keyword ) );
        }
        
        private function setBlack():void{
            graphics.beginFill(0);
            graphics.drawRect( 0, 0, 200, 200 );
        }
        
        private function setPlayer():void{
            Security.allowDomain(YOUTUBE_DOMAIN);
            loader = new Loader();
            loader.contentLoaderInfo.addEventListener( Event.INIT, loaderInitHandler );
            loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, function( event:IOErrorEvent ):void{
                loader.load( new URLRequest(PLAYER_URL));
            });
            loader.load( new URLRequest(PLAYER_URL));
        }
        
        private function loaderInitHandler( event:Event ):void{
            addChildAt( loader, 0 );
            loader.content.addEventListener( "onReady", function( event:Event ):void{
                player = loader.content;
                player.setSize( 200, 200 );
                search("alice+pogo");
            });
        }
        
        private function treasureHunt( keyword:String ):void{
            var maxResults:String = "&max-results=" + 1;
            var url:String = SEARCH_URL_BASE + keyword + maxResults;
            var xmlLoader:URLLoader = new URLLoader();
            xmlLoader.addEventListener( Event.COMPLETE, function( event:Event ):void{
                default xml namespace = new Namespace("http://www.w3.org/2005/Atom");
                var str:String = String( xmlLoader.data ).substr( 38 );
                var id:String = String( XML( str ).entry.id ).split("/").pop();
                player.loadVideoById(id);
            });
            xmlLoader.load( new URLRequest( url ));
        }
    }
}

import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.ui.Keyboard;

internal class SearchBox extends TextField {
    private var player:YouTubePlayer;
    public function SearchBox( player:YouTubePlayer ) {
        this.player = player;
        
        var format:TextFormat = new TextFormat("Century", 18, 0 );
        format.align = TextFormatAlign.CENTER;
        defaultTextFormat = format;
        
        background = true;
        backgroundColor = 0xFFFFFF;
        type = TextFieldType.INPUT;
        
        x = 20;
        y = 200;
        width = 265;
        height = 20;
    }
    
    
    public function setFocus():void{
        stage.focus = this;
        text = "WORDS TO SEARCH FOR";
        setSelection( 0, text.length );
        
        
        stage.addEventListener( KeyboardEvent.KEY_DOWN, function( event:KeyboardEvent ):void{
            if( event.keyCode == Keyboard.ENTER ){
                player.search( text );
                text = "";
            }
        });
    }
}