【问题标题】:getting the stage from a container in kineticjs从 kineticjs 中的容器获取舞台
【发布时间】:2012-10-30 00:10:42
【问题描述】:

我将此阶段与容器相关联:

html:

<div id="container">

脚本 1:

var stageInFirstScript = new Kinetic.Stage({
    container: document.getElementById('container'),
    width: this.SKETCH_WIDTH,
    height: this.SKETCH_HEIGTH
});

在第二个脚本中,我需要在刚刚创建的舞台上操纵形状。是否可以使用类似的方法检索 stageInFirstScript?

脚本 2:

var stageInSecondScript = document.getElementById('container').RetrieveExistingStage();
//now I have retrieved stageInFirstScript
//I can add shapes to it, etc....

任何帮助或替代解决方案将不胜感激!

【问题讨论】:

    标签: javascript html canvas kineticjs


    【解决方案1】:

    您应该能够简单地引用您创建的变量,即“stageInFirstScript”。但是如果这两个脚本在两个不同的范围内,请尝试将此变量设为全局变量,然后像这样访问它(我将在此示例中使用 jquery):

    Script1.js:

    var stageInFirstScript; // declaring global variable
    
    $(window).load(function() {
    
       // assigning new stage to the global variable
    
       stageInFirstScript = new Kinetic.Stage({
           container: document.getElementById('container'),
           width: this.SKETCH_WIDTH,
           height: this.SKETCH_HEIGTH
       });
    
    });
    

    然后在script2.js中:

    function doSomething() {
    
        // accessing global variable and calling its method
    
        stageInFirstScript.setHeight(300); 
    
    }
    

    只要在定义变量之后调用函数,这应该可以工作,在这种情况下是在加载窗口之后。

    如果您想获取任何容器的阶段,我能想到的一种方法是创建一个数组,将动态阶段与容器(例如它们的 id)关联起来。

    【讨论】:

    • 听起来很愚蠢,来自 java 我忘记了全局变量。让这些 glob var 在类或函数之外浮动似乎很奇怪。非常感谢。
    猜你喜欢
    • 2012-12-13
    • 2013-02-06
    • 2014-06-01
    • 1970-01-01
    • 2013-07-02
    • 2012-11-22
    • 2014-04-18
    • 2013-09-14
    • 2012-11-09
    相关资源
    最近更新 更多