2011-02-01 30 views
0

WicketアプリケーションにFlash(* .swf)ファイルを追加しようとしています。私はいくつかの情報を見つけましたhere、しかし残念ながらそれは動作していない、と私はなぜわからない。 Webページで、要素とタグWicketを使用してSWFObjectを動的に追加します。

<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ファイルを動的にロードするにはどうすればいいですか?

答えて

1

あなたは絶対パスをしたい場合は、スラッシュとそれを先行すべき、リンクの実装を見てみる:

// if it's an absolute path, return it: 
if(src.startsWith("/") || src.startsWith("http://") || src.startsWith("https://")) 
    return(src); 

は、それ以外の場合は改札のリソースパスが生成されます。

実際に埋め込みフラッシュにswfobjectを使用することをお勧めします。this pageの始まりには、それを使用するフラッシュベースのコンポーネントとともに、素晴らしい組み込み統合コードがあります。

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エクスポートで

関連する問題