首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用FLEX设置特定元素的亮度对比度色调饱和度

用FLEX设置特定元素的亮度对比度色调饱和度
EN

Stack Overflow用户
提问于 2015-09-08 19:30:23
回答 1查看 997关注 0票数 0

我试图让用户设置亮度,对比度,色调,和饱和度的远程用户相机(这只会影响本地用户正在调整的首选项)与滑雪板。我在这里没有看到这样的类:US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#,所以我使用下面的库将元素"remoteVideo“(远程摄像机)设置为用户想要的亮度、对比度、色调和饱和度。我得到了color.brightness.remoteVideo(0,BrightnessSlider.value)的语法错误;(以及对比度、色调和饱和度)的语法错误(这一行中有多个标记)。1119:通过引用fl.motion.adjustcolor访问未定义的属性--访问未定义的属性remoteVideo,这是明确定义的,因为RTMFP视频聊天工作不需要下面的代码就可以编译:

(原始Sourcecode,如果有帮助的话,在下面不做任何更改:https://github.com/MonaSolutions/MonaClients/blob/master/VideoPhone/src/VideoPhone.mxml )

//亮度对比度色相饱和度库

代码语言:javascript
复制
import flash.display.Sprite;
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
import fl.events.SliderEvent;   
import flash.external.ExternalInterface;

//亮度对比度色调饱和度变量

代码语言:javascript
复制
        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

// 固定函数

代码语言:javascript
复制
        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");

        }

//滑块用于亮度对比度色调饱和

代码语言:javascript
复制
        <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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 19:43:23

根据AdjustColor的文档,每个属性(亮度、对比度、色调、饱和度)都是一个数字。所以这句话:

代码语言:javascript
复制
color.brightness.remoteVideo(0, BrightnessSlider.value);

试图从remoteVideo (一个数字)的属性color.brightness访问该属性。它告诉你,数字上没有属性"remoteVideo“。

US/FlashPlatform/reference/actionscript/3/fl/motion/AdjustColor.html

编辑:这样的东西可能有用,也可能不起作用:(我还没有测试过这个)

代码语言:javascript
复制
color.brightness = BrightnessSlider.value;
var mMatrix:Array = color.CalculateFinalFlatArray();
filter = new ColorMatrixFilter(mMatrix);
remoteVideo.filters = [filter];

通过实例化一次并只更新其矩阵属性,可以避免不断地创建新筛选器。

代码语言:javascript
复制
    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];
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32465763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档