blog

EmbedCode class to generate html code at Jozef Chúťka's blog

October 23, 2009

No comments

code embed EmbedCode generate html object

EmbedCode class to generate html code

embedcode

EmbedCode class generates html code for your .swf files. You can define url, size, parameters, flashVars and the result is valid standard (<object>, <params>, <embed>) html code, that you can just copy paste into your htmls, blogs, gigya widgets etc.

sk.yoz.html.EmbedCode

Application

package sk.yoz.html.EmbedCode.as:

package sk.yoz.html
{
    import flash.display.LoaderInfo;
    import flash.net.URLVariables;
    
    public class EmbedCode extends Object
    {
        private var _params:Object = {};
        private var _flashVars:URLVariables;
        private var _width:uint;
        private var _height:uint;
        private var _url:String;
        
        private var loaderInfo:LoaderInfo;
        private var parameters:Object;
        
        public var encodeAmpersands:Boolean = false;
        
        public function EmbedCode(loaderInfo:LoaderInfo = null, parameters:Object = null)
        {
            super();
            this.loaderInfo = loaderInfo;
            this.parameters = parameters;
            
            useActualURL();
            useActualFlashVars();
        }
        
        public static function suggest(loaderInfo:LoaderInfo = null, parameters:Object = null, 
            encodeAmpersands:Boolean = false):EmbedCode
        {
            var embedCode:EmbedCode = new EmbedCode(loaderInfo, parameters);
            embedCode.encodeAmpersands = encodeAmpersands;
            embedCode.useActualURL();
            embedCode.useActualSize();
            embedCode.useActualFlashVars();
            return embedCode;
        }
        
        public static function containsProtocol(path:String):Boolean
        {
            return path.indexOf("http://") == 0 || path.indexOf("https://") == 0;
        }
        
        public static function urlToDomain(url:String):String
        {
            if(!containsProtocol(url))
                return null;
            var index:int = url.indexOf("/", 9);
            if(index == -1)
                return null;
            return url.substr(0, index);
        }
        
        public function get domain():String
        {
            return urlToDomain(url);
        }
        
        public function addParam(param:String, value:String):void
        {
            _params[param] = value;
        }
        
        public function set params(value:Object):void
        {
            _params = value;
        }
        
        public function get params():Object
        {
            return _params;
        }
        
        public function addFlashVar(variable:String, value:String):void
        {
            if(!flashVars)
                flashVars = new URLVariables();
            _flashVars[variable] = value;
        }
        
        public function set flashVars(value:URLVariables):void
        {
            _flashVars = value;
        }
        
        public function get flashVars():URLVariables
        {
            return _flashVars;
        }
        
        public function get flashVarsQueryString():String
        {
            var queryString:String = flashVars.toString();
            if(encodeAmpersands)
                queryString = queryString.replace(/\&/g, "&amp;");
            return queryString;
        }
        
        public function set width(value:uint):void
        {
            _width = value;
        }
        
        public function get width():uint
        {
            return _width;
        }
        
        public function set height(value:uint):void
        {
            _height = value;
        }
        
        public function get height():uint
        {
            return _height;
        }
        
        public function set url(value:String):void
        {
            _url = value;
        }
        
        public function get url():String
        {
            return _url;
        }
        
        public function toString():String
        {
            var key:String;
            var r:String = '';
            r += '<object width="' + width + '" height="' + height + '">';
            
            r += '<param name="movie" value="' + url + '"></param>';
            for(key in params)
                r += '<param name="' + key + '" value="' + params[key] + '"></param>';
            if(flashVars)
                r += '<param name="FlashVars" value="' + flashVarsQueryString + '"></param>';
                
            r += '<embed src="' + url + '" width="' + width + '" height="' + height + '" type="application/x-shockwave-flash"';
            for(key in params)
                r += ' ' + key + '="' + params[key] + '" ';
            if(flashVars)
                r += ' FlashVars="' + flashVarsQueryString + '" ';
            r += '></embed>';
            
            r += '</object>';
            return r;
        }
        
        public function useActualURL():void
        {
            if(!loaderInfo)
                return;
            url = loaderInfo.url;
        }
        
        public function useActualSize():void
        {
            if(!loaderInfo)
                return;
            width = loaderInfo.width;
            height = loaderInfo.height;
        }
        
        public function useActualFlashVars():void
        {
            flashVars = new URLVariables();
            if(!parameters)
                return;
            for(var key:String in parameters)
                addFlashVar(key, parameters[key]);
        }
    }
}

Application

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init()" xmlns:html="sk.yoz.html.*">
<mx:Script>
<![CDATA[
    import sk.yoz.html.EmbedCode;
    
    private function init():void
    {
        code1.text = EmbedCode.suggest(loaderInfo, parameters, true).toString();
        
        var embedCode2:EmbedCode = new EmbedCode();
        embedCode2.encodeAmpersands = true;
        embedCode2.width = 100;
        embedCode2.height = 100;
        embedCode2.url = "http://domain/my.swf";
        embedCode2.addFlashVar("myFlashVar", "123");
        embedCode2.addFlashVar("mySuperFlashVar", "okey");
        embedCode2.addParam("wmode", "transparent");
        embedCode2.addParam("allowfullscreen", "true");
        
        code2.text = embedCode2.toString();
    }
]]>
</mx:Script>
<mx:TextArea id="code1" width="100%" height="100%" />
<mx:TextArea id="code2" width="100%" height="100%" />
</mx:Application>

code1.text:

<object width="500" height="375"><param name="movie" value="file:///D:/work/flex/...swf"></param><param name="FlashVars" value="isAdmin=true&amp;isFacebook=true"></param><embed src="file:///D:/work/flex/...swf" width="500" height="375" type="application/x-shockwave-flash" FlashVars="isAdmin=true&amp;isFacebook=true" ></embed></object>

code2.text:

<object width="100" height="100"><param name="movie" value="http://domain/my.swf"></param><param name="wmode" value="transparent"></param><param name="allowfullscreen" value="true"></param><param name="FlashVars" value="mySuperFlashVar=okey&amp;myFlashVar=123"></param><embed src="http://domain/my.swf" width="100" height="100" type="application/x-shockwave-flash" wmode="transparent"  allowfullscreen="true"  FlashVars="mySuperFlashVar=okey&amp;myFlashVar=123" ></embed></object>

You may Leave a comment or Subscribe to Comments RSS or Trackback this entry.

Leave a comment

Please be polite and on topic. Your e-mail will never be published.