使用动作脚本 1 定义事件处理函数方法

注意:如果您从未使用动作脚本编写过面向对象的脚本,而且不需要以 Flash Player 5 作为目标播放器,则不应使用本节中的信息,因为我们不鼓励使用动作脚本 1 来编写脚本;而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。

可以为影片剪辑创建一个动作脚本类,然后在新创建的类的原型对象中定义事件处理函数方法。在原型对象中定义方法可使该元件的所有实例都以同一种方式响应事件。

也可以将 onClipEvent()on() 事件处理函数动作添加到一个单独的实例中,以提供只有当该实例的事件发生时才运行的独特指令。onClipEvent()on() 动作不会重写事件处理函数方法;两种事件都会使它们的脚本运行。不过,如果在原型对象中定义了事件处理函数方法,同时也为某个特定实例定义了事件处理函数方法,那么该实例定义会重写原型定义。

在对象的原型对象中定义事件处理函数方法:

  1. 将一个链接 ID 为 theID 的影片剪辑元件放到库中。
  2. 在“动作”面板上(“窗口”>“开发面板”>“动作”),使用 function 动作定义一个新类,如下所示:
    // 定义类
    function myClipClass(){}
    

    这个新类将被指定给由时间轴添加到应用程序中的影片剪辑的所有实例,或者是用 attachMovie()duplicateMovieClip() 方法添加到应用程序中的影片剪辑的所有实例。如果想让这些影片剪辑能够访问内置 MovieClip 对象的方法和属性,则需要让新类继承 MovieClip 类的方法和属性。

  3. 输入如下代码:
    // 从 MovieClip 类继承方法和属性
    myClipClass.prototype = new MovieClip();
    

    现在,myClipClass 类继承了 MovieClip 类的所有属性和方法。

  4. 输入如下代码,定义这个新类的事件处理函数方法:
    // 为 myClipClass 类定义事件处理函数方法
    myClipClass.prototype.onLoad = function() {trace ("movie clip loaded");}
    myClipClass.prototype.onEnterFrame = function() {trace ("movie clip entered frame");}
    
  5. 如果“库”面板没有打开,请选择“窗口”>“库”打开它。
  6. 选择想与新类关联的元件,然后从“库”面板右上角的弹出菜单中选择“链接”。
  7. 在“链接属性”对话框中,选择“为动作脚本导出”。
  8. 在“标识符”框中输入一个标识符。

    对于想与新类关联的所有元件,它们的标识符必须都相同。在 myClipClass 示例中,标识符是 theID

  9. 在“脚本”窗格中输入如下代码:
    // 注册类
    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);