2013-10-01 42 views
0

我很難理解如何使用AS3以特定方式在函數之間傳遞屬性。如何更改下面的代碼,以便deleteButton函數可以從mySelection函數中檢索變量myLike?在AS3中使用函數傳遞和返回變量

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
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); 
} 
1

一對夫婦的你在看問題是:

  1. mySelection()myLikemyLikedeleteButton()不一樣myLike;它們是兩個具有相同名稱的獨立變量。 mySelection()myLike只能在mySelection()之內使用,並且deleteButton()myLike只能在deleteButton()之內使用。

  2. 您在deleteButton()中有另一個參數,稱爲event,未使用。另外,當您嘗試在mySelection()內部調用deleteButton()時,只能傳入一個參數,而deleteButton()有兩個不同的參數:eventmyLike

所以有一些語法問題本質,而且似乎是一對夫婦的其他問題,你想在你的代碼做什麼,所以我真的需要建議你嘗試找到一個教程在一次只採取一步一步方面做得更多。你需要了解的東西就像範圍,全局變量,類,參數等

但只是就這兩個函數而言,本身,並且,這應該工作:

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

function deleteButton(myLike) { 
    trace(myLike + "has been deleted"); 
}