我有兩個類。 Main類調用一個函數,該函數在第二個類中定義。我收到以下錯誤: 錯誤1120:訪問未定義的屬性myFunctionAS 3.0:從Main類中調用另一個類中定義的方法給出錯誤1120
基本上,我在Main類中創建按鈕,將相應的子項添加到第二個類中的對象(如果您單擊一個按鈕,孩子x1將被添加,如果你點擊另一個按鈕,孩子x2將被添加,等等)。
下面是對文件Main.as相關代碼:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip {
private var x1:X1 = new X1();
private var x2:X2 = new X2();
public function Main():void {
addPlayers();
}
public function addPlayers():void {
addChild(x1);
addChild(x2);
x1.x=325;
x1.y=5;
x2.x=366;
x2.y=5;
x1.label = "dog";
x2.label = "cat";
x1.addEventListener(MouseEvent.CLICK, selectPlayer);
x2.addEventListener(MouseEvent.CLICK, selectPlayer);
}
}
}
的Second.as文件代碼:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.MouseEvent;
public class Second extends MovieClip
{
public var myVar:MyVar = new MyVar();
public function Second():void
{
addChild(myVar);
}
private var mc_x1:Mc_x1 = new Mc_x1();
private var mc_x2:Mc_x2 = new Mc_x2();
public function selectPlayer(event:MouseEvent):void
{
if (Game(this.parent).turn == 0) {
myVar.addChild(mc_x1);
} else {
switch (event.currentTarget.label) {
case "dog":
myVar.addChild(mc_x1);
break;
case "cat":
myVar.addChild(mc_x2);
break;
default:
myVar.addChild(mc_x1);
}
}
}
}
}
我試過定義一個新的變量作爲公共靜態無功並沒有奏效。我也嘗試在Main類中導入第二個類,但也沒有工作。有什麼想法嗎? 謝謝!
嗨ThatSteveGuy, 感謝您的回覆!我不明白你的意思是什麼「,那麼當它收到一個事件時,main將不得不調用x1和x2。」你能澄清一下嗎?謝謝! – julie2010 2010-08-16 14:31:00
實際上有很多方法可以完成你正在嘗試做的事情,而且我不確定我是否正確地閱讀了你的代碼,但是一種方法是讓eventHandler(selectPlayer)在main中,並且使用一個公共函數你的玩家類(Second)叫做setAnimal。你在main中的事件處理器會做如下的事情:(event.currentTarget as [YourPlayerClassName])。setAnimal(); setAnimal可以在需要的時候接受一個參數,它指定了新的動物。您可能想聽取第二個事件作爲替代(如widged建議)。 – ThatSteveGuy 2010-08-16 15:42:52