积少成多Flash ActionScript 3.0(2) - 基础之包、类、包外类、命名空间、属性、方法、接口和继承

Flash ActionScript 3.0动画高级编程实战教程 在ActionScript 3.0中,创建类是面向对象编程的基础。类定义了一组对象的属性和方法。属性是对象的状态,而方法则是对象的行为。下面是一个简单的类定义示例:// 属性:姓名// 属性:年龄// 构造函数:用于初始化对象属性// 方法:用于描述对象的行为接口在 ActionScript 中是一种特殊类型,它定义了一组方法但不实现它们,允许类实现这些方法。接口有助于实现抽象和模块化。 阅读详情
[源码下载]


积少成多Flash ActionScript 3.0(2) - 基础之包、类、包外类、命名空间、属性、方法、接口和继承


作者: webabcd


介绍
Flash ActionScript 3.0是一种面向对象的语言,包、类、包外类、命名空间、属性、方法、接口和继承


示例
FunctionTest.as
package actionScript
{
    import flash.display.Sprite;
    
    public class FunctionTest extends Sprite
    
{
        public 
function FunctionTest()
        
{
            
        }

        
        
// 减法
        public function Subtract(a:int, b:int):int
        
{
            
// 参数总数
            trace(arguments.length);
            
// output: 2
            
            
// 第一个参数
            trace(arguments[0]);
            
// output: “参数 a 的值”
            
            
// 第二个参数
            trace(arguments[1]);
            
// output: “参数 b 的值”
            
            
// 返回a - b
            return a - b;
        }

        
        
// 加法(args - 任意多参数)
        public function Add(s:String, args):String
        
{
            
var i:int = 0;
            
            
// 枚举出 args 中的所有参数
            for each(var v in args)
            
{
                i 
+= v;
            }

            
            
return s + ": " + i;
        }

    }

}

PropertyTest.as
package actionScript
{
    import flash.display.Sprite;
    
    public class PropertyTest extends Sprite
    
{
        
// 属性
        public var nickname:String;
        public 
var age:int;
        
        private 
var _salary:int;
        
        public 
function PropertyTest()
        
{
            
        }

        
        
// getter方法
        public function get salary():int
        
{
            
return this._salary;
        }

        
        
// setter方法
        public function set salary(s:int):void
        
{
            
this._salary = s;
        }

    }

}

StaticTest.as
package actionScript
{
    import flash.display.Sprite;
    
    public class StaticTest extends Sprite
    
{
        
// 静态属性
        public static const nickname:String = "webabcd";
        public static 
var age:int;
        
        public 
function StaticTest()
        
{
            
        }

        
        
// 静态方法
        public static function hello(s:String):String
        
{
            
return "hello: " + s;
        }

    }

}

ParentTest.as
package actionScript
{
    import flash.display.Sprite;
    
    public class ParentTest extends Sprite
    
{
        public 
function ParentTest()
        
{
            
        }

        
        
// ParentTest为基类,其内定义了一个名为hello()的方法
        public function hello(s:String):String
        
{
            
return "hello: " + s;
        }

    }

}

ChildTest.as
package actionScript
{
    import actionScript.ParentTest;
    
    
// ChildTest类继承自ParentTest类
    // final代表禁止继承
    public final class ChildTest extends ParentTest
    
{
        public 
function ChildTest()
        
{
            
        }

        
        
// 重写基类(ParentTest)中的hello()方法
        public override function hello(s:String):String
        
{
            
// super为对基类的引用
            return "基类的hello()方法 - " + super.hello(s) + ";子类重写后的hello()方法 - 您好: " + s;
        }

    }

}

china.as
package actionScript
{
    
// 定义一个名为china的命名空间
    // 注:actionScript目录下必须要有名为china.as的文件
    public namespace china;
}

usa.as
package actionScript
{
    
// 定义一个名为usa的命名空间
    // 注:actionScript目录下必须要有名为usa.as的文件
    public namespace usa;
}

NamespaceTest.as
package actionScript
{
    import flash.display.Sprite;
    
    
// 使用命名控件
    use namespace china;
    use namespace usa;
    
    public class NamespaceTest extends Sprite
    
{
            
        public 
function NamespaceTest()
        
{
            
        }

        
        
// china命名空间的hello()方法
        china function hello(s:String):String
        
{
            
return "您好: " + s;
        }

        
        
// usa命名空间的hello()方法
        usa function hello(s:String):String
        
{
            
return "hello: " + s;
        }

    }

}

InterfaceTest.as
package actionScript
{
    
// 定义一个接口,该接口有一个方法
    public interface InterfaceTest
    
{
        
function writeLog():String;
    }

}

InterfaceTestA.as
package actionScript
{
    
// 实现InterfaceTest接口
    // 在同一个包中,所以不需要import InterfaceTest
    public class InterfaceTestA implements InterfaceTest
    
{
        
// 实现InterfaceTest接口的writeLog()方法
        public function writeLog():String
        
{
            
return "记录日志到SQL Server数据库";
        }

    }

}

InterfaceTestB.as
package actionScript
{
    
// 实现InterfaceTest接口
    // 在同一个包中,所以不需要import InterfaceTest
    public class InterfaceTestB implements InterfaceTest
    
{
        
// 实现InterfaceTest接口的writeLog()方法
        public function writeLog():String
        
{
            
return "记录日志到XML文件";
        }

    }

}

OO.as
package
{
    import flash.display.Sprite;
    
    
// 导入actionScript目录下的所有包
    import actionScript.*;
    
    public class OO extends Sprite
    
{
        public 
function OO()
        
{
            
// internal - 包内访问(默认)
            // public - 完全公开
            // private - 仅当前类可访问
            // protected - 子类可访问
            
            
// 用函数表达式定义函数
            var hello:Function = function(s:String):String
            
{
                
return "hello: " + s;
            }

            trace(hello(
"webabcd"));
            
// output: hello: webabcd
            
            
// 方法
            showFunction();
            
            
// 属性、getter方法和setter方法
            showProperty();
            
            
// 静态属性和静态方法
            showStatic();
            
            
// 包外类
            showPackageOut();
            
            
// 命名空间
            showNamespace();
            
            
// 继承、基类和子类
            showInherit();
            
            
// 接口
            showInterface();
        }

        
        
// 方法
        function showFunction():void
        
{
            
var ft:FunctionTest = new FunctionTest();
            
            trace(ft.Subtract(
300, 100));
            
// output: 200
            
            trace(ft.Add(
"webabcd", 1, 2, 3, 4, 5));
            
// output: webabcd: 15
        }

        
        
// 属性、getter方法和setter方法
        function showProperty():void
        
{
            
var pt:PropertyTest = new PropertyTest();
            pt.nickname 
= "webabcd";
            pt.age 
= 27;
            pt.salary 
= 1000;
            
            trace(pt.nickname);
            
// output: webabcd
            
            trace(pt.age);
            
// output: 27
            
            trace(pt.salary);
            
// output: 1000
        }

        
        
// 静态属性和静态方法
        function showStatic():void
        
{
            trace(StaticTest.nickname);
            
// output: webabcd
            
            StaticTest.age 
= 27;
            
            trace(StaticTest.age);
            
// output: 27
            
            trace(StaticTest.hello(
"webabcd"));
            
// output: hello: webabcd
        }

        
        
// 包外类
        function showPackageOut()
        
{
            
var po:PackageOut = new PackageOut();
            
            trace(po.hello(
"webabcd"));
            
// output: hello: webabcd
        }

        
        
// 命名空间
        function showNamespace()
        
{
            
// 使用命名空间
            // use namespace 不受上下文的影响,编译时会被自动地提到前端
            use namespace china;
            
            
var n:NamespaceTest = new NamespaceTest();
            
            trace(n.hello(
"webabcd"));
            
// output: 您好: webabcd
            
            
// 使用命名空间名称限定符
            trace(n.usa::hello("webabcd"));
            
// output: hello: webabcd
        }

        
        
// 继承、基类和子类
        function showInherit()
        
{
            
var ct:ChildTest = new ChildTest();
            
            trace(ct.hello(
"webabcd"));
            
// output: 基类的hello()方法 - hello: webabcd;子类重写后的hello()方法 - 您好: webabcd

            trace(ct is ParentTest);
            
// output: true
        }

        
        
// 接口
        function showInterface()
        
{
            
var a:InterfaceTest = new InterfaceTestA();
            
            trace(a.writeLog());
            
// output: 记录日志到SQL Server数据库
            
            trace(a is InterfaceTest);
            
// output: true
            
            
var b:InterfaceTest = new InterfaceTestB();
            
            trace(b.writeLog());
            
// output: 记录日志到XML文件
            
            trace(b is InterfaceTest);
            
// output: true
        }

    }

}


//  包外类(只有当前类文件中的成员类可以访问)
class PackageOut
{
    public 
function hello(s:String):String
    
{
        
return "hello: " + s;
    }

}


OK
[源码下载]
Flash ActionScript 3.0动画开发高级实战教程 函数通过function关键字声明,可带参数与返回值:// 输出: Hello, Bob函数是构建模块化代码的基础,为后续面向对象编程做好铺垫。ActionScript 3.0 使用来定义类,类文件必须与类名一致,并放在正确的包路径下。package {在实际开发中,我们经常需要根据业务需求创建自定义类。本节将通过一个完整的示例,展示如何设计并使用一个自定义类。_vy *= -1; 阅读详情

相关推荐

Adobe Flash ActionScript 3.0动画制作完整教程

ActionScript 3.0是Adobe公司开发的基于ECMAScript标准的一种面向对象编程语言,它是Flash Player和Adobe AIR应用程序的主要编程语言。ActionScript 3.0以其高性能、强大功能以及面向对象的编程范式,成为了构建丰富互联网应用(RIA)的首选语言。类的定义已经通过上面的例子说明,实例化类的对象非常直接。以下是实例化的具体操作:// 创建Animal和Dog类的实例// 使用对象调用方法。

weixin_28840811的博客 1286

actionscript 保外类

as3.0的封装层次简单的说分为包外,包,类,包外类。封装层次越靠内,访问层次越严格。、 所谓包外,也就是相当于公共权限,这个层次的代码可以被任意的第三方访问。 包是二级访问,包内的成员可以互相访问,但是包内的成员不能被包外访问 类:在类的内部成员可以互相访问,但是外部无法访问私有成员 包外类:只能被包中的类访问,它属于当前类的私有类,具体的用途,当当前类中的一些复杂的逻辑...

dodomail的专栏 120

深入掌握Flash ActionScript3.0:入门到精通教程与示例

函数是组织代码逻辑的基本单位。在ActionScript 3.0中,可以使用function关键字定义函数,并通过函数名调用它们。// 输出: Hello, World以上章节覆盖了ActionScript 3.0的基础语法知识,为后续章节中的面向对象编程、类型系统、事件处理等高级主题打下坚实基础。面向对象编程(OOP)是现代编程语言的核心范式之一,它以对象为基本单位,通过封装、继承和多态性来构建软件系统。

weixin_33610780的博客 1374

第22节 包外类

一、创建hello.as文件 package{ import flash.display.Sprite; public class hello extends Sprite{ public function hello():void{ var foo:say=new say();//包外类使用方法 } } } class

Java_c# 814

ActionScript 3.0实用代码手册

本文还有配套的精品资源,点击获取 简介:《ActionScript 3.0 Cookbook》是一本面向Flash平台交互式内容开发者的实用指南,涵盖大量代码示例和问题解决策略。本书着重介绍ActionScript 3.0版本,强调面向对象编程概念和实际问题解决能力的提升。书中包括对事件处理、图形绘制、动画制作、网络通信、音频和视频处理等方面的深入探讨。每一节都提供实际的解...

weixin_42311427的博客 1685

ActionScript 3.0从入门到实战完整教程

ActionScript 3.0(简称AS3)是Adobe推出的面向对象脚本语言,专为构建富媒体交互应用而设计。它随着Flash Player 9的发布而诞生,标志着Flash平台从简单的动画脚本语言向成熟编程语言的转变。AS3基于ECMAScript标准,引入了更强的类型系统、异常处理机制以及事件驱动模型,提升了代码的可维护性与执行效率。其核心特性包括完善的面向对象支持、基于事件流的交互机制、以及丰富的内置类库,适用于开发Web游戏、企业级RIA应用以及跨平台移动应用(通过Adobe AIR)。

weixin_42602241的博客 972

unity overrideSprite的使用

今天在看视频的一位老师用到了overrideSprite但是自己之前没有接触过,都使用sprite,于是就去查看了一下官方手册大概意思是这样类: overrideSprite 用于修改临时图片,但是会保留原来图片,只是覆盖在之前的图片,如果overrideSprite 是空的话,就会回到之前的图片(sprite),sprite就是把图片进行更换。 这里是官方网站: file:///D:/unity...

weixin_43333566的博客 1170

掌握 Flash 动画与应用的 ActionScript 2.0 编程指南

在ActionScript 2.0中,类是面向对象编程的基础,它定义了对象的蓝图,其中包含了属性和方法。类通过关键字class来定义,遵循统一的命名规范,类名通常采用帕斯卡命名法(PascalCase),每个单词的首字母大写。// 类属性// 构造函数// 类方法在上述代码中,定义了一个Car类,包含三个属性(makemodelyear)和两个方法(构造函数Car和构造函数用于创建对象时初始化属性值。实例化一个类的对象相当简单,使用new。

weixin_42584758的博客 562

Image中的OverrideSprite的用法说明

跟Sprite最大的差别是使用override sprite 给null的话会变回原本的图片 另外 若使用override sprite更换图片 接下来要更换也只能用override sprite再覆盖掉 用sprite会无法再次更换 另外一些参考可以借鉴他人的 https://blog.csdn.net/techfield/article/details/83010499 谢谢 ...

qq_32354205的博客 1047

ActionScript 3.0 测试项目详解

本文还有配套的精品资源,点击获取 简介:ActionScript 3.0(AS3)是一种基于ECMAScript for XML (E4X) 的脚本语言,主要用于Adobe Flash平台。本项目【as3-测试】包含了测试用例和示例代码,用于验证AS3的核心特性和功能。AS3相对于AS2进行了显著改进,支持强类型系统、面向对象编程、动态语言特性、事件处理、XML和JSON操...

weixin_42596011的博客 1131

ActionScript3.0实作:Flash点灯游戏全攻略

ActionScript3.0中的类是构建面向对象程序的基础。一个类可以被看作是创建对象的蓝图,提供了一组方法(函数)和属性(变量),它们共同定义了对象的外观和行为。类允许开发者封装数据和功能,从而提高代码的重用性、可维护性和可扩展性。在游戏开发中,使用类可以很好地组织游戏逻辑和管理游戏状态。以下是ActionScript3.0中类的定义和使用的简单示例:die();在上面的代码中,类有私有成员变量_name和_health。

weixin_35509395的博客 1031

积少成多Flash(2) - ActionScript 3.0 基础之包、类、包外类、命名空间、属性、方法、接口和继承...

[索引页][×××] 积少成多Flash(2) - ActionScript 3.0 基础之包、类、包外类、命名空间、属性、方法、接口和继承 作者:webabcd介绍Flash ActionScript 3.0 是一种面向对象的语言,包、类、包外类、命名空间、属性、方法、接口和继承示例FunctionTest.as package actionScript { ...

weixin_34384915的博客 118

duplicateMovieClip函数在Flash CS4 AS2.0中的应用详解

在深入了解和掌握ActionScript 2.0之前,了解其基础知识是至关重要的。ActionScript 2.0是Adobe公司为其Flash软件平台开发的面向对象编程语言。它允许开发者创建丰富的交互式内容,为网页、游戏、应用程序提供动态元素。本章将从ActionScript 2.0的基本语法和结构开始,逐步介绍其核心概念。是一个用于删除影片剪辑实例的ActionScript函数。它能够从显示列表中移除一个通过克隆出来的实例,从而减少运行时内存的占用,避免内存溢出等问题。在这个函数中,

weixin_36122351的博客 897

积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句

积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句作者:webabcd介绍Flash ActionScript 3.0中所有的数据类型都是对象,操作符和流程控制语句的语法与C#类似示例Basic.as// 包package {    // 导入包    import flash.display.Sprite;        // Basic

thinker28754的专栏 771

Streamlit(九) widgets-input

st.text_input / st.number_input / st.date_input / st.time_input 源码路径:${python}\Lib\site-packages\streamlit\elements\text_widgets.py(number_input.py, time_widgets.py) st.text_input st.text_input(label, value="", max_chars=None, key=None,\

heianduck的博客 3354

CAN-do-paser:Java开发的CAN总线数据帧解析库

CAN总线数据帧使用DBC文件信息解析为物理量,基于Java开发的数据解析工具。

佳瑞的博客 1133

Flash ActionScript 3.0 面向对象入门教程

Flash ActionScript 3.0 面向对象入门教程面向对象的难点部分就是理解变量作用域修饰符(modifier)其实也就是面向对象中我们已经熟悉的public、protected、private等等。本文还深入讨论了ActionScript3中新增的internal 等概念。下面我依次列出:一、关于package以及internalpackage,用“形而上学”的方式理解,就是

symware的专栏 993

timing window file中的S L T指什么意思

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 771
上一篇: 积少成多Flash ActionScript 3.0(1) - 基础之数据类型、操作符和流程控制语句
下一篇: 积少成多Flash ActionScript 3.0(3) - 基础之以文本形式、XML形式和JSON形式与ASP.NET通信
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值