PV3D2.构建你的第一个应用

上传人:ni****g 文档编号:492549681 上传时间:2023-04-23 格式:DOC 页数:23 大小:381KB
返回 下载 相关 举报
PV3D2.构建你的第一个应用_第1页
第1页 / 共23页
PV3D2.构建你的第一个应用_第2页
第2页 / 共23页
PV3D2.构建你的第一个应用_第3页
第3页 / 共23页
PV3D2.构建你的第一个应用_第4页
第4页 / 共23页
PV3D2.构建你的第一个应用_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《PV3D2.构建你的第一个应用》由会员分享,可在线阅读,更多相关《PV3D2.构建你的第一个应用(23页珍藏版)》请在金锄头文库上搜索。

1、 构建你的第一个应用 本章,我们将开始着手写第一行代码.那些刚进入oop的程序者可以从本章的oop简单介绍开始.如果已经很熟悉oop,可以跳过此段继续学习Papervision3D里的3D场景.明了后,我们可以开始写第一个基本工程!部分工程将被封装成默认的类,以后我们都会用到这些类.本章包含以下内容:l 面向类及对象编程介绍l 熟悉文档类/主程序文件l Papervision3D的3D组织的基础l 构建你第一个工程l 为书中的实例做准备面向类及对象编程介绍本书中,我们将着重使用Papervision3D类库.我们将写出用于Flash,FlexBuilder,Flash Builder中的类.若

2、你是FlashIDE的开发者,这可能是你第一次写自己的类.面向对象的编程是本书的重要部分,本书给出了一些简短的介绍.若你已经很熟悉Flex,flash的oop编程,你可以直接阅读本章中的Papervision3D里的3D基本场景.若你是面向对象的新手也不必太担心本书仅用到了面向对象的基础.学习使用PaperVision3D进行面向对象编程可以让你对类更熟悉并且可能提高你对面向对象编程的兴趣.什么是类?实际上,他们只是一些的函数(方法)和变量(属性)组织在一个单独文件中,这被称为类的定义.一个类是创建新对象的设计.听起来有些模糊?其实你一直都在使用类.从FlashAPI里创建的每个Object都

3、基于类.如Sprite,MovieClip,及TextField这些对象可能你都用过.实际上这些都是类.这些对象的设计及他们的类都在Flash中.首先看一下我们使用FlashAPI创建Sprite对象:var mySprite:Sprite = new Sprite();很熟悉?通过这些,你创建了一个 叫mySprite的Sprite类的对象.这叫做一个类的实例.内置的类与自定义的类没什么不同.Papervision3D是一个自定义类的集合.第一章说过如何来实例化一个Papervision3D里的DisplayObject3D类,var myObject3D:DisplayObject3D =

4、 new DisplayObject3D();一旦知道了如何使用类,就可以创建自己类了.创建自定义类 ActionScript类是存放于计算机上以.as结尾的文本文件,包括ActionScript脚本代码.这些代码就是前面所说的对象的设计.现在看看设计是什么样子:推荐精选package public class ExampleClass public var myName:String = Paul; public function ExampleClass() public function returnMyName():String return My name is + myName;

5、第一行,是包(package)语句,紧随其后的是左大括号()和类下面的右大括号().包是组织类的一种方式,代表了存放类文件的目录.假设你创建了一个名为myPackage的目录并将FLA或源码文件存放在其中.为了访问此目录及里面的类,需要用目录名来定义包,如下:package myPackage .子目录的工作情况也一样.现在假设在myPackage目录下有一个名为subPackage的子目录.应该这样来定义子目录subPackage:package myPackage.subPackage . 如果你没有创建一个目录来组织你的类,可以使用默认包来代替相应的包名,(即不写包名)本书的所有例子都使

6、用默认包.实际上,为了避免命名冲突,必须用包来组织众多的类.包定义之后,将看到类的定义,看起来如:public class ExampleClass .类的名字必须和类文件的名字一致.本例中,类文件必须存为ExampleClass.as.实际上,包是一种很好的类文件组织方式,可以让项目中每个类都有唯一的名字.避免命名冲突. 在class的前面有一个public,这是一个关键字用来表明项目中所有代码都可以访问此类.这个关键字被称为访问控制符.类的名字将被用来实例化类.像这样来实例化类:var classExample:ExampleClass = new ExampleClass();在类里定义

7、的变量称其为类属性.类属性的数量不限.每个类属性均有访问控制符.本例中的访问控制符是public,表示所有的类都可以对其进行读写:var classExample:ExampleClass = new ExampleClass();推荐精选classExample.myName = Jeff;这样便创建了一个类ExampleClass的实例.我们可以将属性myName由Paul改为Jeff.当一个属性声明为public,便可以这样操作.如果你想让属性只能在类中使用,需要将属性改为private:private var myName:String = Paul;这时执行之前的代码,会得到一个编译

8、时错误.接着我们看到类中名为ExampleClass的方法.方法名与类名相同的方法被称为构造器(构造方法).public function ExampleClass()构造器的访问控制符均是public并且每当实例化类时就被自动调用.这表示构造器中的代码将被自动执行.类中其他的所有函数(function)都称为方法(method).public function returnMyName():String return My name is + myName;方法定义完后,你将发现一个冒号紧跟着一个数据类型.这是定义方法返回值的数据类型.你也可以在Flash的时间轴上这样定义方法,但这不是必须

9、的.returnMyName()方法定义了返回值是字符串.如果你不想返回任何值,可以使用void作为返回类型:public function returnNothing():void /Do not return something我们只需为普通方法定义返回类型即可,构造器无返回值 类,及其属性和方法,都用访问控制符,用来确定对象的访问权限.到现在我们已经看到了关键字public,表示在任何地方都可以访问.当使用public时,必须注意到可能会造成类的混乱.可以用private关键字来避免这样情况,private将使属性或方法只能在本类内进行访问.其余两个常用的访问控制符是internal和p

10、rotected.internal表示同一包内可以访问.protected表示属性或方法只能由子类访问.子类是oop继承的一部分,我们稍微将解释下. 只要属性或方法不准备在类外进行访问,最好将其设定为private.每当定义属性或方法时,你都应该确定下是否要在类外进行访问.继承有时想创建一个类,而此类和已存在的类又很相似,而你只是想添加一个新的方法.你可以拷贝已有的类,粘贴到新类中,再添加一个新的方法.然而这样做的效率很低.这时就有继承的用武之地了.继承是一种扩展已有类(称为父类或基类)的技术,从父类中继承的类称为子类.子类可以访问父类中所有非private的属性和方法.推荐精选假设你准备用代

11、码来创建一个汽车和一个摩托车.你可以直接写2个类,汽车和摩托车.但你很快就会注意到这2个类的方法和属性几乎都是重复的.比如2者都可以驾驶,都有属性:车轮数和速度.在抽象方式中,这些属性和方法都重复了,因为汽车和摩托车都是车辆.创建父类:车辆,汽车和摩托车都继承车辆便可以避免重复的代码.必要时,子类可以定义与父类不同的,自己专有的属性或方法.如:一汽车有4个轮子并可以在相反的方向驾驶.而摩托车有2个轮子,不能在相反的方向驾驶. 现在用2个简单类看一下继承是怎样完成的:package public class BasicClass public function doSomething():voi

12、d trace(Im doing something); package public class SubClass extends BasicClass public function saySomething():void trace(Im saying something); 第一个类作为父类并只有一个方法.实例化BasicClass并直接调用其方法.var basicClass:BasicClass = new BasicClass();basicClass.doSomething();没什么特别的.由SubClass的定义我们可看到它继承了BasicClass.这样它便可以用Bbsi

13、cClass的属性或方法.现在看看:var subClass:SubClass = new SubClass();subClass.doSomething();subClass.saySomething();subClass调用了从BasicClass继承的doSomething()方法.不但可以从自定义的类继承,也可以继承一些内置的类.现在看一下创建Sprite的子类:package import flash.display.Sprite; public class extendedSprite extends Sprite 推荐精选注意需要在包声明下面加入这句:import flash.d

14、isplay.Sprite; 为了继承在当前包中没有的类,你需要声明一个引入.引入相关的包和类.本例中的Sprite类从包flash.display引入.继承是创建新类的一种途径,以已有的类为基础-不是吗?这将使你的代码更清晰和精炼.但如果你想改变一个父类中已存在的方法? 如果你想完全的摆脱现存类的代码,直接改父类有时不可能,同时也不是一个好方法.当你用了一个第三方的类库如Papervision3D,很难想象你会修改它.当你直接修改了一些类后,一旦更新类库的版本后你的代码就失效了.幸运的是面向对象程序设计提供了一个解决方案.看一下我们如何在子类中修改BasicClass类的doSomething()方法.package public class SubClass extends BasicClass override public function doSomething():void t

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号