- 浏览: 124618 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
zhouhaiyang88:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
xurichusheng:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
wgcooo:
javax.naming.NameNotFoundExcept ...
ActiveMq-JMS简单实例使用tomcat -
huang-tao:
你好,在吗?请问,我启动Tomcat时报如下错,是什么原因?= ...
ActiveMq-JMS简单实例使用tomcat -
Eric.Yan:
好文章,明天试一试
ActiveMq-JMS简单实例使用tomcat
Flash/Flex学习笔记(7):ActionScript3.0中的面对对象
- 博客分类:
- Flash/Flex学习笔记
首先要习惯AS3.0的几个BT约定:
1.一个.as文件中,只能定义一个类
2.类名称必须与.as的文件名相同
3.类定义中必须要有package包声明
4.一个类最多只能有一个构造函数
5.包package的路径/名称约定:
这个初次接触时感觉有点小复杂,这样描述吧:
如果您在定义一个类时,package的声明指定了名称,比如 package jimmy{ public class MyClass{...}},那么也就意味着需要对它引用的fla/as文件同级目录下,必须要有jimmy目录,而且jimmy目录下必须要有MyClass.as文件,而且MyClass文件中定义的类名必须为MyClass
然后你再引用该类时,必须导入该包
import jimmy.MyClass;
然后才能引用比如: var mycls:MyClass = new MyClass();
简单来讲,就是package名必须与目录名准确匹配。
这里还有一种特殊情况:
假如定义的package名称为jimmy.yang,根据上面的解释,则同级目录下必须要有jimmy.yang目录,这是没问题的,但是还可以这样组织目录结构,先创建一个jimmy目录,然后再创建一个yang目录,然后把as文件放到jimmy/yang/目录下,即:如果package名称中有"点"时(比如package a.b),则目录./a.b/ 与./a/b/效果相同,推荐用后者,这样层次更分明
好了,开始定义第一个类:
package
{
public
class
Human {
public
function
Human(){
this
._name =
"暂无名字"
;
trace
(
"Human构造函数被调用!"
);
}
private
var
_name:
String
;
public
function
get
Name():
String
{
return
_name;
}
////仅本类及子类定义中可用(实际上这个编译能过,但无法在子类中使用)
// protected function set Name(n:String):void{
// this._name = n;
// }
public
function
SetName(n:
String
):
void
{
this
._name = n;
}
//属性 set get示例
private
var
_sex:
Boolean
public
function
set
Sex(v:
Boolean
):
void
{
_sex = v;
}
public
function
get
Sex():
Boolean
{
return
_sex;
}
public
function
Hello():
void
{
trace
(_name +
" say:Hello World!"
);
HiChildren();
//测试在本类中调用受保护方法
}
//受保护方法
protected
function
HiChildren():
void
{
trace
(_name +
":HiChildren"
);
}
//静态方法
public
static
function
WhoAmI():
String
{
return
"This is a Human Class"
}
}
}
上面演示了构造器,属性(set/get),静态方法,受保护方法,注意:AS3中不支抽象类
package
{
public
class
Man
extends
Human {
public
function
Man(n:
String
):
void
{
super
();
SetName(n);
super
.Sex=
true
;
trace
(
"Man构造函数被调用!"
);
HiChildren();
//调用父类的受保护方法
}
//覆盖父类的性别设置函数
public
override
function
set
Sex(v:
Boolean
):
void
{
//Sex = true;//既然已经是男的,肯定是男的,这里就用不着了,除非咱们的系统支持"变性"
trace
(
"无法修改Man的性别"
);
}
//protected override function set Name(n:String):void{
// //Name = n;//报错:对Name的引用有歧义
// }
public
function
ChaseGirls():
void
{
trace
(Name +
"正在泡妞..."
);
}
}
}
上面演示了类继承、覆写,下面调用这二个类测试一番:
var
h:Human =
new
Human();
trace
(h.Name);
h.Sex =
true
;
trace
(h.Sex);
trace
(Human.WhoAmI())
h.Hello();
//h.Name = "菩提树下的杨过";//这里会报错:属性只读,因为Name的set方法受保护
//h.HiChildren(); //同理无法调用
var
_man:Man =
new
Man(
"菩提树下的杨过"
);
trace
(
"_man的性别:"
+ _man.Sex);
//trace(Man.WhoAmI());//静态方法将不被继承
_man.Hello();
//_man.HiChildren();//受保护方法无法在子类实例中使用
_man.ChaseGirls();
输出结果:
Human构造函数被调用!
暂无名字
true
This is a Human Class
暂无名字 say:Hello World!
暂无名字:HiChildren
Human构造函数被调用!
Man构造函数被调用!
菩提树下的杨过:HiChildren
无法修改Man的性别
_man的性别:true
菩提树下的杨过 say:Hello World!
菩提树下的杨过:HiChildren
菩提树下的杨过正在泡妞...
另外:做为符合ECMA规范的语言,ActionScript同样具有类似JavaScript的动态语言能力,我们把Human.cs再改一下:
package
{
public
dynamic
class
Human {
public
function
Human() {
trace
(
"Human构造函数被调用!"
);
}
public
function
toString():
String
{
return
"This is a Human instance!"
;
}
}
}
注意dynamic关键字,加上这个后,Human就具备了动态修改属性的能力,看下面的测试代码:
var
h:Human =
new
Human();
h.age =
10
;
h.name =
"菩提树下的杨过"
;
h.Say =
function
(){
trace
(h.name +
":Hello!"
);
}
trace
(h.toString());
trace
(h.age);
trace
(h.name);
h.Say();
var
h2:Human =
new
Human();
trace
(h2.age);
//输出undefiend
输出结果:
Human构造函数被调用!
This is a Human instance!
10
菩提树下的杨过
菩提树下的杨过:Hello!
Human构造函数被调用!
undefined
如果一个类不想被继承,可以用final关键字标识,通常可以把一些辅助方法以static方式定义在final标识的类中,构成自己的工具类库(有点象c#中的静态类)
package
{
public
final
class
MyUtils {
public
static
function
Test(s:
String
):
String
{
trace
(s);
return
s;
}
public
static
function
Now():
String
{
trace
(
new
Date
());
return
new
Date
().toLocaleString();
}
}
}
调用:
MyUtils.Test(
"hello test"
);
MyUtils.Now();
用final + static组合还能实现类似枚举的效果:
package
{
public
final
class
LOGIN_REG_ERROR {
public
static
const
USERNAME_EXISTS =
"用户名已存在"
;
public
static
const
PASSWORD_ERROR =
"密码错误"
;
public
static
const
USENAME_ERROR =
"用户名错误"
;
//...
}
}
使用示例:
var
_loginResult:
String
;
if
(_loginResult==LOGIN_REG_ERROR.USERNAME_EXISTS) {
trace
(
"用户名已存在!"
);
}
AS3.0还支持接口,看下面的代码
package
{
public
interface
IFly {
function
Fly():
void
;
}
package
{
public
class
Duck
implements
IFly {
public
function
Duck() {
trace
(
"来来,我是一只鸭子..."
);
}
public
function
Fly():
void
{
trace
(
"请叫我小飞侠,谢谢!"
)
}
}
}
最后看下原型链prototype:在javascript中正是得益于prototype才实现了很多惊人的应用,同样在as3.0中也存在原型链,所有动态属性的继承都可以通过原型继承实现,不过要注意的是:如果你准备对一个类进行prototype扩展以实现原型继承,则该类必须标识为dynamic,下面是示例代码:
var
d:Duck =
new
Duck();
d.Fly();
Duck.prototype.Swim =
function
(){
trace
(
"正在游泳...请回避(裸泳?)"
);
}
d.Swim();
//请先将上一段代码中的Duck类定义加上dynamic关键字,否则本行代码无法执行
发表评论
-
Flash/Flex学习笔记(50):矩阵变换
2011-04-24 13:52 1188先回顾一下Silvelright中的矩阵变换[转]WPF中的M ... -
Flash/Flex学习笔记(49):背面剔除与 3D 灯光
2011-04-24 13:50 1002今天继续:上一回Flash/Flex学习笔记(50):3D线条 ... -
Flash/Flex学习笔记(48):迷你滚动条ScrollBar
2011-04-24 13:46 1092先看最终效果: 整个swf最终不到4k, ... -
Flash/Flex学习笔记(47):利用FMS快速创建一个文本聊天室
2011-04-24 13:45 1017先来看客户端fla的构成: 第一帧:登录界面 第一帧的 ... -
Flash/Flex学习笔记(46):使用TweenLite
2011-04-24 13:43 1707TweenLite是第三方出品的专用于各种缓动动画的类库,其性 ... -
Flash/Flex学习笔记(45):3维旋转与透视变换(PerspectiveProjection)
2011-04-24 13:41 1235Flash/Flex学习笔记:3D基础 里已经介绍了3D透 ... -
Flash/Flex学习笔记(44):3D线条与填充
2011-04-24 13:39 11203D线条:把上一篇中的3D坐标旋转示例稍做修改,用线把各个 ... -
Flash/Flex学习笔记(43):3D基础
2011-04-24 13:34 1176之前我们所做的动画都 ... -
Flash/Flex学习笔记(42):反向运动学(下)
2011-04-24 13:30 936先要复习一下三角函数与余弦定理: 对于直角三角形,三边长 ... -
Flash/Flex学习笔记(41):反向运动学(上)
2011-04-24 13:29 961先回顾上篇所说的"正向运动学":以人行 ... -
Flash/Flex学习笔记(40):正向运动学
2011-04-24 13:27 909所谓"正向运动学"通俗点讲就是把几个连接部 ... -
Flash/Flex学习笔记(39):万有引力与粒子系统
2011-04-24 13:26 743万有引用公式: 其中G为万有引力常数 var numP ... -
Flash/Flex学习笔记(38):动量守恒与能量守恒
2011-04-24 13:24 970动能公式: 动量公式: 动量守恒: 能量守恒: ... -
Flash/Flex学习笔记(37):坐标旋转
2011-04-24 13:23 1045坐标旋转是个啥概念呢? 如上图,(蓝色)小球 绕某一 ... -
Flash/Flex学习笔记(36):碰撞检测
2011-04-24 13:22 622碰撞检测基本上可能分为二类:对象与对象的碰撞检测、对象与点 ... -
Flash/Flex学习笔记(35):弹性运动续--弹簧
2011-04-24 13:21 800上一篇里演示的弹性运动加上摩擦力因素后,物体最终基本上都会比较 ... -
Flash/Flex学习笔记(34):弹性运动
2011-04-24 13:20 801动画中的弹性运动 从视觉效果上接近 物理经典力学中的单摆运 ... -
Flash/Flex学习笔记(33):缓动动画
2011-04-24 13:18 1016缓动 与 匀变速 看上去很类似,但其实有区别: 匀变速的 ... -
Flash/Flex学习笔记(32):不用系统组件(纯AS3)的视频播放器--只有8.82K
2011-04-24 13:17 1300以前为了赶项目,利用系统组件制作过一款视频播放器(见Fla ... -
Flash/Flex学习笔记(31):自己动手实现一个滑块控件(JimmySilder)
2011-04-24 13:15 997先看最终的演示: 滑块条的应用实在太广泛了:mp3播放器中声 ...
相关推荐
Flex ActionScript 学习笔记是关于使用Adobe Flex技术并结合ActionScript 3.0进行开发的知识总结。ActionScript 3.0是随着Flash CS3一起推出的一种强大的编程语言,相较于之前的ActionScript版本,它有着显著的提升...
《Flex3.0学习手册》是Bēniaǒ成长笔记中的一部分,由“虾皮工作室”整理而成,旨在帮助读者深入了解Flex3.0及其相关技术。本书不仅涵盖了Flex3.0的基础知识,还涉及到了ActionScript 3.0的应用以及与Flash Media ...
AS 3.0,全称为ActionScript 3.0,是Adobe公司开发的一种面向对象的编程语言,主要用于创建互动性的富媒体内容,如网页动画、游戏以及Adobe Flash Player支持的应用程序。AS 3.0是Flash平台的重要组成部分,带来了...
Flash 学习笔记 Flash 中的帧按表现方式的不同分为普通帧、关键帧和白色关键帧三种,普通帧是动画时间轴中的一个小格子,关键帧是动画播放过程中的呈现关键作用或内容变化的帧,而白色关键帧是无任何内容的关键帧。...
### Flex学习笔记:ActionScript与Flex开发入门 #### 1. ActionScript核心概念 ##### 1.1 类和对象(Class and Object) 类是对象的模板,定义了一组具有相同特性和行为的对象的共同属性和方法。在ActionScript中...
Flex学习笔记概述 Flex是一种由Adobe开发的企业级富互联网应用(RIA)的表示层解决方案,其主要目的是提供高度交互和动态的用户体验。Flex的核心在于它的编程语言MXML和ActionScript(AS),这两种语言结合在一起,...
### Flex 学习笔记知识点详解 #### 一、Flex 技术概述 - **定义**:Flex 是一种用于构建和部署跨浏览器、跨平台的丰富互联网应用程序 (RIA) 的开源框架。 - **特点**: - 强大的 UI 构建能力:允许开发者创建高度...
Flex AS3 学习笔记总结 Flex 是 Adobe 开发的 RIA(Rich Internet Applications)工具,包括 Flex3 SDK、Flex Builder 和服务器产品,如 Lifestyle Data Services、CodeFushion。Flex 应用程序用 Flash.swf 文件...
本文档是针对Flex和Java初学者的学习笔记,涵盖了Flex中的基础组件、文本处理、样式设计、行为对象以及动画效果。 一、Flex基础组件 1. Button:按钮组件,可以设置文字和图标,图标通过`icon="@Embed('图片路径')...
本学习笔记结合Flex4.7框架,将深入探讨如何在Flash平台上构建高效的3D图形应用。 一、Away3D 4.1简介 Away3D 4.1是该引擎的一个主要版本,引入了许多性能优化和新特性。它支持硬件加速,提供更流畅的3D渲染效果,...
《AS3.0_AS3殿堂之路_笔记》是针对Adobe ActionScript 3.0(简称AS3)深入学习的一份详尽笔记,旨在帮助学习者系统掌握这一强大的编程语言,尤其对于想要在Flash平台上进行交互式内容开发的人员来说,这份笔记具有极...
- **ActionScript 3.0**:Flex 2.0的核心编程语言,提供了更强大的面向对象编程能力,性能也得到了大幅提升。 - **Flash Player 9**:作为Flex 2.0的运行环境,相比之前的版本在性能上有显著提高。 ##### 2.2 应用...
标题中的“Flex学习资料(续)”表明这是一个关于Adobe Flex技术的进阶学习资源,Flex是一种用于构建富互联网应用程序(RIA)的框架,基于ActionScript和MXML。它允许开发者创建交互性强、功能丰富的Web应用。 描述...
ActionScript是Flex开发的核心,它是一种面向对象的脚本语言,主要用于控制Flash Player或Adobe AIR中的动画和交互。ActionScript 3.0是目前广泛使用的版本,它提供了更强大的性能和更严谨的类型系统。在学习...
flex4很多种之前学习收集的各种文档(Adobe - Flex 快速入门基础 Flex 组件的定位和布局,Flex+Css完全手册,flex中文帮助,Flex4.0API,flex教程,FLEX4_Flex4教程,flash_ActionScript_3.0实用教程,flex4自定义皮肤详解,...
1. **Flex技术**:Flex是基于ActionScript 3.0的开放源代码框架,用于构建运行于Adobe Flash Player或Adobe AIR平台的RIA。它包含一套MXML和AS3的组件库,以及一个强大的IDE——Adobe Flex Builder,使得开发人员...
**特定于AIR的ActionScript 3.0类**: - 这些类提供了专为Adobe AIR设计的API,涵盖了文件系统访问、网络连接、本地存储等方面的功能。 **具有特定于AIR功能的Flash Player类**: - Flash Player 类扩展了其功能,...
Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将深入探讨PV3D的API文档、学习笔记以及全景案例,...
ActionScript 3是Adobe Flash和Flex开发中的核心语言,对于创建互动媒体和富互联网应用至关重要。 在第一部分中,笔记详细介绍了ActionScript 3的语言基础,包括数据类型。ActionScript 3中的数据类型分为简单数据...