可以为影片剪辑创建一个 ActionScript 类,然后在新创建的类的原型对象中定义事件处理函数方法。在原型对象中定义方法可使该元件的所有实例都以同一种方式响应事件。
也可以将 onClipEvent() 或 on() 事件处理函数方法添加到一个单独的实例中,以提供只有当该实例的事件发生时才运行的独特指令。onClipEvent() 和on() 方法不重写事件处理函数方法;两种事件都会使它们的脚本运行。不过,如果在原型对象中定义了事件处理函数方法,同时也为某个特定实例定义了事件处理函数方法,那么该实例定义会重写原型定义。
- 创建一个影片剪辑元件,并通过以下方式将链接标识符设置为 theID:在"库"面板中选择该元件,然后从"库"弹出菜单中选择"链接"。
- 在"动作"面板("窗口">"动作")中,使用 function 语句定义一个新类,如下面的示例所示:
// 定义类 function myClipClass() {}
这个新类被分配给由时间轴添加到应用程序中(或者是用 attachMovie() 或 duplicateMovieClip() 方法添加到应用程序中)的影片剪辑的所有实例。如果想让这些影片剪辑能够访问内置 MovieClip 对象的方法和属性,则需要让新类继承 MovieClip 类。
- 输入代码,如下面的示例:
// 从 MovieClip 类继承方法和属性 myClipClass.prototype = new MovieClip();
现在,myClipClass 类继承了 MovieClip 类的所有属性和方法。
- 输入如下例所示的代码,为这个新的类定义事件处理函数方法:
// 为 myClipClass 类定义事件处理函数方法 myClipClass.prototype.onLoad = function() {trace("movie clip loaded");} myClipClass.prototype.onEnterFrame = function() {trace("movie clip entered frame");}
- 如果"库"面板没有打开,请选择"窗口">"库"打开它。
- 选择要与新类相关联的元件,然后从"库"面板弹出菜单中选择"链接"。
- 在"链接属性"对话框中,选择"为 ActionScript 导出"。
- 在"标识符"文本框中输入一个链接标识符。
对于要与新类关联的所有元件,它们的链接标识符必须都相同。在 myClipClass 示例中,标识符是 theID。
- 在"动作"面板中输入如下面的示例所示的代码:
// 注册类 Object.registerClass("theID", myClipClass); this.attachMovie("theID","myName",1);
此步骤向 myClipClass 类注册了链接标识符为 theID 的元件。myClipClass 的所有实例都提供具有如步骤 4 中定义的行为的事件处理函数方法。同时这些实例的行为也与 MovieClip 类的所有实例相同,因为您在步骤 3 中指示新类继承 MovieClip 类。
下面的示例显示了完整的代码:
function myClipClass(){} myClipClass.prototype = new MovieClip(); myClipClass.prototype.onLoad = function(){ trace("movie clip loaded"); } myClipClass.prototype.onPress = function(){ trace("pressed"); } myClipClass.prototype.onEnterFrame = function(){ trace("movie clip entered frame"); } myClipClass.prototype.myfunction = function(){ trace("myfunction called"); } Object.registerClass("myclipID",myClipClass); this.attachMovie("myclipID","clipName",3);