[编辑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事件(本地或远程服务器都是相同的)。这是一些我不知道的域名政策吗?
答案 0 :(得分:1)
我从未使用过那个特定的mootools脚本(我可以推荐SWFObject吗?^^),但它似乎没有流式传输SWF,而且我还记得这是使用JS脚本进行Flash嵌入时的正常行为。我不确定是否有一个实际的解决方案,但一个解决方法,如果你真的需要主电影的infoLoader事件(我个人从未使用过它们)将使用一个小的loader.swf加载你的main.swf里面它
答案 1 :(得分:0)
我似乎已经解决了这个问题,虽然我不知道如何...... 除其他外,似乎插入
mySwiff = $(mySwiff.id);
在swiffcontainer中注入swiff之后就做了诀窍......不要问我。