加载SWF并动态加载SWF加载文本(在运行时)

时间:2015-02-05 22:13:53

标签: json actionscript-3 flash

不确定我想做的事情是否可行。 我需要加载一个swf并让加载的swf本身在运行时加载一个json文件。

作为一种替代方案,有一些方法我可以用加载后的json“注入”加载的swf吗?

这是加载的swf和json文件的完整代码。它只是加载一个JSON文件并使用它来填充textField。它独立工作......

package
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import com.greensock.*;
    public class DynamicTextSWF extends MovieClip
    {

        public var marquee : MovieClip;
        private var _loader:URLLoader = new URLLoader();
        private var _request:URLRequest = new URLRequest();

        public function DynamicTextSWF()
        {
            this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function onAdded(e:Event):void {

            _request.contentType = "application/json";
            _request.url="config.json";
            _loader.load(_request);

            _loader.addEventListener(Event.COMPLETE,loadConfirm);
            _loader.addEventListener(Event.COMPLETE,decodeJSON);
            TweenLite.to(marquee,12,{x:stage.stageWidth,delay:2 });

        }


        private function loadConfirm(e:Event):void {
            trace("Load Successful" + "\n");
        }

        private function decodeJSON(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            trace(loader.data.toString() + "\n");
            var result:Object = JSON.parse(loader.data);

            trace('result..content.description ='+result.content.description);

            marquee.info.text = result.content.description;
        }

    }
}

这是json文件

{
    "name": "ticker0",
    "content": {
        "type": "text",
        "description": "This is ticker text that is loaded dynamically",
        "required": true
    },
    "tween": {
        "type": "x",
        "duration": 4,
        "delay": 2
    },
    "style": {
        "font": "Futura",
        "color": "blue",
        "size": 12
    }
}

1 个答案:

答案 0 :(得分:0)

您应该能够将任意数量的SWF相互加载,然后将其他资产加载到它们中,因此我认为您需要确定在加载到另一个SWF时DynamicTextSWF类失败的位置。

假设您有办法查看跟踪语句,我会在ActionTextSWF构造函数中添加更多跟踪语句,并在其onAdded方法中添加一个跟踪语句,并查看它获得的距离 - 是否已添加到舞台中的DynamicTextSWF实例?。我也会按照建议为IOErrorEvent.IO_ERROR添加一个侦听器和另一个跟踪语句。

我使用一个名为Vizzy的工具,它允许我在Flash调试播放器中的浏览器中播放时查看Flash调试内容的跟踪输出。这还允许您查看Flash Player策略日志,该日志显示出现安全性错误的位置。

我还使用名为Charles的工具,它允许您查看网络请求(有点像Chrome DevTools中的网络面板,但它有更多有用的东西) - 这可以让您查看是否有任何404请求,如果你的SWF要求在错误的URL上提供JSON数据。