ActionScript3学习笔记2-包

在 ActionScript 3.0 中,包是用命名空间实现的,但包和命名空间并不同义。在声明包时,
可以隐式创建一个特殊类型的命名空间并保证它在编译时是已知的。显式创建的命名空间在
编译时不必是已知的。
下面的示例使用 package 指令来创建一个包含单个类的简单包:
package samples
{
    public class SampleCode
   {
        public var sampleGreeting:String;
        public function sampleFunction()
        {
              trace(sampleGreeting + " from sampleFunction()");
        }
   }
}
在本例中,该类的名称是 SampleCode。由于该类位于 samples 包中,因此编译器在编译
时会自动将其类名称限定为完全限定名称:samples.SampleCode。编译器还限定任何属性
或方法的名称,以便 sampleGreeting 和 sampleFunction() 分别变成
samples.SampleCode.sampleGreeting 和 samples.SampleCode.sampleFunction()。
许多开发人员(尤其是那些具有 Java 编程背景的人)可能会选择只将类放在包的顶级。但是,
ActionScript 3.0 不但支持将类放在包的顶级,而且还支持将变量、函数甚至语句放在包的顶
级。此功能的一个高级用法是,在包的顶级定义一个命名空间,以便它对于该包中的所有类均
可用。但是,请注意,在包的顶级只允许使用两个访问说明符:public 和 internal。Java 允
许将嵌套类声明为私有,而 ActionScript 3.0 则不同,它既不支持嵌套类也不支持私有类。
但是,在其它许多方面,ActionScript 3.0 中的包与 Java 编程语言中的包非常相似。从上一
个示例可看出,完全限定的包引用点运算符 (.) 来表示,这与 Java 相同。可以用包将代码组
织成直观的分层结构,以供其他程序员使用。这样,您就可以将自己所创建的包与他人共享,
还可以在自己的代码中使用他人创建的包,从而推动了代码共享。
使用包还有助于确保所使用的标识符名称是唯一的,而且不与其它标识符名称冲突。事实
上,有些人认为这才是包的主要优点。例如,假设两个希望相互共享代码的程序员各创建了
一个名为 SampleCode 的类。如果没有包,这样就会造成名称冲突,唯一的解决方法就是重
命名其中的一个类。但是,使用包,就可以将其中的一个(最好是两个)类放在具有唯一名
称的包中,从而轻松地避免了名称冲突。

创建包
ActionScript 3.0 在包、类和源文件的组织方式上具有很大的灵活性。早期的 ActionScript
版本只允许每个源文件有一个类,而且要求源文件的名称与类名称匹配。 ActionScript 3.0
允许在一个源文件中包括多个类,但是,每个文件中只有一个类可供该文件外部的代码使
用。换言之,每个文件中只有一个类可以在包声明中进行声明。您必须在包定义的外部声明
其它任何类,以使这些类对于该源文件外部的代码不可见。在包定义内部声明的类的名称必
须与源文件的名称匹配。
ActionScript 3.0 在包的声明方式上也具有更大的灵活性。在早期的 ActionScript 版本中,
包只是表示可用来存放源文件的目录,您不必用 package 语句来声明包,而是在类声明中将
包名称包括在完全限定的类名称中。在 ActionScript 3.0 中,尽管包仍表示目录,但是它现
在不只包含类。在 ActionScript 3.0 中,使用 package 语句来声明包,这意味着您还可以
在包的顶级声明变量、函数和命名空间,甚至还可以在包的顶级包括可执行语句。如果在包
的顶级声明变量、函数或命名空间,则在顶级只能使用 public 和 internal 属性,并且每
个文件中只能有一个包级声明使用 public 属性 (无论该声明是类声明、变量声明、函数声
明还是命名空间声明)。
包的作用是组织代码并防止名称冲突。您不应将包的概念与类继承这一不相关的概念混淆。
位于同一个包中的两个类具有共同的命名空间,但是它们在其它任何方面都不必相关。同
样,在语义方面,嵌套包可以与其父包无关。

导入包
如果您希望使用位于某个包内部的特定类,则必须导入该包或该类。这与 ActionScript 2.0
不同,在 ActionScript 2.0 中,类的导入是可选的。
以本章前面的 SampleCode 类示例为例。如果该类位于名为 samples 的包中,那么,在使
用 SampleCode 类之前,您必须使用下列导入语句之一:
import samples.*;
或者
import samples.SampleCode;
通常,import 语句越具体越好。如果您只打算使用 samples 包中的 SampleCode 类,则应只导
入 SampleCode 类,而不应导入该类所属的整个包。导入整个包可能会导致意外的名称冲突。
还必须将定义包或类的源代码放在类路径 内部。类路径是用户定义的本地目录路径列表,它
决定了编译器将在何处搜索导入的包和类。类路径有时称为 “生成路径”或“源路径”。
在正确地导入类或包之后,可以使用类的完全限定名称 (samples.SampleCode),也可以只
使用类名称本身 (SampleCode)。
当同名的类、方法或属性会导致代码不明确时,完全限定的名称非常有用,但是,如果将它
用于所有的标识符,则会使代码变得难以管理。例如,在实例化 SampleCode 类的实例时,
使用完全限定的名称会导致代码冗长:
var mySample:samples.SampleCode = new samples.SampleCode();

转载于:https://www.cnblogs.com/beilon/archive/2008/05/03/1179982.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grep v grep_使用grep4j轻松测试分布式组件上的SLA

grep v grep因此,您的分布式体系结构如下图所示,您刚刚从企业那里收到了一项要求,以确保生产者发送并随后传输到下游系统(消费者)的消息的SLA必须快且永远不会慢于此。 400毫秒。 要求说: 从生产者发送到…

得到指定进程所有窗口。显示 影藏 置顶。

这里使用一个外挂程序测试,因为外挂程序没有做功能限制的处理 只是做了 窗口影藏。 全局变量 HWND hwnd[100]{0};int number0;DWORD Tpid0; 局部变量 char username[1028]; 先找到进程ID 1 HWND SelectPor() 2 { 3 bool isYesfalse; 4 string porcessName&q…

jquery部分方法

offset([coordinates]) 概述&#xff1a;获取匹配元素在当前视口的相对偏移。返回的对象包含两个整型属性&#xff1a;top 和 left。此方法只对可见元素有效。 比如&#xff0c;获取第二段的偏移&#xff1a; HTML 代码: <p>Hello</p><p>2nd Paragraph</p…

JUnit 5扩展模型的生命周期

JUnit5最终版本即将来临 &#xff08;当前是M4&#xff09;&#xff0c;我已经开始研究如何编写扩展。 在JUnit5中 &#xff0c;您没有使用Runners &#xff0c; Rules &#xff0c; ClassRules等&#xff0c;而是只有一个Extension API来实现自己的扩展。 JUnit5提供了多个接…

让IE6、IE7、IE8支持CSS3

我们都知道IE6&#xff0c;7并不支持CSS3的属性&#xff0c;IE8也不能很好的支持CSS3。但是有一个小脚本能够做到&#xff0c;它可以让IE支持 CSS3&#xff0c;包括&#xff1a;border-radius (rounded), box-shadow ( shadow), text-shadow等…… 如果你需要一个支持CSS3 的bo…

NOIP模拟测试16「Drink·blue·weed」

话说这次考试 Drink 非常棒的一道卡常练习题&#xff0c;适合练习卡常 真的很棒 前置卡常知识 1.char要比int快 char是最快的 输出putchar&#xff0c;输入getchar 在这个题快了7000豪 2.read 快读非常棒&#xff0c;让你变得更快&#xff0c;fread更棒&#xff0c;fread会爆炸…

Spring Boot Web Slice测试–示例

春天开机推出 测试切片而回&#xff0c;它已经采取了一些时间来解决它我的头&#xff0c;并探讨一些细微的差别。 背景 使用此功能的主要原因是减少样板。 考虑一个看起来像这样的控制器&#xff0c;仅适用于使用Kotlin编写的各种控制器。 RestController RequestMapping(&qu…

DECODE函数

DECODE函数相当于一条件语句(IF),它将输入数值与函数中的参数列表相比较&#xff0c;根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然&#xff0c;如果未能与任何一个实参序偶匹配成功&#xff0c;则函数也有默认的返回值。区别于…

多线程练习

写两个线程&#xff0c;其中一个线程打印1-52&#xff0c;另一个线程打印A-Z&#xff0c;打印顺序应该是12A34B56C......5152Z。 该习题需要用到多线程通信的知识。 思路分析&#xff1a; 把打印数字的线程称为线程N&#xff0c;打印字母的线程称为线程L. 1.线程N完成打印后&am…

java jee curd_Java / JEE中的有效日志记录–映射的诊断上下文

java jee curd这一切始于当我和一位同事坐在一起解决一些应用程序问题时&#xff0c;当我注意到一些有趣的事情时。 他正在合并代码&#xff0c;我的眼睛吸引了此类“ org.apache.log4j.MDC”的注意。 这导致了以下发现&#xff1a; 什么是MDC&#xff1f; MDC代表“ 映射诊断…

Learning Cocos2d-x for WP8(7)——让Sprite动起来

C#(wp7)兄弟篇Learning Cocos2d-x for XNA&#xff08;7&#xff09;——让Sprite动起来 本讲将详细介绍Cocos2d-x游戏中动画Animate的创建方式&#xff0c;通过逐帧数组播放动画和创建动画集合播放动画&#xff0c;比较两者的异同&#xff0c;让Sprite动起来。 工程文件&#…

GWT的渐进式Web应用程序配方

渐进或不渐进… 如果您一段时间以来一直在设计或开发Web应用程序&#xff0c;那么您可能会遇到无数次“渐进式Web应用程序”一词&#xff0c;并且在未来几年内可能会这样做。 您可能想知道PWA的确切定义是什么&#xff0c;如何识别PWA&#xff0c;以及如何构建PWA。 根据字典&a…

问题 1047: [编程入门]报数问题

题目描述有n人围成一圈&#xff0c;顺序排号。从第1个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来的第几号的那位。输入初始人数n输出最后一人的初始编号样例输入3 样例输出2分析&#xff1a;因为每次报3都会…

NOIP模拟测试17「入阵曲·将军令·星空」

入阵曲 题解 应用了一种美妙移项思想&#xff0c; 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k0$可以转化为 $sum[r]\% ksum[l-1]\%k$开个桶维护一下即可 然后拓展到二维上 把两行之间所有行拍扁看作一维上的区间&#xff0c; 我们枚举两行和行之间所有列开个桶…

理解sizeof

1、sizeof返回的是字节个数&#xff0c;内存编址的最小单元是字节。因此&#xff0c;空对象&#xff0c;bool值占用的内存也是一个字节。 2、可以对哪些东西求sizeof ? a、对象和类型。如int a; sizeof(a)&#xff0c; sizeof(int)&#xff0c;二者是等价的。同一类型的对象&a…

java 分析java死锁_Java死锁示例–如何分析死锁情况

java 分析java死锁死锁是两个线程或多个线程永远被阻塞的编程情况&#xff0c;这种情况发生在至少两个线程和两个或更多资源的情况下。 在这里&#xff0c;我编写了一个简单的程序&#xff0c;它将导致死锁情况&#xff0c;然后我们将看到如何对其进行分析。 Java死锁示例 pac…

insert 多条数据 并且具有唯一标识符

DECLARE COUNT INT DECLARE NAME NVARCHAR(10) SET COUNT0 WHILE COUNT<1000 BEGIN SET NAMESYSTEMCAST(COUNT AS NVARCHAR(10)) INSERT INTO dbo.users VALUES (NEWID(),NAME,123123COUNT,DATEADD(DAY,COUNT,2012-12-12),GETDATE()) SET COUNT COUNT 1 END 转载于:http…

Java Message System简介

Java消息系统 在本文中&#xff0c;我将讨论面向消息的中间件 &#xff08;MOM&#xff09;以及JMS如何在Enterprise Java中实现它。 另外&#xff0c;我将讨论适合JMS使用的典型用例以及用于讨论消息传递解决方案的不同术语&#xff0c;例如Publisher / Sender &#xff0c; D…

FLV协议5分钟入门浅析

FLV协议简介 FLV&#xff08;Flash Video&#xff09;是一种流媒体格式&#xff0c;因其体积小、协议相对简单&#xff0c;很快便流行开来&#xff0c;并得到广泛的支持。 常见的HTTP-FLV直播协议&#xff0c;就是使用HTTP流式传输通过FLV封装的音视频数据。对想要了解HTTP-FLV…

问题 1049: [编程入门]结构体之时间设计

题目描述定义一个结构体变量&#xff08;包括年、月、日&#xff09;。计算该日在本年中是第几天&#xff0c;注意闰年问题。输入年月日输出当年第几天样例输入2000 12 31 样例输出366 import java.util.Scanner; public class Main{ public static void main(String args[]){ …