我正在尝试将Flash(* .swf)文件添加到我的Wicket应用程序中。我找到了一些信息here,但不幸的是它没有用,我不知道为什么。在网页上,元素和标签
<object wicket:id="swf" data="resources/test.swf" width="700" height="70" style="float: right; margin: 15px 0 0 0;"></object>
渲染为
<object height="70" style="float: right; margin: 15px 0 0 0;" width="140" data="../../resources/wicketapp.ViewPanel/resources/test.swf" type="application/x-shockwave-flash"><param name="movie" value="../../resources/wicketapp.ViewPanel/resources/test.swf">
</object>
显然,这不是我的Flash文件的路径。另外,我想动态加载文件,但上面链接中讨论的嵌入Flash的方法是静态的。如何动态加载swf文件?
答案 0 :(得分:1)
查看链接的实现,如果你想要一个绝对路径,你应该在它前面加斜杠:
// if it's an absolute path, return it:
if( src.startsWith( "/" ) || src.startsWith( "http://" ) || src.startsWith( "https://" ) )
return(src);
否则会生成wicket资源路径。
我实际上建议使用swfobject来嵌入flash - 在this page的开头有一些不错的wicket集成代码,以及使用它的基于闪存的组件。
答案 1 :(得分:0)
正如我已经理解了您的问题,您希望在运行时更改swf文件。我已经解决了这个问题,如下所示(这是Scala代码,但我想你明白了):
class SWFObject(id: String) extends WebComponent(id)
with LoggerSupport {
def script: String = """
var swfVersionStr = "10.0.0";
var xiSwfUrlStr = "flash/playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#ebf4ff";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.align = "middle";
swfobject.embedSWF(
"${name}", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
"""
/**
* Path to SWF file.
*/
var swfFile: String = _;
override def onComponentTag(tag: ComponentTag) = {
checkComponentTag(tag, "script")
}
override def onComponentTagBody(markupStream: MarkupStream, openTag: ComponentTag) = {
val relativeName = getRequestCycle()
.getProcessor()
.getRequestCodingStrategy()
.rewriteStaticRelativeUrl(swfFile)
val body = body.replace("${name}", relativeName)
replaceComponentTagBody(markupStream, openTag, body)
}
}
以下是使用示例:
private val gameObject = new SWFObject("game");
gameObject.swfFile = "flash/" + swfFile;
HTML使用swfobject脚本并基于标准的FlashBuilder导出。