0

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");
}
4

2 に答える 2

1

あなたが見ているいくつかの問題は次のとおりです。

  1. myLikeinmySelection()myLikeindeleteButton()は同じではありませんmyLike。これらは同じ名前の 2 つの別個の変数です。 mySelection()はのmyLike内部でのみ使用できmySelection()、はdeleteButton()の内部でmyLikeのみ使用できますdeleteButton()

  2. deleteButton()の中に、使用されていない という別のパラメータがありますeventdeleteButton()また、の内部で呼び出そうとするとmySelection()、1 つの引数のみを渡しますが、deleteButton()2 つの異なるパラメーターがあります:eventmyLike.

つまり、基本的に文法的な問題がいくつかあり、コードでやろうとしていることには他にもいくつかの問題があるようです。物事を一歩ずつ進めること。スコープ、グローバル変数、クラス、パラメーターなどについて学ぶ必要があります。

しかし、これら 2 つの関数に関する限り、それ自体で、これは機能するはずです。

function mySelection(myLike)
{
    trace("I select " + myLike + ".");
    deleteButton(myLike);
}

function deleteButton(myLike) {
    trace(myLike + "has been deleted");
}
于 2013-10-01T22:34:19.523 に答える
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 );
}
于 2013-10-01T22:33:20.847 に答える