我在理解如何使用AS3以特定方式在函数之间传递属性方面遇到了很多麻烦。如何更改下面的代码,以便deleteButton函数可以从mySelection函数中检索变量myLike?
import flash.ui.Keyboard;
import flash.events.MouseEvent;
import flash.ui.Mouse;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
btnDelete.addEventListener(MouseEvent.CLICK, deleteButton);
function keyPressed(event:KeyboardEvent)
{
var myLike:String;
if (event.keyCode==49) {
myLike = "ice cream";
}
else if (event.keyCode==50) {
myLike = "chocolate milk";
}
else if (event.keyCode==51) {
myLike = "cookies";
}
else
{
myLike = "nothing";
}
mySelection(myLike);
}
function mySelection(myLike)
{
trace("I select " + myLike + ".");
deleteButton(myLike);
}
function deleteButton(event:MouseEvent, myLike) {
trace(myLike + "has been deleted");
}
答案 0 :(得分:1)
您正在关注的几个问题是:
myLike
mySelection()
和myLike
中的deleteButton()
myLike
不一样它们是两个具有相同名称的独立变量。 mySelection()
的{{1}}只能在myLike
内使用,而mySelection()
的{{1}}只能在deleteButton()
内使用。< / p>
您在myLike
内有另一个名为deleteButton()
的参数,该参数未被使用。此外,当您尝试在deleteButton()
内拨打event
时,您只会传入一个参数,而deleteButton()
则有两个不同的参数:mySelection()
和deleteButton()
。< / p>
因此,本质上存在一些语法问题,并且您在代码中尝试执行的操作似乎还有其他一些问题,所以我真的需要建议您尝试查找更多内容的教程。一次只做一步的条款。您需要了解范围,全局变量,类,参数等内容。
但就这两个函数而言, in and their of their ,这应该有效:
event
答案 1 :(得分:0)
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
btnDelete.addEventListener(MouseEvent.CLICK, onButtonClicked);
function keyPressed( event:KeyboardEvent ):void
{
var myLike:String;
if (event.keyCode==49) {
myLike = "ice cream";
}
else if (event.keyCode==50) {
myLike = "chocolate milk";
}
else if (event.keyCode==51) {
myLike = "cookies";
}
else
{
myLike = "nothing";
}
deleteButton( myLike );
}
// presuming your button instance names are the same as the names in the switch statement
function onButtonClicked( evt:MouseEvent ):void {
var deleteThis:String = evt.target.name;
deleteButton( deleteThis );
}
function deleteButton( myLike:String ):void {
trace(myLike + "has been deleted");
}
此代码实际上并没有删除任何内容。如果要删除单击的按钮,请尝试使用onButtonClicked方法:
function onButtonClicked( evt:MouseEvent ):void {
var deleteThis:String = evt.target.name;
// path to the display list your button is in
removeChild( evt.target );
}