【问题标题】:p5.js manually call setup and drawp5.j​​s 手动调用 setup 和 draw
【发布时间】:2016-09-26 20:37:19
【问题描述】:

我正在使用 p5.js 制作在线游戏,我想手动调用 setup,一旦调用 setup,我希望 draw() 运行。

例如,如果我点击一个按钮:

<button id="somebutton" onclick="setup()">CLICK ME!!!</button>

然后将创建画布并运行 setup 中的所有内容并运行 draw()。

【问题讨论】:

    标签: javascript html button p5.js


    【解决方案1】:

    你为什么要这样做?

    处理需要做很多与调用setup() 函数相关的事情,所以几乎没有充分的理由让您手动调用它。

    使用变量

    如果您不想在单击按钮之前开始绘制草图,则应与setup() 函数分开执行。您可以跟踪boolean,它告诉Processing 是否启动草图,然后在您单击按钮时设置boolean。像这样的:

    var started = false;
    
    function setup(){
       createCanvas(windowWidth, windowHeight);
       noLoop();
    }
    
    function draw(){
       if(started){
          //your code here
       }
    }
    
    function start(){
       started = true;
       loop();
    }
    

    然后在您的 html 中,您将拥有:

    <button id="somebutton" onclick="start()">CLICK ME!!!</button>
    

    使用实例模式

    您也可以使用instance mode 来延迟草图的创建。像这样的:

    function startSketch(){
       var sketch = function( p ) {
    
         var x = 100; 
         var y = 100;
    
         p.setup = function() {
           p.createCanvas(700, 410);
         };
    
         p.draw = function() {
           p.background(0);
           p.fill(255);
           p.rect(x,y,50,50);
         };
       };
    
       var myp5 = new p5(sketch);
    }
    

    然后在您的 html 中,您将拥有:

    <button id="somebutton" onclick="startSketch()">CLICK ME!!!</button>
    

    【讨论】:

    • 好的,我使用了实例模式...将我的代码放入实例模式需要一些时间,但它有效:)
    • 现在我将不得不花一整天的时间来编辑 css :D... 如果您想查看我的项目,请访问以下网站:destroyersio.herokuapp.com
    • @BigBenGamerGuyKSPMC 为什么要编辑 css?
    • 因为否则看起来会很丑:0
    • 如何停止实例模式?
    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多