我有两节课。 Main类调用一个函数,该函数在Second类中定义。我收到以下错误: 错误1120:访问未定义的属性myFunction
基本上,我在Main类中创建了一个按钮,它将相应的Child添加到Second类中的Object中(如果单击一个按钮,将添加子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);
}
}
}
}
}
我已经尝试将一个新变量定义为公共静态var并且没有用。我也尝试在Main类中导入Second类,但也没有用。有什么想法吗? 谢谢!
答案 0 :(得分:2)
如果我理解你的代码所说的内容,你就无法做你想做的事情。即使您正在侦听X1和X2上的事件,您正在收听他们的主要内容。换句话说,main正在尝试处理事件,并且它没有找到您指定的函数(selectPlayer)。如果您希望所有事件处理都发生在main中,那么main将在收到事件时调用X1和X2。
答案 1 :(得分:2)
我同意ThatSteveGuy,在Main中你正在调用一个不存在的函数,即selectPlayer()。在您的代码之后,您应该做的第一件事是在Main中添加一个selectPlayer()函数。
然后,您需要在Main中添加Second类的实例,以便以下工作
private function selectPlayer(event:MouseEvent):void
{
second.selectPlayer(event);
}
现在进一步建议你有点困难,因为这种做事方式看起来有点复杂但是我需要再次看到全局。这只是解释您的代码无效的原因。此外,在第二个类中,selectPlayer可能会抛出一个错误,因为Game(this.parent)将返回一个空值,因此您将无法访问转弯属性...
是否有充分的理由需要在Main中添加两个按钮而不是在Second中添加它们?
答案 2 :(得分:0)
试试这个
public function Second():void
{
this.addEventListener(MouseEvent.CLICK, selectPlayer);
addChild(myVar);
}
(不要忘记从main中删除x1.addEventListener,x2.addEventListener)