【问题标题】:HOW TO: Adobe Animate - gotoAndStop(); on a button click如何:Adobe Animate - gotoAndStop();点击按钮
【发布时间】:2017-02-07 20:15:17
【问题描述】:

我在 .fla 中创建了一个项目,该项目正在导出为 .swf,但是我现在需要 HTML5 格式的项目。所以我更改了文件转换类型,现在需要将我的 ActionScript3 转换为 JavaScript。不过,这不是我的强项。

我目前正在尝试:

this.stop();

this.close1_btn.addEventListener("click", function (closebtn)
{
this.gotoAndPlay(1);
});

this.store1_btn.addEventListener("click", function (store1_btn)
{
this.gotoAndPlay(11);    
});

this.store2_btn.addEventListener("click", function (store2_btn)
{
this.gotoAndPlay(12);
});

this.store3_btn.addEventListener("click", function (store3_btn)
{
this.gotoAndPlay(13);    
});

概述:尝试收听符号,例如 close1_btn 以获得点击。点击后会链接到指定的帧并停止。

我预计会有一些错误*可能在函数 () 部分附近?

这是一张相当简单的地图,所以对于知道自己在看什么的人来说应该不会太难!非常感谢您提供的任何帮助!

【问题讨论】:

    标签: javascript flash animation adobe


    【解决方案1】:

    为您继续提供帮助而欢呼!

    预览在我的浏览器中打开时不起作用,是因为我没有完全导出并在线托管吗?

    所以我可以忽略这些错误?

    ^^ 如果这一切都清除了。您有推荐的导出方式并将其托管在网页上吗?

    再次感谢哥们,不胜感激!

    【讨论】:

      【解决方案2】:

      感谢您的回复。

      我现在正在使用您提供的代码:

      this.stop();
      
      if (!this.inited) {
        // Your code
      
      
      this.close1_btn.addEventListener("click", function (closebtn)
      {
      this.gotoAndPlay(1);
      }.bind(this));
      
      this.store1_btn.addEventListener("click", function (store1btn)
      {
      this.gotoAndStop(11);
      }.bind(this));
      
      
      this.inited = true;
      }
      

      但是,我在输出中得到了这个

      警告: EaselJS 中的帧编号从 0 而不是 1 开始。例如,这会影响 gotoAndStop 和 gotoAndPlay 调用。 (5) 如果从本地文件系统运行,包含位图和按钮的内容可能会在某些浏览器中产生本地安全错误。

      如果您能提供任何进一步的建议,我们将不胜感激......

      【讨论】:

        【解决方案3】:

        我认为问题在于函数范围,这是一个常见错误。

        addEventListener 方法没有隐含的作用域,所以函数会在 window 上被调用。如果您在单击这些按钮时在控制台中输出this,您可能会看到Window。为了解决这个问题,您可以:

        1. 绑定你的方法 (docs)

        例子:

        this.close1_btn.addEventListener("click", function (closebtn)
        {
        this.gotoAndPlay(1);
        }.bind(this));
        
        1. 使用 CreateJS on 快捷方式,它采用第三个参数 (docs)

        例子:

        this.close1_btn.on("click", function (closebtn)
        {
        this.gotoAndPlay(1);
        }, this);
        

        一个重要的注意事项是,如果您再次播放第 0 帧,该帧脚本将再次运行,每次为每个按钮添加另一个侦听器,从而导致在单击按钮时多次调用函数。我推荐这样的东西:

        if (!this.inited) {
          // Your code
        
          this.inited = true;
        }
        

        【讨论】:

        • 嗨兰尼,感谢您的回复。我现在正在使用您提供的代码 'code' this.stop(); if (!this.inited) { // 你的代码 this.close1_btn.addEventListener("click", function (closebtn) { this.gotoAndPlay(1); }.bind(this)); this.store1_btn.addEventListener("click", function (store1btn) { this.gotoAndPlay(11); }.bind(this)); this.inited = true; } '代码'
        猜你喜欢
        • 1970-01-01
        • 2019-09-21
        • 1970-01-01
        • 2017-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-03
        • 2015-12-23
        相关资源
        最近更新 更多