我在AS3中有这个代码:
package clase
{
import flash.display.MovieClip;
import flash.events.Event;
/**
* ...
* @author cry
*/
public class CercNegru extends MovieClip
{
var growthRate:Number = 2;
cerc.addEventListener(Event.ENTER_FRAME,grow);
public function CercNegru()
{
}
private function grow(e:Event):void
{
trace("asdda");
}
}
}
运行此程序时收到错误:
Line 12 1120: Access of undefined property cerc.
Line 12 1120: Access of undefined property grow.
我把图片更好地理解:
你能帮我解决这个问题吗?
提前致谢!
答案 0 :(得分:0)
错误是因为在类文件中,所有功能代码都需要存在于函数内部。
所以选择这一行,它只是在课堂上浮动:
cerc.addEventListener(Event.ENTER_FRAME,grow);
然后进入构造函数(假设您希望它在实例化类时立即运行):
public function CercNegru()
{
cerc.addEventListener(Event.ENTER_FRAME,grow);
}
在类文件中,构造函数(名称与类名完全匹配的函数)就是使用new
关键字调用的函数。
这样做new CercNegru()
会调用该函数。
现在,我还假设此类文件附加到FlashPro库对象,并且您在时间轴上有一些实例名称为cerc
的内容。 (如果不是这种情况,那就是你错误的原因)
时间轴的东西虽然在构造函数中始终不可用,但您可能需要等到实例添加到屏幕上。
public var cerc:MovieClip; //you may want to create a reference to the timeline item, so you get compile time checking
public function CercNegru()
{
this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
private function addedToStage(e:Event):void {
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
//this is the equivalent of timeline code now
cerc.addEventListener(Event.ENTER_FRAME,grow);
}
答案 1 :(得分:0)
package clase
{
import flash.display.MovieClip;
import flash.events.Event;
/**
* ...
* @author cry
*/
public class CercNegru extends MovieClip
{
var growthRate:Number = 2;
var cerc:DisplayObject; // ADD THIS
public function CercNegru()
{
cerc.addEventListener(Event.ENTER_FRAME,grow);
}
private function grow(e:Event):void
{
trace("asdda");
}
}
}
由于错误说cerc
未定义。所以你应该定义它。假设你的'cerc'是Sprite
,
var cerc:Sprite;