Actionscript 3:调用未定义的方法

时间:2013-06-02 11:18:22

标签: actionscript

我是Actionscript的新手,这是我自己的第一个“剧本”之一,如果这很明显,请原谅我。

我有一个名为“笑脸”的电影剪辑

这是动作图层的第1帧中的动作脚本

stage.addEventListener(MouseEvent.MOUSE_MOVE, mousePosition);

var smiley:MovieClip = addChild(new Smiley) as MovieClip; // **ERROR HERE**
stage.addEventListener(MouseEvent.MOUSE_DOWN,toggleSmiley);
stage.addEventListener(MouseEvent.MOUSE_UP,toggleSmiley); 

function mousePosition(event:MouseEvent) {
smiley.x = mouseX; smiley.y = mouseY;

}

function toggleSmiley(e:MouseEvent):void
{
    smiley.visible = (e.type == MouseEvent.MOUSE_DOWN); 
    }

请参阅上面标有“ERROR HERE”的行,这就是Flash引发错误的地方。
我收到了这个错误:

  

场景1,图层'动作',第1帧,第6行1180:呼叫可能   未定义的方法笑脸。

我对这个问题的位置感到困惑。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您的“笑脸”尚未与ActionScript一起使用。就你的脚本而言,它不存在。

在库中的“Smiley”的符号属性中,选中“Export for ActionScript”。

答案 1 :(得分:0)

在您的图书馆中,您需要导出Smiley for Actionscript。打开库,选择方块,然后通过右键单击或cmd +单击选择“属性”。如果它尚未打开,请向下旋转“高级”部分,然后选择“导出for Actionscript”。在“类”字段中,您可能会看到与库中的名称相同的名称“Smiley”。这将创建自己的类,该类具有您在Flash中设计的影片剪辑的属性。

在此字段下方,您将看到“基类”,它应该具有“flash.display.MovieClip”。这意味着你的笑脸已经是一个movieclip,它只是扩展为一个额外的特殊类型,现在称为Smiley,因此当你实例化时,你不必在代码中将它声明为MovieClip,因为Smiley已经是一个MovieClip。

现在回到你的行动,你将把实例化的行改为:

var smiley:Smiley = new Smiley();
addChild(smiley);

通常,您希望首先调用类的构造函数,即:“new Smiley()”,然后将其添加到显示列表中,而不是尝试一次完成所有操作。