Animate ActionScript 3.0 中的按钮超链接
Button Hyperlinking in Animate ActionScript 3.0
我正在尝试使用 ActionScript 在 Adobe Animate 中制作三个按钮。这是我用于按钮 1 的代码:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://website.com/"));
}
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler2(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://anotherwebsite.com/"));
}
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler3(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://yetanotherwebsite.com/"));
}
(URL是编造的,仅用于演示目的。)如您所见,按钮 2 和 3 的代码完全相同,但在不同的层上。我还更改了每个按钮开头的实例名称、函数名称和 URL。但是当我按下 CTRL + Enter 时,所有按钮都指向同一个网页(在本例中为 "website.com"),这是我第一个输入的网页。它应该导致我输入的不同 URLs,但它们都指向同一个。为什么会发生这种情况,我该如何解决?
问题是,虽然您已经为 3 个单独的按钮定义了 3 个单独的处理函数,但您将第一个处理函数附加到所有 3 个按钮:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
你的意思是:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler2);
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler3);
不过,顺便说一句,您可以使用事件的当前目标参数通过一个处理函数完成所有操作,以确定单击了哪个按钮:
function mouseDownHandler(event:Event):void {
var url:String;
//event.currentTarget is a reference to the object that you attached the event listener to
switch(event.currentTarget){
case button:
url = "https://website.com/";
break;
case button2:
url = "https://anotherwebsite.com/";
break;
default:
url = "https://yetanotherwebsite.com/";
}
navigateToURL(new URLRequest(url));
}
我正在尝试使用 ActionScript 在 Adobe Animate 中制作三个按钮。这是我用于按钮 1 的代码:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://website.com/"));
}
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler2(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://anotherwebsite.com/"));
}
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler3(event:MouseEvent):void {
navigateToURL(new
URLRequest("https://yetanotherwebsite.com/"));
}
(URL是编造的,仅用于演示目的。)如您所见,按钮 2 和 3 的代码完全相同,但在不同的层上。我还更改了每个按钮开头的实例名称、函数名称和 URL。但是当我按下 CTRL + Enter 时,所有按钮都指向同一个网页(在本例中为 "website.com"),这是我第一个输入的网页。它应该导致我输入的不同 URLs,但它们都指向同一个。为什么会发生这种情况,我该如何解决?
问题是,虽然您已经为 3 个单独的按钮定义了 3 个单独的处理函数,但您将第一个处理函数附加到所有 3 个按钮:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
你的意思是:
button. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
button2. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler2);
button3. addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler3);
不过,顺便说一句,您可以使用事件的当前目标参数通过一个处理函数完成所有操作,以确定单击了哪个按钮:
function mouseDownHandler(event:Event):void {
var url:String;
//event.currentTarget is a reference to the object that you attached the event listener to
switch(event.currentTarget){
case button:
url = "https://website.com/";
break;
case button2:
url = "https://anotherwebsite.com/";
break;
default:
url = "https://yetanotherwebsite.com/";
}
navigateToURL(new URLRequest(url));
}