×

关注微信公众号

免备案网站空间双线空间域名查询咔咔摄影亿万先生 cs3视频教程
查看: 10038|回复: 21
打印 上一主题 下一主题

学习AS3.0 菜鸟起飞吧 八— (含有多个类的AS3类文件)[原创][本文已收录教程库]

[复制链接]
该用户从未签到
跳转到指定楼层
1
发表于 2009-4-23 21:11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xyl7422 于 2009-8-25 17:11 编辑

AS3.0  含有多个类的AS3类文件     

       标准的AS3类文件是以".as"为结尾的纯文本文件。一个类文件可以包含一个或多个类定义,甚至可

以直接写入一次性执行的语句。AS3中,在package花括号外,可以定义一个或多个Class,不可与文件

同名。这些花括号外的类,称为当前类文件的包外类。只有当前类文件中的成员可以访问。

    包外类的产生,每个.as文件被编译器看成一个编译单元,每个编译单元只能有一个对外可见的Class,

那么package{}之外的Class就对外不可见了。
   
    为什么需要包外类?

第一,我们可以将包外类看成当前文件的“私有类”,。比如,可以将当前类中的一些复杂逻辑单独抽出

来做成类,如果这些抽出来的逻辑只和这个当前类相关,不需要外部介入,那么就可将这些类定义成包

外类。

第二,由于包外类对外部完全不可见,在AS3中有它特有的用处,比如,AS3不支持private和protected的

构造函数,要想真正实现单例模式(Singleton),就可以用上包外类了。

基本结构如下:
  • 代码:

  • package {
  •      class MyClass {
  •          function MyClass() {
  •              var helper:MyHelper = new MyHelper();
  •          }
  •      }
  • }
  • class MyHelper {
  •      function MyHelper() {
  •          var helper:HelpersHelper = new HelpersHelper();
  •      }
  • }
  • class HelpersHelper {
  •      function HelpersHelper () {
  •      }
  • }
  • 复制代码
    注意:在包块中最多只能定义一个类。在同一个文件中的辅助类不是包块的一部分,并且只能在此文件

    中可见和被使用。

    下面我们将我们将我们的类改写成上述的packge类形式。我们将下面的代码都写在一个

    DocumentClass.as的文件中,然后在fla文件中的属性面板中的Document Class输入框中输入

    DocumentClass类名。
  • 代码:

  • package {
  •         import flash.display.MovieClip;
  •         import flash.display.Sprite;
  •         import flash.events.MouseEvent;
  •         // Document Class
  •         public class DocumentClass extends MovieClip {
  •                 private var _circle:Drag_circle;
  •                 private const maxBalls:int=100;
  •                 public function DocumentClass() {
  •                         var i:int;
  •                         for (i=0; i <= maxBalls; i++) {
  •                                 _circle=new Drag_circle  ;
  •                                 _circle.scaleY=_circle.scaleX=Math.random();
  •                                 _circle.x=Math.round(Math.random() * stage.stageWidth -

  • _circle.width);
  •                                 _circle.y=Math.round(Math.random() * stage.stageHeight -

  • _circle.height);
  •                                 addChild(_circle);
  •                         }
  •                 }
  •         }
  • }
  • import flash.display.Sprite;
  • import flash.events.MouseEvent;
  • class Drag_circle extends Sprite {
  •         private var _circle:Sprite;
  •         public function Drag_circle() {
  •                 _circle=new Sprite  ;
  •                 _circle.graphics.beginFill(0xff0000);
  •                 _circle.graphics.drawCircle(-5,-5,10);
  •                 _circle.graphics.endFill();
  •                 addChild(_circle);
  •                 this.buttonMode=true;
  •                 _circle.addEventListener(MouseEvent.CLICK,onClick);
  •                 _circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
  •                 _circle.addEventListener(MouseEvent.MOUSE_UP,onUp);
  •         }
  •         private function onClick(event:MouseEvent):void {
  •                 trace("circle clicked");
  •         }
  •         private function onDown(event:MouseEvent):void {
  •                 _circle.startDrag();
  •         }
  •         private function onUp(event:MouseEvent):void {
  •                 _circle.stopDrag();
  •         }
  • }
  • 复制代码
    可以测试你的影片了。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?[免费注册]
    x

    评分

    参与人数 3 +15 +1 +4 收起 理由
    祁连山 + 1 支持教程,辛苦啦.
    xyl7422 + 7 + 2 感谢发布原创教程,辛苦了:)
    zctmh0336 + 8 + 2 我很赞同
    查看全部评分
    该用户从未签到
    2
    发表于 2009-4-23 23:53:48 | 只看该作者
    AS3多个类文件是如何组织与相互通信的?我一直很困惑!
    谢谢教程!!
    回复 支持 反对 使用道具 举报
    该用户从未签到
    3
    发表于 2012-2-10 11:24:23 | 只看该作者
    十分感谢Cao4811老师,这样一个知识点加一个小实例的讲解对们来说是太好了。原来是看书,看得头昏眼花也不知所以然。老师讲的清晰易懂。如果老师有时间的话,盼望老师能多写一些这样的教材。
    回复 支持 反对 使用道具 举报
    该用户从未签到
    4
    发表于 2012-3-8 20:09:56 | 只看该作者
    其实,这里可以吧两个类分别写出来,并保存在同一个文件夹下,对吗,楼主?谢谢分享!
    回复 支持 反对 使用道具 举报
    该用户从未签到
    5
    发表于 2012-7-2 12:09:23 | 只看该作者
    又是包不能嵌套!为什么?
    请老师指教。
    回复 支持 反对 使用道具 举报
    该用户从未签到
    6
    发表于 2012-7-2 12:22:13 | 只看该作者
    哈,是我自己弄错了。谢谢老师。
    回复 支持 反对 使用道具 举报
    该用户从未签到
    7
    发表于 2014-11-25 19:47:24 | 只看该作者
    学类真的很累。
    回复 支持 反对 使用道具 举报
    该用户从未签到
    8
    发表于 2018-1-30 15:00:06 | 只看该作者
    难得一见的好帖
    回复 支持 反对 使用道具 举报
    该用户从未签到
    9
    发表于 2018-1-30 14:56:24 | 只看该作者
    不错不错
    回复 支持 反对 使用道具 举报
    该用户从未签到
    10
    发表于 2018-1-30 14:40:03 | 只看该作者
    LZ真是人才
    回复 支持 反对 使用道具 举报
    该用户从未签到
    11
    发表于 2018-1-30 15:01:51 | 只看该作者
    好帖子要收藏
    回复 支持 反对 使用道具 举报
    该用户从未签到
    12
    发表于 2018-1-30 14:22:28 | 只看该作者
    教程网我挺你
    回复 支持 反对 使用道具 举报
    该用户从未签到
    13
    发表于 2018-2-3 17:54:33 | 只看该作者
    顶顶多好
    回复 支持 反对 使用道具 举报
    该用户从未签到
    14
    发表于 2018-2-3 17:15:25 | 只看该作者
    难得一见的好帖
    回复 支持 反对 使用道具 举报
    该用户从未签到
    15
    发表于 2018-2-3 17:33:57 | 只看该作者
    很好哦。。。
    回复 支持 反对 使用道具 举报
    您需要登录后才可以回帖 登录 | [免费注册]
    本版积分规则
    mr007