0

我在将草图附加到动态创建的 div 时遇到问题。以下代码有效:

<div id="column_1" y='1' class="column"> </div>
<div id="column_2" y='2' class="column"></div>  
<div id="column_3" y='3' class="column">
    <canvas id="cube" data-processing-sources="/processing/rotating_cube.pde" width="240" height="240">
    </canvas>
    <p>something</p>
</div>

但是,不是那个:

$('#test4').click(function(){
    alert("test4");
    $('#column_3').append( 
        '<canvas id="cube" data-processing-sources="/processing/rotating_cube.pde" width="240" height="240">' +
        '</canvas>' +
        '<p>something</p>'
    );
});

我正在使用 nodejs 网络服务器和 processing.js

任何指针将不胜感激

4

1 回答 1

0

更多信息:

所有示例都显示了如何在页面加载时实例化/创建草图,但我需要稍后动态创建它。我尝试了另一种方法:

   // checking if we need to create a canvas for Processing     
    var sensor_type = sensorID.substr((sensorID.indexOf('_')+1),sensorID.length);
    //alert(sensor_type);
    if(sensor_type === 'X')
      {
        //alert('it is X');
        $("#"+sensorID+"P").append( 
        // canvas container
        '<div id="' + canvasdiv + '" >' +
        //'<canvas id="cube" data-processing-sources="/processing/rotating_cube.pde" width="240" height="240">' +
        '<canvas id="cube" data-processing-sources="/processing/rotating_cube.pde" style="border: 1px solid black" width="240" height="240">' +
        '</canvas>' + 
        '</div>');


// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
// creating a processing instance based on http://ben1amin.wordpress.com/2011/03/27/initializing-a-processing-sketch-using-a-canvas-tag-and-javascript/ 

var processingCode = ('import processing.opengl.*;' + '\n' +
'float inc = 0.01;' + '\n' + 
'void setup()' + '\n' + 
'{' + '\n' +
' noStroke();' + '\n' +
'  size(240, 240, OPENGL);' + '\n' +
'}' + '\n' +
'void draw()' + '\n' +
'{' + '\n' +
'  background(#1B9Ff0);' + '\n' +
'  lights();' + '\n' +
'  inc +=0.01;' + '\n' +
'  pushMatrix();' + '\n' +
'  translate(width/2, height/2);' + '\n' +
'  rotateX(inc);' + '\n' +
'  rotateY(inc);' + '\n' +
'  box(120, 50, 20);' + '\n' +
'  popMatrix();' + '\n' +
'}' + '\n');

var jsCode = Processing.compile(processingCode).sourceCode;


  Processing("cube", jsCode);


// end of creating a processing instance
// ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ        
      };

上面的代码在函数 var jsCode = Processing.compile.... 上失败。

仍然需要帮助。谢谢

于 2013-11-08T04:06:11.633 回答