如何在内部swf中加载的外部swf中禁用脚本

时间:2013-11-08 21:33:08

标签: actionscript-3 flex actionscript

我有一个名为SuperImage.mxml

的组件
   <?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx"
         xmlns:client="com.asfdfdfd.chat.client.*"
         xmlns:component="com.asfdfdfd.chat.client.component.*">
    <fx:Script>
        <![CDATA[
            import com.asfdfdfd.chat.client.managers.Red5CommandNetConnectionManager;
            import com.gyaro.utils.PathUtils;

            import mx.controls.Image;
            import mx.controls.SWFLoader;
            import mx.controls.VideoDisplay;
            import mx.core.UIComponent;
            import mx.events.ResizeEvent;
            import mx.events.VideoEvent;

            private var _swfLoader:SWFLoader=null;

            private var _loader:Loader=null;

            private var _source:Object=null;

            public function get source():Object
            {
                return _source;
            }

            public function set source(value:Object):void
            {
                for (var i:int=0; i < numElements; i++)
                {
                    removeElementAt(0);
                }

                _source=value;

                if (!_source)
                {
                    return;
                }

                var className:String=flash.utils.getQualifiedClassName(value);
                var classType:Object=flash.utils.getDefinitionByName(className);

//                trace(className);

                if (classType == UIComponent)
                {
                    var uiComponent:UIComponent=value as UIComponent;
                    uiComponent.percentWidth=100;
                    uiComponent.percentHeight=100;

                    addElement(uiComponent as UIComponent);
                }
                else if (classType == String)
                {
                    createItem(value as String);
                }
                else if (classType == URLRequest)
                {
                    createItem((value as URLRequest).url);
                }
                else if (classType == Image)
                {
                    var image:Image=value as Image;
                    image.percentWidth=100;
                    image.percentHeight=100;

                    addElement(image as Image);
                }
            }

            private function createItem(url:String):void
            {
                if (PathUtils.getFileExt(url) == "flv" || url.search("rtmp://") == 0)
                {
                    if (url.search("rtmp://") == 0)
                    {
                        url+=".flv";

                        var ns:NetStream=new NetStream(Red5CommandNetConnectionManager.instance.netConnection);
                        ns.addEventListener(NetStatusEvent.NET_STATUS, function(e:NetStatusEvent):void
                        {
                            switch (e.info.code)
                            {
                                case "NetStream.Play.Stop":
                                    ns.seek(0);
                                    break;
                            }
                        });
                        ns.client=new Object();
                        ns.client.onMetaData=function(data:Object):void
                        {
                        }
                        ns.bufferTime=0.0001;
                        ns.play(PathUtils.getFileName(url));

                        var video:Video=new Video();
                        video.attachNetStream(ns);

                        var uic:UIComponent=new UIComponent();
                        uic.addEventListener(ResizeEvent.RESIZE, function(e:ResizeEvent):void
                        {
                            video.width=uic.width;
                            video.height=uic.height;
                        });
                        uic.percentWidth=100;
                        uic.percentHeight=100;
                        uic.addChild(video);

                        addElement(uic);
                    }
                    else
                    {
                        var videoDisplay:VideoDisplay=new VideoDisplay();
                        videoDisplay.autoRewind=true;
                        videoDisplay.autoPlay=true;
                        videoDisplay.volume=0;
                        videoDisplay.percentWidth=100;
                        videoDisplay.percentHeight=100;
                        videoDisplay.maintainAspectRatio=false;
                        videoDisplay.bufferTime=0.001;
                        videoDisplay.addEventListener(mx.events.VideoEvent.COMPLETE, function(e:mx.events.VideoEvent):void
                        {
                            videoDisplay.play();
                        });

                        videoDisplay.source=url;

                        addElement(videoDisplay);
                    }
                }
                else
                {
                    var swfLoader:SWFLoader=new SWFLoader();

                    swfLoader.addEventListener(Event.COMPLETE, function(e:Event):void
                    {
                        addElement(swfLoader);
                    });

                    swfLoader.soundTransform=new SoundTransform(0);
                    swfLoader.scaleContent=true;
                    swfLoader.maintainAspectRatio=false;
                    swfLoader.load(url);
                    swfLoader.percentWidth=100;
                    swfLoader.percentHeight=100;
                }
            }
        ]]>
    </fx:Script>
</s:Group>    

现在,此代码允许上传用户外部swf文件,甚至包括重定向链接等脚本。我正在使用此代码在个人资料图片中上传swf。

我想禁用用户在swf文件中添加的重定向代码。我怎么样?

请回复完整的代码。

0 个答案:

没有答案