设置对象'的财产

Setting an object's property afterwards?

本文关键字:财产 对象 设置      更新时间:2023-12-28

我正在尝试使用KineticJs,并且希望拥有对象,这样我就可以轻松地处理元素。

这是我的密码。它不起作用,我不知道为什么。(我真的不知道oop,只是在学习)

 $(function(){     
    var stage = new Kinetic.Stage({
        container: 'gridalea',
        width: 172,
        height: 720
    });
    var color_layer = new Kinetic.Layer();
    var sh_layer = new Kinetic.Layer();
    var Left={
        light: {
            frame: function(){
                poly = new Kinetic.Polygon({
                    points: [70, 0, 0, 22, 0, 672, 70, 720, 70, 710, 6, 667, 6, 29, 70, 10, 70, 0],
                    stroke: 'white',
                    strokeWidth: 1
                });
                // add the shape to the layer
                color_layer.add(poly);
                stage.add(color_layer); 
            },
            fill: function(color){
                poly.setFill(color);
            }
        },
        dark: {
            frame: function(){
                var poly = new Kinetic.Polygon({
                    points: [6, 193, 6, 667, 11, 663, 11, 440, 6, 437, 6, 427, 11, 425, 11, 193, 6, 193],
                    stroke: 'white',
                    strokeWidth: 1
                });
                // add the shape to the layer
                color_layer.add(poly);
                stage.add(color_layer); 
            },
            fill: function(color){
                poly.setFill(color);
            }
        },
    }
    Left.light.frame();
    Left.light.fill('red');
});

我打算做的是能够在创建多边形后设置多边形的填充颜色,我必须处理图像的很多部分,所以我使用对象使其变得简单。你能指出我代码中的问题吗?我很抱歉我知道我是瘸子,我只需要你的帮助。

编辑:当我添加时

Left.dark.frame();
Left.dark.fill('red');

之后

Left.light.frame();
Left.light.fill('red');

Left.light.frame()变为红色,但Left.ddark.frame()不进行

问题是我必须在填充层之后将其添加到阶段!

stage.add(color_layer);

进入最底部的

fill函数的末尾应该有color_layer.draw()stage.draw()

为什么它能像编辑中提到的那样工作:

基本上,当您在调用Left.light之后调用Left.dark.frame()时,您正在将另一个对象添加到层中,并试图将层添加回舞台,其中之一(我不确定目前哪一个可以查看源)是调用draw()方法。我的猜测是,很可能是再次将层添加到舞台上的调用,这会刷新画布,您会看到Light多边形的填充颜色。