Actionscript 3 从Flash访问未定义属性到Flashbuilder

Actionscript 3 从Flash访问未定义属性到Flashbuilder,actionscript-3,flash,flashbuilder4,Actionscript 3,Flash,Flashbuilder4,搜索了一会儿,但我在堆栈上找不到答案,所以我希望有人能帮助我 我尝试了Flash prof CS6和Flashbuilder,我在Flash中创建了一个名为square_mc的Movieclip,并用square的名称对其进行了实例化 我已将名为Main.as的类文件链接到FLash builder,并在FLash builder中写入: package { import flash.display.MovieClip; import flash.events.MouseE

搜索了一会儿,但我在堆栈上找不到答案,所以我希望有人能帮助我

我尝试了Flash prof CS6和Flashbuilder,我在Flash中创建了一个名为square_mc的Movieclip,并用square的名称对其进行了实例化

我已将名为Main.as的类文件链接到FLash builder,并在FLash builder中写入:

   package
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Main extends MovieClip
    {
        public function Main()
    {
            super();

            circle.addEventListener(MouseEvent.CLICK, onToolClick);
    }

    function onToolClick(event:MouseEvent):void{
        trace("klickade på ontoolclick");
        }

    }
}
在Flash builder中,我收到警告“访问未定义的属性圈” 但当我运行它时,它就像一个符咒

我猜这只是因为Flashbuilder不知道我已经用Flash中的名称circle实例化了它,因此给出了警告

有什么方法可以让Flashbuilder了解它的存在和工作吗?

选项1: 为了解决这个问题,我通常在FlashCS6的ActionScript设置(文件>ActionScript设置)中取消选中“自动声明阶段实例”。然后在Flash Builder中,在Flash CS6中声明您在舞台上的电影剪辑:

package
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Main extends MovieClip
    {
        public var circle:MovieClip; // manually declare circle

        public function Main()
    {
            super();

            circle.addEventListener(MouseEvent.CLICK, onToolClick);
    }

    function onToolClick(event:MouseEvent):void{
        trace("klickade på ontoolclick");
        }

    }
}
选项2: 如果您不想手动声明舞台上的所有电影,选项2是创建对circle的引用,作为Flash Builder的单独变量:

package
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Main extends MovieClip
    {
        private var _circle:MovieClip;

        public function Main()
    {
            super();
            _circle = this.getChildByName( "circle" ) as MovieClip;
            _circle.addEventListener(MouseEvent.CLICK, onToolClick);
    }

    function onToolClick(event:MouseEvent):void{
        trace("klickade på ontoolclick");
        }

    }
}

这应该可以阻止Flash Builder向您发送错误消息:)

非常感谢,谷歌搜索了更多关于“自动声明阶段实例”的信息,选项1似乎是一个很好的答案。顺便说一句,当我尝试从库中获取movieclips(如“shape=new star_mc()”,因为它直到运行时才找到star_mc。对于这些链接项,我建议使用SWC文件。可以使用所有链接符号创建库fla,并在“发布设置”中检查swc导出。然后在当前项目中参考Flash Builder和Flash Pro中的swc。保持事物整洁:)