Flash V2组件初探

类别:编程语言 点击:0 评论:0 推荐:

名词解释:

V2组件   即Flash 组件第2版 Flash Action  Flash脚本语言,类似Java script,动态的脚本语言

  公司一做美工的同事问我如何用最简单的办法做组件,我稍作思考,然后用了3分钟给他完成了一个简单组件。

  如果没有V2组件,我想要用这么简单地过程来告诉他的确很不容易,V1组件里面的prototype就很让人不爽,不是吗?

  V2组件需要Flash MX 2004 (Flash 7)支持,我们来看看Flash MX 2004中如何介绍V2组件的吧:

第 2 版组件的优点

使用组件,就可以做到编码与设计的分离,而且,您还可以重复利用您自己创建的组件中的代码,或者通过下载和安装其他开发人员创建的组件来重复利用代码。  使用组件,代码编写者可以创建设计人员能够在应用程序中使用的功能。开发人员可以将常用功能封装在组件中,设计人员可以自定义组件的外观和行为,方法是在“属性检查器”或“组件检查器”面板中更改参数。 第 2 版组件的新功能 “组件检查器”面板:在使用 Macromedia Flash 和 Macromedia Dreamweaver 进行创作时可以利用它来更改组件参数。 侦听器事件模型:函数的侦听器对象可以使用它来处理事件。 外观属性:使您可以只在需要时才加载状态。 基于 CSS 的样式:您可以使用它来创建具有一致外观和行为的应用程序。 主题:您可以使用它将新外观拖到一组组件上。 光晕主题:为应用程序提供预先创建的、互动式而且非常灵活的用户界面。 管理器类:提供了一种在应用程序中处理焦点和深度的简便方法。 基类 UIObject 和 UIComponent :为所有组件提供核心功能。 打包为 SWC 文件:您可以使用它来编写便于分发和可隐藏的代码。 内置数据绑定通过“组件检查器”面板提供。 便于扩展的类层次结构:使用动作脚本 2.0,使您可以创建唯一的命名空间,按需要导入类,并且可以方便地创建子类来扩展组件。

一、基础知识

  我先简单介绍一下,要做V2组件到底要了解哪些知识吧。

1、类的编写

  这个是组件必须要掌握的,语法很简单:

class biz.myco.MyClass extends MovieClip
{

}

  斜体部分是可选的。class用来定义类名,类名上可以附加上包路径(比如这里的biz.myco.),如果你指定了包路径,则一定附合指定的路径(比如这里你一定要把文件放在biz\myco文件夹下)。extends关键字表明你所定义的类派生自extends关键字后面的类。虽然上面这个类没有任何方法可用,但它的确是一个类。

  如果你有过其它面向对象语言(或面向对象的脚本语言)编写经历,你很容易理解类的作用,类用来定义“一个种类的相似特性、操作”。Flash中类的作用也是相似的,但可能更加灵活,前提是你的Flash文件遵循你自己定义的规则。

  为了简化以下的描述,下面不再使用包名、派生这些特性,每一小节只专注于本节内容。

2、类成员变量

class MyClass
{
        public var var1 : String;
}

  类成员变量定义于class块内部,由访问控制/var关键字/变量名称/变量类型组成。

  访问控制指示在类的外部能否访问内部成员,public表示可访问,private表示不可访问,如果未指定,则默认为public。

  var关键字和变量名称不可少,用来定义变量名称。

  如果要指定变量类型,则用“:”分隔放在变量名称后面。

3、类成员函数

class MyClass
{
        function hello (参数1 : 参数1类型, 参数2 : 参数2类型) : 返回类型
        {
                trace ("Function hello () be called.");
        }
}

  类成员函数由“function关键字/函数名称/(参数列)/返回类型”指定,参数是可选,返回类型则是必需的,如不需要返回值,则返回类型指定为 : Void。

4、getter/setter函数

  这个你一定得了解。简单地说,这是一对取值/赋值类成员函数,不需成对出现。根据它们的名字你能很容易区分它们的功能。使用它们的目的很简单:你能通过取值/赋值去调用一个函数。

class MyClass
{
        function set hello (t : String) : Void
        {
                trace ("Function hello (set) be called.");
        }

        function get hello ( ) : String
        {
                trace ("Function hello (get) be called.");
                return "hello";
        }
}

  语法不多介绍了,Flash MX 2004里面有非常详细的帮助,我们还是通过一个简单的例子来看看吧。

二、实例入门

  这里我只简单介绍一下,所以只用最简单的一个例子。

1、建立Flash文件

  打开Flash MX 2004,新建一个Flash文档。

  新建一个影片剪辑(MovieClip),名称随意(为方便说明,我这里命名为PointTest)。编辑PointTest,在里面添加一个实心圆,将此圆转化为MovieClip,名称随意。在PointTest内将此圆复制9个,依次命名为c1 ~ c9。再加上一个动态文本,变量名为info。

  注意我上面并不要求剪辑名称,但变量名称都有要求,因为接下来编写的类文件里要用到这些。

  保存此文件,名称随意,假定保存的路径在D:\Flash-Files\。

2、编写类

  打开记事本,输入以下内容:

class Test
{
    function set value (t:Number) : Void
    {
        if (t > 9) t = 9;
        if (t < 0) t = 0;
        set (this+".info", "点数为:"+t);
        for (var i=1; i<=9; i++)
            if (t>=i)
                set (this+".c"+i+"._visible", true);
            else
                set (this+".c"+i+"._visible", false);
    }
}

  保存到D:\Flash-Files\,文件名为Test.as,注意不要留有.txt扩展名。。

3、定义组件

  在Flash MX 2004中,打开库窗口,在PointTest上右击,选择“链接”,勾上“为动作脚本导出”,并在“AS 2.0类”文本框中输入“Test”,即刚才的类名,确认修改。

  再次在PointTest上右击,选择“组件定义”,在“AS 2.0类”中输入“Test”,确认修改。

  如果提示错误,检查前面哪一步你做错了。

4、测试

  在场景中放入一个PointTest实例,并命名为test,在第一帧加入脚本:

_root.test.value = 3;

  按Ctrl+Enter测试吧。再把上面的3修改为别的值测试看看。如果你知道如何用一个“输入文本框”和“按钮”来动态输入数值来测试,则更加能够体会到组件的好处了。

 

  本文并不是一个详细的Flash V2组件文档,只是带领一些惧怕V2组件复杂性的朋友进入这个新领域。

  在我看来,V2组件比V1组件要简单好几倍,只是脚本和Flash文件分开这一点,让阻挡了好多朋友前进的步伐,长时间以来没有一个简单的教程,真是遗憾。网上搜索了许久,都是比较复杂的介绍,而没有一个由浅入深的例子,似乎V2组件专为新的UI Components设计似的,真正用来开发的人太少了。实际上就算是Flash MX 2004 里面新的UI组件,在我看来也有着太多的缺陷没有解决,比如多语言支持(没有和多语言字符串整合),我不得不用一个空白按钮和一个动态文本来代替一个按钮以支持多语言,但有更多的地方需要做修改。

 

  看看有多少人关注V2组件吧,如果人比较多的话我会考虑续写一些文章的。比如如何解决组件差异化的问题,如何解决动态语句多语言问题等。

  (此文完成于2004年9月20日中午12点)

本文地址:http://com.8s8s.com/it/it27288.htm