mootools.swiff:loaderInfo永远不会完成

时间:2009-08-26 12:09:51

标签: javascript actionscript-3 mootools

[编辑07-22-2010]从我的网站删除了deoms [/ EDIT] [编辑08-26-2009]在问题的底部添加了非常奇怪的问题[/ EDIT] 嗨,大家好 我正在尝试使用mootools swiff的东西,我似乎没有在flash中获取loaderInfo.COMPLETE事件。 更准确地说,动态加载的swf永远不会完全加载,而静态加载swf则不会。这是我在flash(AS3)中的文档类的相关代码。

使用firefox + firebug查看痕迹

package pt.classes{
    import flash.display.MovieClip
    import flash.display.LoaderInfo
    import flash.external.*
    import flash.events.Event
    import flash.events.ProgressEvent
    import flash.events.IOErrorEvent
    import flash.events.HTTPStatusEvent
    import pt.utils.myTrace
    import pt.testTrace
    import pt.classes.Episode

    public class Main extends MovieClip{
        include "../testTrace.as";//this is a trace() implementation that redirects traces to the firebug console
        public function Main(){
            trace ("constructor for "+ this);
            var l_this:Main = this;
            loaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
            loaderInfo.addEventListener(Event.INIT, function(_e:Event){trace("init for "+ l_this)});
            loaderInfo.addEventListener(Event.OPEN, function(_e:Event){trace("open for "+ l_this)});
            loaderInfo.addEventListener(ProgressEvent.PROGRESS, function(_e:ProgressEvent){trace("Progress for "+ l_this)});
            loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(_e:IOErrorEvent){trace("IOError for "+ l_this)});
            loaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, function(_e:HTTPStatusEvent){trace("HTTPStatus for "+ l_this)});
            ExternalInterface.addCallback("trace", this.trace);
        }
        private var m_params:Object;
        /*! loaderComplete
         * called when the stage has finished loading
         * @param _e : an Event
         */
        private function loaderComplete (_e:Event){
            m_params = new Object;
            for (var i:String in loaderInfo.parameters){
                m_params[i] = loaderInfo.parameters[i];
            }
            trace("loader complete for " + this);
        }
    }
}

当我只使用flash IDE给我的html时,firebug控制台给了我这个:

  

Main Pokertales的构造函数

     

主要Pokertales的初始化

     

主要Pokertales的进展

     

MainPokertales的装载程序已完成

但是,当我像这样使用swiff时(.js文件包含在我的moo-core.js之后):

mySwiff = new Swiff("files/main.swf",{
  width:  200,
  height: 150,
  params: {
      wmode: 'opaque',
  },
  vars: {
      myVariableString: 'hello'
  },
  callBacks: {
    load: function() {
      alert("Flash is loaded!");
      console.log("flash is loaded");
      this.trace('hello from flash');
    },
    error: function(){console.log("error!")},
    start: function(){console.log("start!")}
  }
});
console.log(mySwiff);
window.addEvent('domready', function() {
  console.log('dom is ready');
  //document.newElement(mySwiff);/*
  var myCont;
  if (myCont = $('swiffcontainer')){
    mySwiff.inject(myCont,'top');
  };
  //console.log(myCont, mySwiff);
});

我只得到两个第一个日志(没有进度,没有完成,没有加载回调......

  

对象选项=对象实例= Swiff_1251130426079

     

dom准备好了

     

Main Pokertales的构造函数

     

主要Pokertales的初始化

所以创建了swf,它在loaderInfo中然后停止......任何人都对此有所了解?

我在这里做错了什么? OH,并提前感谢任何帮助:)

编辑:看起来很奇怪,swiff实际上完全加载并一直记录到加载器完成,如果.swf文件生成的时间不到10秒前...如果我在flash IDE中点击“发布”然后立即在firefox中点击F5,我得到了这个日志:

  

对象选项=对象实例= Swiff_1251294375102

     

dom是Main

的现成构造函数      

Pokertales init for Main Pokertales

     

主要Pokertales的进展

     

主要Pokertales的装载机完成

      start = Swiff.CallBacks.Swiff_1251294375102.start

      myVariableString = hello

      error = Swiff.CallBacks.Swiff_1251294375102.error

      load = Swiff.CallBacks.Swiff_1251294375102.load

也许我错过了一些我不知道的安全/ allowDomain问题?当然我不能发表&在我的网站上每10秒上传一次.swf(生产力会非常低:) :)

编辑2:好的我正在缩小问题:如果我直接打开html文件,脚本实际上有效,但是当通过HTTP调用时停止init事件(本地或远程服务器都是相同的)。这是一些我不知道的域名政策吗?

2 个答案:

答案 0 :(得分:1)

我从未使用过那个特定的mootools脚本(我可以推荐SWFObject吗?^^),但它似乎没有流式传输SWF,而且我还记得这是使用JS脚本进行Flash嵌入时的正常行为。我不确定是否有一个实际的解决方案,但一个解决方法,如果你真的需要主电影的infoLoader事件(我个人从未使用过它们)将使用一个小的loader.swf加载你的main.swf里面它

答案 1 :(得分:0)

我似乎已经解决了这个问题,虽然我不知道如何...... 除其他外,似乎插入

  mySwiff = $(mySwiff.id);
在swiffcontainer中注入swiff之后就做了诀窍......不要问我。