Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS2带动态动作进入movieClip类的获取按钮_Flash_Button_Actionscript 2 - Fatal编程技术网

Flash AS2带动态动作进入movieClip类的获取按钮

Flash AS2带动态动作进入movieClip类的获取按钮,flash,button,actionscript-2,Flash,Button,Actionscript 2,注意,这必须在ActionScript 2中完成,因为我的观众播放器仅限于flash player 8 我试图构建一个简单的类来扩展基本的Movieclip类。 然后,我使用properties面板将这个类应用到库中的movieclip,并在其中为它指定类名。这一切都很好,在我使用attachMovie将movieclip附加到舞台上之后,我能够在该对象上使用我的类和方法等。我似乎无法开始工作的是我在电影剪辑中的按钮。最初我在库movieclip中设置了一个按钮,但是我似乎无法在我的类中设置该按

注意,这必须在ActionScript 2中完成,因为我的观众播放器仅限于flash player 8

我试图构建一个简单的类来扩展基本的Movieclip类。 然后,我使用properties面板将这个类应用到库中的movieclip,并在其中为它指定类名。这一切都很好,在我使用attachMovie将movieclip附加到舞台上之后,我能够在该对象上使用我的类和方法等。我似乎无法开始工作的是我在电影剪辑中的按钮。最初我在库movieclip中设置了一个按钮,但是我似乎无法在我的类中设置该按钮。我想做的只是在按钮中设置一个简单的getURL类型,但它似乎不起作用

我尝试只在类中分配onMouseDown处理程序而不是按钮,这确实有效,但无论我在舞台上单击什么位置而不是在图形区域上单击,都会发生这种情况。这会触发我在舞台上拥有的类的任何其他实例上的所有其他处理程序,因此它们都会立即启动。然而,使用onRollOver和onRollOut确实像我预期的那样工作

我还尝试在库中设置另一个按钮,并在我的类中使用this.attachMovie来附加它,但我似乎仍然无法获得它的句柄

我创建了一个非常简单的测试脚本,试图说明我正在尝试做什么:-

class Test extends MovieClip {

    public function Test() {
        // constructor code
        this.attachMovie("theButton" , "myButton" , _root.getNextHighestDepth() )
        this.myButton.onMouseDown = clickMe;
        this._x = Math.random() * 800;
        this._y = Math.random() * 400;
    }


    public function clickMe() {
        trace("I have been clicked"+this._name);
    }

}
因此,问题是,我如何附加(或在movieclip中显示)一个按钮,我可以为该按钮提供onMouseDown或onMouseUp类型的处理程序,该处理程序只有在单击实际按钮时才能工作?我在这里做错了什么。。。我尝试了很多不同的想法,但似乎都不管用。记住这是AS2而不是AS3。谢谢。

三点:

  • 请记住,返回对新 附片;利用这个优势

  • 另外,
    onRelease
    是首选方式,它与 单击,查看此SO post“”

  • 最后,当获得下一个最高深度时(使用
    getNextHighestDepth
    ),记住每个MovieClip都有自己的深度 系统(尽管内部只有一个全局系统),所以 始终找到与所连接的MC相关的深度。自从
    attachMovie
    正在调用
    this
    ,然后
    getNextHighestDepth
    应在
    上调用此

  • 更新代码:

    class Test extends MovieClip {
        public function Test() {
            var btn = this.attachMovie("theButton" , "myButton" , this.getNextHighestDepth() );
            // "bnt" is now the button instance, while "this" is still the Test mc
            btn.onRelease = btn.onReleaseOutside = this.clickMe; // i roped in onReleaseOutside, but this might not be necessary
            this._x = Math.random() * 800;
            this._y = Math.random() * 400;
        }
        public function clickMe() {
            trace("I have been clicked"+this._name);
        }
    }
    

    as2已经有一段时间了,但是您是否尝试过
    this.myButton.onRelease=clickMe?您在
    Test
    的实例上没有任何单击事件,是吗?(旁注:使用this.getNextHighestDepth(),而不是_root,获取所附加内容的下一个深度)this.myButton.onMouseDown行给我一个错误,表示没有名为“myButton”的属性。我确实理解它为什么这么说,但我无法理解attachMovie在类中是如何工作的,以及如何从中获得一个我可以瞄准和使用的属性。谢谢Zamnuts。。。如果我在库中使用movieclip中存在的按钮(类处于打开状态),并且我只是在类级别使用onRelease,而不是尝试将其附加到按钮上,那么使用this.onRelease似乎会有所不同。我觉得有点奇怪,但至少它似乎起作用了。谢谢你。。。我没有意识到attachMovie有一个返回值。