您收到该错误的原因cherry
是不是对象的属性或方法,而是显示对象容器cPie
的子显示对象的实例名称。cPie
要访问cherry
显示对象,您必须使用cPie
对象的继承DisplayObjectContainer
方法,即getChildByName()
方法。幸运的是,这已经在 frankhermes 的另一个答案中进行了解释,因此我将在以下示例中解释另一种(并且可以说是更好的)访问子显示对象的方法:
樱桃派.as:
package display
{
import flash.display.MovieClip;
public class CherryPie extends MovieClip
{
private var _cherry:MovieClip;
public function get cherry():MovieClip
{
return _cherry;
}// end function
public function CherryPie()
{
_cherry = cherryMC;
}// end function
}// end class
}// end package
主要作为:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
init();
}// end function
private function init():void
{
var cherryPie:CherryPie = new CherryPie();
cherryPie.x = 100;
cherryPie.y = 100;
cherryPie.cherry.gotoAndStop(2);
addChild(cherryPie);
}// end function
}// end class
}// end package
通过为您的影片剪辑创建一个基类cherryPie_mc
,您可以创建一个名为的属性,并在启动该类时cherry
将子显示对象分配给它。cherry
这样您就可以直接访问cherry
子显示对象,例如:
cherryPie.cherry.gotoAndStop(2);
相对于:
cherryPie.getChildByName("cherryMC").gotoAndStop(2);
您可以将CherryPie
类设置为cherryPie_mc
影片剪辑的基类,如下所示:
注意:符号属性中的“名称”应为“cherryPie_mc”

对于那些想知道为什么我没有设置cherry
为公共财产的人
public var cherry:MovieClip;
而是使用 getter 方法来访问私有属性
private var _cherry:MovieClip;
public function get cherry():MovieClip
{
return _cherry;
}// end function
是通过省略setter方法使cherry对象成为只读的。我将其设为只读的原因是为了避免以下情况:
cherryPie.cherry = new FakeCherry();