使用AS3中的函数传递和返回变量

时间:2013-10-01 22:10:11

标签: actionscript-3 function variables return

我在理解如何使用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");
}

2 个答案:

答案 0 :(得分:1)

您正在关注的几个问题是:

    {li}中的myLike mySelection()myLike中的deleteButton() myLike不一样它们是两个具有相同名称的独立变量。 mySelection()的{​​{1}}只能在myLike内使用,而mySelection()的{​​{1}}只能在deleteButton()内使用。< / p>
  1. 您在myLike内有另一个名为deleteButton()的参数,该参数未被使用。此外,当您尝试在deleteButton()内拨打event时,您只会传入一个参数,而deleteButton()则有两个不同的参数:mySelection()deleteButton()。< / p>

  2. 因此,本质上存在一些语法问题,并且您在代码中尝试执行的操作似乎还有其他一些问题,所以我真的需要建议您尝试查找更多内容的教程。一次只做一步的条款。您需要了解范围,全局变量,类,参数等内容。

    但就这两个函数而言, 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 );
}