0

我正在尝试在 Flex 中在两种状态之间进行交叉淡入淡出转换,这两种状态都包含一个 VideoDisplay 对象。问题是默认的 CrossFade 效果会拍摄两种状态的位图快照,并在两者之间进行混合。这意味着电影在过渡期间似乎被冻结了。

有人知道使用 PixelBender(GPU 加速)方法在两部电影之间淡入淡出的解决方案吗?我的另一个选择是手动重新排序视频对象并更改顶部的 alpha,但这会占用大量 CPU(在我的情况下为 ±300%)...

状态:

过渡:

<s:transitions>
    <s:Transition >
        <s:CrossFade id="crossfader" target="{this}" duration="{fadeTime}"  />  
    </s:Transition>
</s:transitions>

对象:

<components1:VideoDisplay 
                    id="movie_attract" 
                    width="640" x="0" height="480" y="0"

                    source="{configuration.movieAttract.source}"

                    includeIn="attract" 

                    />
<components1:VideoDisplay 
                    id="movie_engage" 
                    left="0" right="0" top="0" bottom="0"

                    source="{configuration.movieEngage.source}"
                    includeIn="engage" 

                    />
4

1 回答 1

1

我发现使用 Spark Fade(不是 CrossFade)对我来说效果更好(并且表现更好)。

用以下内容替换您的 CrossFade 行应该可以工作。

<s:Fade id="crossfader" targets="{[ movie_attract, movie_engage ]}" duration="{fadeTime}"  />

免责声明:我尚未使用当前正在播放视频的 VideoDisplay 对此进行测试。但即使有暂停的视频,Fade 效果的表现也比 CrossFade 好得多。与 CrossFade 不同,Fade 平滑且不生涩。我知道这不是严格回答您的问题,但您可能想尝试一下。

于 2012-03-06T15:40:48.017 回答