使用 FLEX 为特定元素设置亮度对比度色调饱和度
setting Brightness Contrast Hue Saturation for a specific element with FLEX
我试图让用户使用滑块为远程用户相机设置亮度、对比度、色调和饱和度(这只会影响正在调整首选项的本地用户)。我在这里看不到 class:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html# 所以我使用下面的库将元素 "remoteVideo"(远程摄像机)设置为用户想要的任何亮度、对比度、色相和饱和度。我收到 color.brightness.remoteVideo(0, BrightnessSlider.value) 的语法错误; (以及对比度、色调和饱和度)表示(此行有多个标记。1119:通过使用 fl.motion.adjustcolor 的引用访问未定义的 属性 亮度 & - 访问未定义的 属性 remoteVideo ,这是明确定义的,因为 RTMFP 视频聊天 works\compiles 没有下面的代码就可以了:
(如果有帮助,下面没有我更改的原始源代码:https://github.com/MonaSolutions/MonaClients/blob/master/VideoPhone/src/VideoPhone.mxml)
// 亮度对比度色调饱和度库
import flash.display.Sprite;
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
import fl.events.SliderEvent;
import flash.external.ExternalInterface;
// 亮度对比度色调饱和度变量
private var color:AdjustColor = new AdjustColor(); //This object will hold the color properties
private var filter:ColorMatrixFilter; //Will store the modified color filter to change the video
// 固定 函数
private function BrightnessLevel(e:Event = null):void
{
color.brightness = BrightnessSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting brightness to: " + BrightnessSlider.value + "\n");
}
private function ContrastLevel(e:Event = null):void
{
color.contrast = ContrastSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting contrast to: " + ContrastSlider.value + "\n");
}
private function HueLevel(e:Event = null):void
{
color.hue = HueSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting hue to: " + HueSlider.value + "\n");
}
private function SaturationLevel(e:Event = null):void
{
color.saturation = SaturationSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting saturation to: " + SaturationSlider.value + "\n");
}
// 亮度对比度色调饱和度滑块
<s:NavigatorContent label="ADJUST COLORS" enabled="{currentState != LoginNotConnected}">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:VGroup>
<s:HGroup>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Brightness">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="BrightnessSlider" width="220"
change="BrightnessLevel(event)" maximum="100" minimum="-100"
showDataTip="false" value="0"/>
</s:Panel>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Contrast">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="ContrastSlider" width="220" change="ContrastLevel(event)"
maximum="100" minimum="-100" showDataTip="false" value="0"/>
</s:Panel>
</s:HGroup>
<s:HGroup>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0" title="Hue">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="HueSlider" width="220" change="HueLevel(event)"
maximum="180" minimum="-180" showDataTip="false" value="0"/>
</s:Panel>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Saturation">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="SaturationSlider" width="220"
change="SaturationLevel(event)" maximum="100" minimum="-100"
showDataTip="false" value="0"/>
</s:Panel>
</s:HGroup>
</s:VGroup>
</s:NavigatorContent>
根据 AdjustColor 的文档,每个属性(亮度、对比度、色调、饱和度)都是一个数字。所以这一行:
color.brightness.remoteVideo(0, BrightnessSlider.value);
正在尝试从 color.brightness
访问 属性 remoteVideo
,这是一个数字。它告诉你 Number.
上没有 属性 "remoteVideo"
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/motion/AdjustColor.html
编辑:
像这样的东西可能有效也可能无效:(我还没有测试过)
color.brightness = BrightnessSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
您可以通过实例化一次并仅更新其矩阵来避免不断创建新的过滤器 属性。
private var color:AdjustColor = new AdjustColor(); //This object will hold the color properties
private var filter:ColorMatrixFilter = new ColorMatrixFilter(); //Will store the modified color filter to change the video
private function BrightnessLevel(e:Event = null):void
{
status("Setting brightness to: " + BrightnessSlider.value + "\n");
color.brightness = BrightnessSlider.value;
applyFilter();
}
private function ContrastLevel(e:Event = null):void
{
status("Setting contrast to: " + ContrastSlider.value + "\n");
color.contrast = ContrastSlider.value;
applyFilter();
}
private function HueLevel(e:Event = null):void
{
status("Setting hue to: " + HueSlider.value + "\n");
color.hue = HueSlider.value;
applyFilter();
}
private function SaturationLevel(e:Event = null):void
{
status("Setting saturation to: " + SaturationSlider.value + "\n");
color.saturation = SaturationSlider.value;
applyFilter();
}
private function applyFilter():void
{
filter.matrix = color.CalculateFinalFlatArray();
remoteVideo.filters = [filter];
}
我试图让用户使用滑块为远程用户相机设置亮度、对比度、色调和饱和度(这只会影响正在调整首选项的本地用户)。我在这里看不到 class:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html# 所以我使用下面的库将元素 "remoteVideo"(远程摄像机)设置为用户想要的任何亮度、对比度、色相和饱和度。我收到 color.brightness.remoteVideo(0, BrightnessSlider.value) 的语法错误; (以及对比度、色调和饱和度)表示(此行有多个标记。1119:通过使用 fl.motion.adjustcolor 的引用访问未定义的 属性 亮度 & - 访问未定义的 属性 remoteVideo ,这是明确定义的,因为 RTMFP 视频聊天 works\compiles 没有下面的代码就可以了:
(如果有帮助,下面没有我更改的原始源代码:https://github.com/MonaSolutions/MonaClients/blob/master/VideoPhone/src/VideoPhone.mxml)
// 亮度对比度色调饱和度库
import flash.display.Sprite;
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
import fl.events.SliderEvent;
import flash.external.ExternalInterface;
// 亮度对比度色调饱和度变量
private var color:AdjustColor = new AdjustColor(); //This object will hold the color properties
private var filter:ColorMatrixFilter; //Will store the modified color filter to change the video
// 固定 函数
private function BrightnessLevel(e:Event = null):void
{
color.brightness = BrightnessSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting brightness to: " + BrightnessSlider.value + "\n");
}
private function ContrastLevel(e:Event = null):void
{
color.contrast = ContrastSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting contrast to: " + ContrastSlider.value + "\n");
}
private function HueLevel(e:Event = null):void
{
color.hue = HueSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting hue to: " + HueSlider.value + "\n");
}
private function SaturationLevel(e:Event = null):void
{
color.saturation = SaturationSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
status("Setting saturation to: " + SaturationSlider.value + "\n");
}
// 亮度对比度色调饱和度滑块
<s:NavigatorContent label="ADJUST COLORS" enabled="{currentState != LoginNotConnected}">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:VGroup>
<s:HGroup>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Brightness">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="BrightnessSlider" width="220"
change="BrightnessLevel(event)" maximum="100" minimum="-100"
showDataTip="false" value="0"/>
</s:Panel>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Contrast">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="ContrastSlider" width="220" change="ContrastLevel(event)"
maximum="100" minimum="-100" showDataTip="false" value="0"/>
</s:Panel>
</s:HGroup>
<s:HGroup>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0" title="Hue">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="HueSlider" width="220" change="HueLevel(event)"
maximum="180" minimum="-180" showDataTip="false" value="0"/>
</s:Panel>
<s:Panel width="247" height="67.5" backgroundColor="0xA0A0A0"
title="Saturation">
<s:layout>
<s:VerticalLayout paddingLeft="8"/>
</s:layout>
<s:HSlider id="SaturationSlider" width="220"
change="SaturationLevel(event)" maximum="100" minimum="-100"
showDataTip="false" value="0"/>
</s:Panel>
</s:HGroup>
</s:VGroup>
</s:NavigatorContent>
根据 AdjustColor 的文档,每个属性(亮度、对比度、色调、饱和度)都是一个数字。所以这一行:
color.brightness.remoteVideo(0, BrightnessSlider.value);
正在尝试从 color.brightness
访问 属性 remoteVideo
,这是一个数字。它告诉你 Number.
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/motion/AdjustColor.html
编辑: 像这样的东西可能有效也可能无效:(我还没有测试过)
color.brightness = BrightnessSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];
您可以通过实例化一次并仅更新其矩阵来避免不断创建新的过滤器 属性。
private var color:AdjustColor = new AdjustColor(); //This object will hold the color properties
private var filter:ColorMatrixFilter = new ColorMatrixFilter(); //Will store the modified color filter to change the video
private function BrightnessLevel(e:Event = null):void
{
status("Setting brightness to: " + BrightnessSlider.value + "\n");
color.brightness = BrightnessSlider.value;
applyFilter();
}
private function ContrastLevel(e:Event = null):void
{
status("Setting contrast to: " + ContrastSlider.value + "\n");
color.contrast = ContrastSlider.value;
applyFilter();
}
private function HueLevel(e:Event = null):void
{
status("Setting hue to: " + HueSlider.value + "\n");
color.hue = HueSlider.value;
applyFilter();
}
private function SaturationLevel(e:Event = null):void
{
status("Setting saturation to: " + SaturationSlider.value + "\n");
color.saturation = SaturationSlider.value;
applyFilter();
}
private function applyFilter():void
{
filter.matrix = color.CalculateFinalFlatArray();
remoteVideo.filters = [filter];
}