【问题标题】:Flex passing values from html to flex component via flash varsFlex 通过 flash vars 将值从 html 传递到 flex 组件
【发布时间】:2012-11-10 00:27:25
【问题描述】:

我有以下代码,它不会打印我想从 javascript 传递的值。如果有人能指出我犯的错误,我将不胜感激。

HTML 我将template.html中的代码编辑如下,包括IP=test和IP=192.168.11.2如下

<param name="flashvars" value="IP=Test" />
<param name="allowFullScreen" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="${swf}.swf" width="${width}" height="${height}" flashVars="IP=192.168.11.2">
     <param name="quality" value="high" />
     <param name="bgcolor" value="${bgcolor}" />
     <param name="allowScriptAccess" value="sameDomain" />
     <param name="allowFullScreen" value="true" />
     <param name='flashVars' value='IP=192.168.11.2'/>

我的弹性代码如下

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
            xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"
            layout="absolute" viewSourceURL="srcview/index.html" creationComplete="{init();}">
<mx:Script><![CDATA[
[Bindable] private var ip_string:String;
private function init():void {
ip_string = Application.application.parameters.IP;
iplabel.text = ip_string;
}

]]>
</mx:Script>

<mx:Panel id="namePanel" width="1257" height="168" layout="absolute" alpha="1" roundedBottomCorners="true" borderStyle="none" cornerRadius="4" horizontalAlign="center" verticalAlign="middle" backgroundColor="#001e2a18" horizontalCenter="-136" verticalCenter="-411" fontSize="15" backgroundAlpha="0" color="#003e1e1e" themeColor="16316412">
<mx:Label x="21" y="5" text="UBI-Collage Gallery" width="1197" height="67.95" alpha="1" styleName="MyTextStyle" fontFamily="woodcut" fontSize="60" color="#00090908" textAlign="center" fontWeight="normal"/>
<mx:Label id="iplabel" x="90" y="85" styleName="codeStyle" textAlign="center" color="#00000000" fontFamily="woodcut" fontSize="32" text="IP"/>
</mx:Panel>
</mx:Application>

【问题讨论】:

  • 我会先将 verticalCenter 属性的这个荒谬值更改为 0 之类的值。然后您应该可以看到所有内容。显示 IP 参数的逻辑似乎是正确的。

标签: javascript html apache-flex flashvars


【解决方案1】:

你需要在应用程序生命周期的某些事件中读取参数,

1- 首先在Application标签中注册一个事件Listner

creationComplete="{handlerCreationComplete(event)}"

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               xmlns:local="*"
               creationComplete="{handlerCreationComplete(event)}"
               >

2- 在脚本部分定义Listner函数并使用FlexGlobals.topLevelApplication

protected function handlerCreationComplete(event:FlexEvent):void
{
    var ip:String = FlexGlobals.topLevelApplication.parameters.IP;
    Alert.show(ip);
}

希望有帮助

【讨论】:

  • 您完全适合 Flex 4 的情况。但不幸的是,我被困在旧的 flex 3 上。所以我被 Application.application.parameters.IP 困住了; .感谢您的回复
  • 但是您的 MXML 显示您使用的是 Flex 4 SDK,“xmlns:fx="ns.adobe.com/mxml/2009",您使用的是 Flex Builder 3 吗?
  • 这是一个错误。我的错。很抱歉从错误的代码中复制。但无论如何,我认为我得到了解决方案,我会发布答案。
【解决方案2】:

如下改变嵌入代码就可以了。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        id="index" width="1550" height="1030"
        codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"
        align="middle">
        <param name="movie" value="UbiPictureViewer.swf" />
        <param name="quality" value="high" />
        <param name="bgcolor" value="#869ca7" />
        <param name="allowScriptAccess" value="sameDomain" />
        <embed src="UbiCollage.swf" quality="high" bgcolor="#869ca7"
            width="1550" height="1030" name="index" align="middle"
            play="true"
            loop="false"
            quality="high"
            allowScriptAccess="sameDomain"
            flashVars="IP=<%=IP %>"
            type="application/x-shockwave-flash"
            pluginspage="http://www.adobe.com/go/getflashplayer">
        </embed>
</object>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多