带有 HTML 按钮的 CreateJS

奥菲麦克尼尔

因此,我无法使用外部按钮在画布上绘制形状 onclick。它只是行不通。我究竟做错了什么?我尝试使用 jQuery 函数和原生 HTML5,但无济于事。

代码:

JS:

    $(function(){
            $('button').click(function(){
               testButton();
            })
        })      

var stage, output;

        function init() {
            stage = new createjs.Stage("demoCanvas");

            // For mobile devices.
            createjs.Touch.enable(stage);

            // this lets our drag continue to track the mouse even when it leaves the canvas:
            // play with commenting this out to see the difference.
            stage.mouseMoveOutside = true; 

            var circle = new createjs.Shape();
      var square = new createjs.Shape();
      var rec = new createjs.Shape();
            circle.graphics.beginFill("red").drawCircle(0, 0, 50);
square.graphics.beginFill("blue").drawRect(0, 0, 50, 50);
rec.graphics.beginFill("green").drawRect(0, 0, 100, 50);

      function testButton(){
        var testsquare = new createjs.Shape();      
   testsquare.graphics.beginFill("yellow").drawRect(0, 0, 50, 50);

        var draggert = new createjs.Container();
      draggert.x = draggert.y = 100;
      draggert.addChild(testsquare);
      stage.addChild(draggert);

        draggert.on("pressmove",function(evt) {
                // currentTarget will be the container that the event listener was added to:
                evt.currentTarget.x = evt.stageX;
                evt.currentTarget.y = evt.stageY;
                // make sure to redraw the stage to show the change:
                stage.update();   
            });
      }


            var label = new createjs.Text("drag me", "bold 14px Arial", "#FFFFFF");
            label.textAlign = "center";
            label.y = -7;

            var draggerc = new createjs.Container();
            draggerc.x = draggerc.y = 100;
            draggerc.addChild(circle, label);
            stage.addChild(draggerc);

      var draggers = new createjs.Container();
      draggers.x = draggers.y = 100;
      draggers.addChild(square);
      stage.addChild(draggers);

      var draggerr = new createjs.Container();
      draggerr.x = draggerr.y = 100;
      draggerr.addChild(rec);
      stage.addChild(draggerr);

            draggerc.on("pressmove",function(evt) {
                // currentTarget will be the container that the event listener was added to:
                evt.currentTarget.x = evt.stageX;
                evt.currentTarget.y = evt.stageY;
                // make sure to redraw the stage to show the change:
                stage.update();   
            });

      draggers.on("pressmove",function(evt) {
                // currentTarget will be the container that the event listener was added to:
                evt.currentTarget.x = evt.stageX;
                evt.currentTarget.y = evt.stageY;
                // make sure to redraw the stage to show the change:
                stage.update();   
            });

      draggerr.on("pressmove",function(evt) {
                // currentTarget will be the container that the event listener was added to:
                evt.currentTarget.x = evt.stageX;
                evt.currentTarget.y = evt.stageY;
                // make sure to redraw the stage to show the change:
                stage.update();   
            });

            stage.update();
        }

HTML:
<body onload="init();">
    <canvas id="demoCanvas" width="500" height="200">
        alternate content
    </canvas>
  <button class = "test">Test</button>
</body>

我在 CodePen 上有我正在做的演示:https ://codepen.io/AoifeMcNeill/pen/bvZJEg ? editors = 1010

这是我正在进行的一个更大项目的一部分,而这正是我真正努力工作的部分。我尝试过 Easeljs、Createjs、Paperjs、Konvajs、HTML5 native 等。我要么完全错误,要么遗漏了一些明显的东西。我一直在自学 Canvas,因为这是我的年终项目。无论如何,如果您想尝试帮助解决我遇到的问题,请使用 CodePen:https ://codepen.io/AoifeMcNeill/pen/VXqXgv?editors=1000

如果你能帮助其中任何一个,那就太棒了!

塞巴斯蒂安·德罗西

所以这里有几个问题导致它不能按预期工作。首先你的范围是错误的,所以函数testButton是未定义的,永远不会被触发。我会通过删除 jquery 函数并使用普通的旧 javascript 来简化事情:

HTML

<button id="testBtn" class="test">Test</button>

JS

testBtn = document.getElementById("testBtn");
testBtn.addEventListener("click", testButton)

我看到的第二个问题是,当testButton最终被解雇时,您没有更新舞台

用这个替换该函数:

function testButton(){

    var testsquare = new createjs.Shape(); 
    //Add color to see that a new shape was created 
    var color = createjs.Graphics.getHSL(Math.random()*360| 0 , 100, 50);testsquare.graphics.beginFill(color).drawRect(0, 0, 50, 50);

    var draggert = new createjs.Container();
     //Added in random position to see newly created shape
    draggert.x = Math.random()*100;
    draggert.y = Math.random()*100;
    draggert.addChild(testsquare);
    stage.addChild(draggert);

    draggert.on("pressmove",function(evt) {
            // currentTarget will be the container that the event listener was added to:
            evt.currentTarget.x = evt.stageX;
            evt.currentTarget.y = evt.stageY;
            // make sure to redraw the stage to show the change:
            // this will only happen when shape is moved
            stage.update();   
        });
    //Update stage when new shape is created
    stage.update();   
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提交带有按钮的表单(HTML)

来自分类Dev

带有CSS的HTML5中的居中按钮

来自分类Dev

带有标签按钮rtl的页面导航中的html

来自分类Dev

如何使用contenttools编辑带有(按钮)链接的html?

来自分类Dev

单击带有Flask的按钮后无法打开html

来自分类Dev

带有Jquery的HTML按钮突出显示不起作用

来自分类Dev

带有Javascript的HTML5视频播放/停止按钮

来自分类Dev

带有Jquery .html()函数添加的按钮不起作用

来自分类Dev

如何使用提交按钮转到带有HTML的URL

来自分类Dev

带有按钮和html的Javascript新输入字段

来自分类Dev

带有OnServerClick的HTML按钮找不到方法

来自分类Dev

提取带有填充单选按钮的html表

来自分类Dev

带有内联按钮的HTML Select2对齐

来自分类Dev

jQuery生成带有append()按钮冲突的HTML

来自分类Dev

HTML-显示多个图像(可能带有按钮)

来自分类Dev

HTML5 Canvas/CreateJS 停止所有嵌套的影片剪辑?

来自分类Dev

带有网址的按钮

来自分类Dev

如何使用有效的ng-click函数添加带有angularjs的html按钮

来自分类Dev

在html中找到所有单选按钮,然后复制带有完整属性和值的此按钮

来自分类Dev

带有增加减少功能的按钮,带有一个带数量限制的html

来自分类Dev

带有Windows西里尔按钮名称的HTML表单在OSX上不起作用

来自分类Dev

Fancybox v2关闭对话框,其内容带有html按钮

来自分类Dev

使用CakePHP的HTML /表单帮助器创建带有链接的按钮

来自分类Dev

如何使用jQuery创建带有复选框的HTML按钮?

来自分类Dev

html / javascript如何在单击按钮时显示带有方法的用户输入?

来自分类Dev

一种HTML表单,带有多个提交按钮,可完成不同的任务

来自分类Dev

如何在Flutter中显示带有提交按钮和隐藏输入字段的HTML表单

来自分类Dev

单击后,HTML按钮变为“已选择”,带有蓝色的轮廓,这是不需要的

来自分类Dev

使用CakePHP的HTML /表单帮助器创建带有链接的按钮

Related 相关文章

  1. 1

    提交带有按钮的表单(HTML)

  2. 2

    带有CSS的HTML5中的居中按钮

  3. 3

    带有标签按钮rtl的页面导航中的html

  4. 4

    如何使用contenttools编辑带有(按钮)链接的html?

  5. 5

    单击带有Flask的按钮后无法打开html

  6. 6

    带有Jquery的HTML按钮突出显示不起作用

  7. 7

    带有Javascript的HTML5视频播放/停止按钮

  8. 8

    带有Jquery .html()函数添加的按钮不起作用

  9. 9

    如何使用提交按钮转到带有HTML的URL

  10. 10

    带有按钮和html的Javascript新输入字段

  11. 11

    带有OnServerClick的HTML按钮找不到方法

  12. 12

    提取带有填充单选按钮的html表

  13. 13

    带有内联按钮的HTML Select2对齐

  14. 14

    jQuery生成带有append()按钮冲突的HTML

  15. 15

    HTML-显示多个图像(可能带有按钮)

  16. 16

    HTML5 Canvas/CreateJS 停止所有嵌套的影片剪辑?

  17. 17

    带有网址的按钮

  18. 18

    如何使用有效的ng-click函数添加带有angularjs的html按钮

  19. 19

    在html中找到所有单选按钮,然后复制带有完整属性和值的此按钮

  20. 20

    带有增加减少功能的按钮,带有一个带数量限制的html

  21. 21

    带有Windows西里尔按钮名称的HTML表单在OSX上不起作用

  22. 22

    Fancybox v2关闭对话框,其内容带有html按钮

  23. 23

    使用CakePHP的HTML /表单帮助器创建带有链接的按钮

  24. 24

    如何使用jQuery创建带有复选框的HTML按钮?

  25. 25

    html / javascript如何在单击按钮时显示带有方法的用户输入?

  26. 26

    一种HTML表单,带有多个提交按钮,可完成不同的任务

  27. 27

    如何在Flutter中显示带有提交按钮和隐藏输入字段的HTML表单

  28. 28

    单击后,HTML按钮变为“已选择”,带有蓝色的轮廓,这是不需要的

  29. 29

    使用CakePHP的HTML /表单帮助器创建带有链接的按钮

热门标签

归档