flexのsocketでrtmpサーバーにつないでみる。

by poepoemix forked from minimalCompsを持つクラスをロードしたらどうなるか? (diff: 36)
生でコネクトしたらsandboxエラーになりましたね。というわけで、flazrみたいなプログラムを書いても接続はできないっぽいかな・・・
♥0 | Line 73 | Modified 2012-06-26 19:24:32 | MIT License | (replaced)
play

ActionScript3 source code

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

// forked from poepoemix's minimalCompsを持つクラスをロードしたらどうなるか?
package
{
    import flash.events.IOErrorEvent;
    import flash.errors.IOError;
    import flash.events.SecurityErrorEvent;
    import flash.events.ProgressEvent;
    import flash.net.Socket;
    import flash.net.URLRequest;
    import flash.display.LoaderInfo;
    import flash.display.Loader;
    import flash.events.Event;
    import flash.display.Sprite;
    public class MyClass extends Sprite
    {
        private static var logger:*;
        private var helper:*;
        /**
         * 初期化準備
         */
        public function MyClass()
        {
            // http://wonderfl.net/c/7YEyこちらのデータをロード
            var base:MyLoader = new MyLoader("http://swf.wonderfl.net/swf/usercode/3/37/37ea/37ea71571d353e8be4841dd5730420e9bb4cfb85.swf?", function():void {
                var HelperClass:Class = base.getClass("ComponentHelper");
                helper = new HelperClass();
                helper.gray();
                logger = helper.logger();
                logger.setup(stage);
                init();
                logger.show();
            });
        }
        /**
         * 初期化
         */
        private function init():void {
            var panel:* = helper.base({parent:this, left:10, top:10, width:stage.stageWidth - 20, height:stage.stageHeight - 20, log:true});
            logger.info("start");
            var socket:Socket = new Socket("localhost", 1935);
            socket.addEventListener(Event.CONNECT, function(event:Event):void {
                logger.info("connected");
            });
            socket.addEventListener(Event.CLOSE, function(event:Event):void {
                logger.info("close");
            });
            socket.addEventListener(ProgressEvent.SOCKET_DATA, function(event:ProgressEvent):void {
                logger.info("progress event");
            });
            socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(event:SecurityErrorEvent):void {
                logger.info("security error" + event.toString());
            });
            socket.addEventListener(IOErrorEvent.IO_ERROR, function(event:IOError):void {
                logger.info("ioError");
            });
            logger.info("here...");
        }
    }
}
import flash.display.LoaderInfo;
import flash.system.ApplicationDomain;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Loader;

/**
 * ロード動作の補助
 */
class MyLoader {
    private var domain:ApplicationDomain = null;
    public function MyLoader(url:String, func:Function) {
        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void {
            domain = LoaderInfo(event.target).applicationDomain;
            func();
        });
        loader.load(new URLRequest(url + (new Date()).getTime()));
    }
    public function getClass(name:String):Class {
        if(domain == null) {
            throw new Error("loading is not complete yet...");
        }
        return domain.getDefinition(name) as Class;
    }
}