如何:Adobe Animate - gotoAndStop();点击按钮

时间:2016-09-29 13:16:15

标签: javascript flash animation adobe

我已经在.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以获取点击次数。单击时,它将链接到指定的帧并停止。

我希望有几位错误*可能在函数()部分附近?

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

3 个答案:

答案 0 :(得分:0)

我认为问题是功能范围,这是一个常见的错误。

addEventListener方法没有隐含的范围,因此函数将在窗口中调用。如果在单击这些按钮时在控制台中输出this,您可能会看到Window。要解决此问题,您可以:

  1. 绑定您的方法(docs
  2. 示例:

    this.close1_btn.addEventListener("click", function (closebtn)
    {
    this.gotoAndPlay(1);
    }.bind(this));
    
    1. 使用CreateJS on快捷方式,该快捷方式采用第3个参数(docs
    2. 示例:

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

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

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

答案 1 :(得分:0)

感谢您的回复。

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

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) 如果从本地文件系统运行,则使用位图和按钮的内容可能会在某些浏览器中生成本地安全错误。

你可以给予任何进一步的建议......

答案 2 :(得分:0)

欢呼你的继续帮助!

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

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

^^如果全部清理完毕。您是否有推荐的方式将其导出并托管在网页上?

再次感谢伙计,感谢它!