注意:如果您从未使用动作脚本编写过面向对象的脚本,而且不需要以 Flash Player 5 作为目标播放器,则不应使用本节中的信息,因为我们不鼓励使用动作脚本 1 来编写脚本;而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。
可以为影片剪辑创建一个动作脚本类,然后在新创建的类的原型对象中定义事件处理函数方法。在原型对象中定义方法可使该元件的所有实例都以同一种方式响应事件。
也可以将 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");}
对于想与新类关联的所有元件,它们的标识符必须都相同。在 myClipClass
示例中,标识符是 theID
。
// 注册类 Object.registerClass("theID", myClipClass); _root.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); _root.attachMovie("myclipID","ablue2",3);