Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 动态调整Flash/Flex嵌入对象大小时的奇怪行为_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex 动态调整Flash/Flex嵌入对象大小时的奇怪行为

Apache flex 动态调整Flash/Flex嵌入对象大小时的奇怪行为,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我有一个简单的Flex应用程序,它是一个面板,里面有一个中继器;虽然有点简化,但它是这样的: <mx:Panel id="pnl"> <mx:Repeater id="rp"> <mx:Label text = "foo" /> </mx:Repeater> </mx:Panel> 依次调用此javascript函数: function resize(height) { // the embed or object that

我有一个简单的Flex应用程序,它是一个面板,里面有一个中继器;虽然有点简化,但它是这样的:


<mx:Panel id="pnl">
    <mx:Repeater id="rp">
        <mx:Label text = "foo" />
    </mx:Repeater>
</mx:Panel>
依次调用此javascript函数:


function resize(height) {
    // the embed or object that contains the flex app
    var e = document.getElementById('flex_object');
    if(e) e.height = height;
}
这在IE中似乎工作得很好,但是我在Firefox/Safari中得到了奇怪的结果,转发器工作了n次,然后文本似乎在转发器中被切断/消失,请参见所附图片:


有人能解释为什么会发生这种情况,以及是否有解决办法/方法来做同样的事情吗?

为什么不简单地在HTML页面上为Flash对象使用宽度百分比和高度百分比?这样,您就不必做任何事情来调整SWF的大小…

这很奇怪-看起来Firefox/Safari正在扩展嵌入的绘图区域,但不知怎的,Flash没有收到渲染新像素所需的信息

您可能可以通过强制Flash进行自我更新来解决这个问题,但是由于浏览器和嵌入式系统之间的通信似乎比较混乱,因此采用一种不同的方法可能就不那么麻烦了,这种方法适合浏览器的事件流而不会出现bug


例如,您可以尝试将闪存放入
DIV
中,将闪存大小设置为100%,然后调整
DIV
的大小,而不是调整嵌入的大小。这似乎不太可能出现行为不端的情况。

我的经验是Flex的调整大小功能。。。有趣的有时他们的工作方式是人们所期望的,而有时则不是。您可以尝试以下几点:首先,跟踪您希望在Flex中获得的高度值,甚至外部接口.call(“alert”,event.target.height);这将让您知道这是JavaScript还是Flex问题(但我怀疑这是Flex)

您的问题可能与组件的缩放有关: 设置[高度]属性会导致调度调整大小事件。有关何时调度此事件的详细信息,请参见调整大小事件。如果零部件的scaleY属性不是100,则零部件相对于其内部坐标的高度将不匹配。因此,scaleY为200的100像素高的组件将在父级中使用100像素,但内部认为它是50像素高。


如果它是Flex,而这没有帮助,我会尝试稍后在外部接口调用之前使用call,这通常会让Flex有足够的时间来弄清楚它到底在做什么。有时需要设置超时,但我觉得这很尴尬。

我目前正在做同样的事情(一个swf,它根据当前保存的内容动态更改其高度)。我也有一个类似的问题,你试图使一个多行按钮

我是flex新手,但我通过手动调用容器的updateDisplayList()解决了这个问题。。。我认为它“强制”某个地方的渲染。。。它的参数是发生变化的某个区域的宽度和高度。很抱歉不知道细节。。。但这对我很管用


function resize(height) {
    // the embed or object that contains the flex app
    var e = document.getElementById('flex_object');
    if(e) e.height = height;
}