首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kineticjs,是否应该调整stage.setWidth()、stage.setHeight()和stage.draw()的大小?

kineticjs,是否应该调整stage.setWidth()、stage.setHeight()和stage.draw()的大小?
EN

Stack Overflow用户
提问于 2014-03-18 17:24:48
回答 1查看 216关注 0票数 0

我正在尝试调整窗口大小的所有东西。我有这个函数,但似乎只调整了一层的大小( graphLayer.add(drawGraph);)我认为下面的代码应该调整所有的大小??

代码语言:javascript
复制
function onResize(){ 
        var widowWidth = (window.innerWidth) -yPadding; // width - the padding
        var widowHeight = (window.innerHeight) -xPadding;  // Height - the padding
        stage.setWidth((window.innerWidth) -yPadding);
        stage.setHeight((window.innerHeight) -xPadding);
        stage.draw();
    }

下面是我的代码的基础

代码语言:javascript
复制
$(window).resize(onResize);
    var graph;
    var graphLayer = new Kinetic.Layer();
    var BubbleLayer = new Kinetic.Layer();
    var tooltipLayer = new Kinetic.Layer();
    var widowWidth = (window.innerWidth) -yPadding; // width - the padding
    var widowHeight = (window.innerHeight) -xPadding;  // Height - the padding


    var stage = new Kinetic.Stage({
      container: 'graph',
      width: widowWidth,  // width - the padding
      height: widowHeight,  // Height - the padding
    });

    var tooltip = new Kinetic.Label({
      opacity: 0.75,
      visible: false,
      listening: false
    });

    tooltip.add(new Kinetic.Tag({
      .........
    }));

    tooltip.add(new Kinetic.Text({
      .........
    }));

    var drawGraph = new Kinetic.Shape ({
      sceneFunc: function(ctx){
          .........
        }
        ctx.fillStrokeShape(this);
      },
      stroke: 'black',
      strokeWidth: 1
    });     

    var drawGraphquarter = new Kinetic.Shape ({
      sceneFunc: function(ctx){
        .........
        }
      },
      stroke: 'red',
      strokeWidth: 3
    });     

    // build data

    $.getJSON( "bubble_data.json", function( data ) {

        $.each( data.projects, function(i) {
            var bubbleData = [];

            .........

            bubbleData.push({
              .........
            });

            .........

            for(var n = 0; n < bubbleData.length; n++) {
              addBubble(bubbleData[n], BubbleLayer);
              stage.add(BubbleLayer);
            }

        });

        graphLayer.add(drawGraph);
        graphLayer.add(drawGraphquarter);
        stage.add(BubbleLayer);
        stage.add(graphLayer); 
        graphLayer.moveToBottom(); 
        tooltipLayer.add(tooltip);
        stage.add(tooltipLayer);
        });
    }); 

    // add bubles to layer 
    function addBubble(obj, BubbleLayer) {
      var bubble = new Kinetic.Shape({
        sceneFunc: function(ctx) {
          .........
      });
      BubbleLayer.add(bubble);
    } 

    // calendar quarter
    function getQuarter(d) {
      .........
    }

     function onResize(){ 
        var widowWidth = (window.innerWidth) -yPadding; // width - the padding
        var widowHeight = (window.innerHeight) -xPadding;  // Height - the padding
        stage.setWidth((window.innerWidth) -yPadding);
        stage.setHeight((window.innerHeight) -xPadding);
        stage.draw();
    }
EN

回答 1

Stack Overflow用户

发布于 2014-03-19 19:11:20

将我的代码更新为这个。

代码语言:javascript
复制
var graph;
    var xPadding = 10;
    var yPadding = 10;
    var graphLayer = new Kinetic.Layer();
    var graphLayerQuater = new Kinetic.Layer();
    var BubbleLayer = new Kinetic.Layer();
    var tooltipLayer = new Kinetic.Layer();
    var widowWidth =  (window.innerWidth) -yPadding; // width - the padding
    var widowHeight = (window.innerHeight) -xPadding;  // Height - the padding
    var stage = new Kinetic.Stage({
      container: 'graph',
      width: widowWidth,  
      height: widowHeight,  
    });

    var initialScale = stage.scale(); //returns {x: 1, y: 1} 
    var initialWidth = (window.innerWidth) -yPadding; // width - the padding
    var initialHeight = (window.innerHeight) -xPadding;  // Height - the padding

onresize函数

代码语言:javascript
复制
window.onresize = function(event) { 
      var width = (window.innerWidth) -yPadding;
      var height =(window.innerHeight) -xPadding; 
      var xScale =  (width  / initialWidth) * initialScale.x; 
      var yScale = (height / initialHeight) * initialScale.y;
      var newScale = {x: xScale, y: yScale};
      stage.setAttr('width', width);
      stage.setAttr('height', height);    
      stage.setAttr('scale', newScale ); 
      stage.draw();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22475027

复制
相关文章

相似问题

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