我在加载的Flash文件和flex中的主应用程序之间有双向绑定.
BindingUtils.bindProperty(this, "micGainValue", audioPublisherApp, "micVolume");
BindingUtils.bindProperty(audioPublisherApp, "micVolume", this, "micGainValue");
micGainValue=75;
Run Code Online (Sandbox Code Playgroud)
但是,micGainValue的设置不会在flash文件中设置micVolume.我改为尝试在200帧之后设置micGainValue,现在它确实设置了micVolume.有没有办法测试这些属性是否绑定,所以设置后的值?
编辑:
flash文件实际上是在改变值.现在的问题是,为什么设置micVolume不会改变micGainValue.
这是我加载的flash文件中的代码:
[Bindable]
public function get micVolume():Number{
if(microphone!=null)
return microphone.gain;
return 0;
}
public function set micVolume(val:Number):void{
if(microphone!=null)
microphone.gain=val;
}
Run Code Online (Sandbox Code Playgroud)
[Bindable]
BindingUtils.bindProperty(this, "micGainValue", audioPublisherApp, "micVolume");
BindingUtils.bindProperty(audioPublisherApp, "micVolume", this, "micGainValue");
micGainValue=75;
Run Code Online (Sandbox Code Playgroud)
小智 5
Flex数据绑定是使用事件实现的.当您使用BindingUtils.bindProperty时,幕后发生的事情是将事件侦听器添加到目标对象以侦听PropertyChangeEvent类型的事件
如果目标对象在更改时未调度PropertyChangeEvent,则永远不会触发绑定.
将[Bindable]属性添加到Flex中的属性时,您正在做的是告诉框架在更改该属性时调度PropertyChangeEvent.如果您不包含该属性(或将其放在类上),则不会调度该事件并且不会发生绑定.
这就是为什么你的绑定工作从Flex到Flash而不是相反的方式 - 当Flex对象在更改时调度所需的事件但闪存对象不是.
这是PropertyChangeEvent的信息
就个人而言,对于Flash - > Flex,我会在flash部件更改其值并使用处理程序更新Flex部件中的可绑定对象时调度我自己的事件.然后,您可以绑定其他Flex内容.
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |