类中的事件监听器

时间:2014-01-02 18:57:50

标签: actionscript-3 flash class

我在课堂上为一个对象添加了一个事件监听器,它不在第1帧上,并且它不起作用。有什么办法可以让它发挥作用吗?

我的代码是:

package Home
{

    import flash.display.SimpleButton;
    import flash.events.MouseEvent;


    public class Home extends SimpleButton
    {
        public var Home_mc:SimpleButton;

        public function Home()
        {

            Home_mc.addEventListener(MouseEvent.CLICK, home_1);
        }

        function home_1(event:MouseEvent):void
        {
            //gotoAndStop('Home',"Home-sc");
            trace("CLICKED");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

public var Home_mc:SimpleButton;

你在这里声明一个变量,但我不确定为什么。它已被声明,但我没有看到你从中制作一个实例并将其放在屏幕上。

我猜你是在家做一个实例,在屏幕上显示。 那么你应该只将事件添加到你的类而不是home_mc变量。

this.addEventListener(MouseEvent.CLICK, home_1);

编辑完整性:

您可以将as3类链接到按钮符号

package  
{
    import flash.events.MouseEvent;

    public class Home extends SimpleButton
    {
        public function Home()
        {
            // Add the event to instances of this class
            this.addEventListener(MouseEvent.CLICK, home_1);
        }

        function home_1(event:MouseEvent):void
        {
            //gotoAndStop('Home',"Home-sc");
            trace("CLICKED");
        }
    }

}

然后你可以从其他地方创建一个类的实例,并在某个displayobject上使用addchild。

package  
{
    import flash.display.MovieClip;
    public class start extends MovieClip 
    {
        public function start() 
        {
            var home:Home = new Home();
            this.addChild(home);
        }
    }
}
  

我的代码位于单独的类文件中。我是AS3的新手,抱歉让人不安。我想知道是否>'var Home_mc:Simplebutton = new SimpleButton();'或者通过单击对象上的>输入实例名称。它们都是同一个东西吗?

是的,这基本相同。

  

我现在所做的是在Home按钮中添加了一个实例名称“Home_mc”。将类文件链接到>它。现在工作正常。但是当我使用gotoAndStop()时,它给了我一个错误,“调用>可能未定义的方法gotoAndStop()”

从你想要实现的目标来看,我不会使用一个简单的按钮类,而是扩展一个movieclipclass。两者之间存在一些差异。也许本教程可以为您提供一些指导:http://www.youtube.com/watch?v=Z0VhiqQVMpY