AS3 基础知识

原创 2012年03月30日 17:42:44

利用FlashDevelop 4.0.1 RTM版本在安装的时候就直接下载相关的flex sdk, flashPlayerDebugger, flashAIRSDK,简单方便。

1:addChild相当于2.0里面把库中的元件载入到场景中,用了addChild后我们画的那个圆就显示在场景中了,与之对应的是removeChild,是从场景中删除
2:库中的元件与类的链接?
   我猜,元件就好比是类的实例,给元件取名,是为了方便我们程序来引用。
3:文档类?
   文档类就相当于第一帧的位置,这样我们就不用在FLA文件里写代码了,所有代码都写在AS文件里,达到了界面和代码的分离。
4:利用反射方式来加载元件,主要是利用 getDefinitionByName(元件名称:string)
    for(var i=1;i<=2;i++)
    {
 var ClassReference:Class = getDefinitionByName("Mc"+i) as Class;
 var instance:MovieClip = new ClassReference();
 addChild(instance);
    }
5: 事件监听方式:在as3.0中,一律用addEventListener
   _btn.addEventListener(MouseEvent.CLICK,btnClickHandler);
   function btnClickHandler(event:MouseEvent): void
   {
 //点击后代码
   }
   经常有些侦听我们用过一次后可以就不会再用了,那么为了节省资源,我们要将这些侦听删除掉,要侦除侦听这们用这样的方法:
   _btn.removeEventListener(MouseEvent.CLICK,insClickHandler);//删除侦听

6:消息机制(类与类之前也是可以侦听的),dispatchEvent就是用来发送消息的。如果我们写的这个类不继承Sprite是不能用的,凡是从EventDispatcher继承下来的类就可以使用这个方法.
 package net.smilecn
 {
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.events.MouseEvent;
  public class MyClass extends Sprite
  {
   public function MyClass()
   {
    addEventListener(MouseEvent.CLICK,clickHnadler);
   }
   private function clickHnadler(event:MouseEvent):void
   {
    dispatchEvent(new Event(Event.CLOSE)); //发送Event.CLOSE消息
   }
  }
 }
 将库中的一个MC链接到MyClass这个类上(方法参数前面章节)再修改之前的文档类:
 package net.smilecn
 {
  import flash.display.Sprite;
  import flash.events.Event;
  import net.smilecn.MyClass;
  public class MainForm extends Sprite
  {
   private var myClass:MyClass;
   public function MainForm()
   {
    myClass = new MyClass();
    addChild(myClass);
    myClass.addEventListener(Event.CLOSE,closeHandler); //侦听Event.CLOSE消息,一旦接受,closeHandler触发
   }
   private function closeHandler(event:Event):void
   {
    trace("你收到了myClass的消息");
   }
  }
 }
  
 FLASH的EVENT类里面自带的CLOSE事件,其实就是个字符串,我们也可以自己定义字符串,比如这样:
 dispatchEvent(new Event(“message”));
 myClass.addEventListener("message",closeHandler);

7:事件传递参数
 在as3.0版本中,发消息的时候传参数,要去写一个类去继承Event这个类,
 package net.smilecn
 {
  import flash.events.Event;
  public class MyEvent extends Event
  {
   private var _object:Object;
   public function MyEvent(type:String,object:Object):void
   {
    super(type);
    _object=object;
   }
   
   public function get param():Object
   {
    return _object;
   }
  }
 }
 类继承了Event这个类,在构造方法里有一个super(type),super的意思是执行父类的构造方法,也就是执行Event的构造,
 type是消息的类型,就是消息的名字,一个字符串,object就是我们要传的参数要用到的一个变量,是一个对象,我们知道
 对象是很方便的,可以存储1到多个参数,下面是一个GET方法,通过param这个名字去取_object这个对像的值。

 怎么用这个MyEvent类?
 package net.smilecn
 {
  import flash.display.Sprite;
  import flash.events.MouseEvent;
  import net.smilecn.MyEvent;
  public class MyClass extends Sprite
  {
   public function MyClass()
   {
    addEventListener(MouseEvent.CLICK,clickHnadler);
   }
   
   private function clickHnadler(event:MouseEvent):void
   {
    //{a:100,b:200},这个参数就是我们传进去的对象,这个对象有两个属性值,
    //一个叫a,值为100,一个叫b,值为200;
    dispatchEvent(new MyEvent("myClassMessage",{a:100,b:200}));
   }
  }
 }
8:MVC模式
 MVC模式是‖Model-View-Controller‖的缩写,中文翻译为‖模式-视图-控制器‖。MVC应用程序总是由这三个部分组成。
 Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有
 依赖的View都会自动更新。 MVC模式能使界面(Viwe)和数据(Model)能有效的分开,由控制器(Controller)去控制。

 Model按照我的理解是数据,就是所有的共用数据都是存储在Model里面的

9:Loader加载类:
 Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件
 //Main.fla文件的文档类,导出 Main.swf 文件
 package net.smilecn.studyLoader
 {
  import flash.display.Sprite;
  public class MainForm extends Sprite
  {
   public function MainForm():void
   {
   }
   public function getMainParam(param:String)
   {
    trace("得到从外层来的参数:",param);
   }
  }
 }

 //sub.fla文件的文档类,载入Main.fla的导出文件
 import flash.display.Loader;
 import flash.net.URLRequest;
 import flash.events.Event;
 import flash.events.ProgressEvent;

 private var subLoader:Loader;

 subLoader = new Loader();
 subLoader.load(new URLRequest("Main.swf"));
 subLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
 subLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

 private function completeHandler(event:Event):void
 {
  trace("文件已经加载完成");
  addChild(subLoader);
  event.currentTarget.content.getMainParam("你好"); //event.currentTarget.content实际上就是加载进来的那个SWF(Main.swf)
 }

10:URLLoader与后台交互[举例:可以实现配置文件的读取]
 package net.smilecn.studyURLLoader
 {
  import flash.display.Sprite;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.events.Event;
  public class MainForm extends Sprite
  {
   public function MainForm():void
   {
    var loader:URLLoader = new URLLoader();
    loader.load(new URLRequest("cfg.txt")); //3: cfg.xml
    loader.addEventListener(Event.COMPLETE,loadCompleteHandler);
   }
   
   private function loadCompleteHandler(event:Event):void
   {
    //1:原样读取文本信息
    trace(event.currentTarget.data); //读取cfg.txt文件的内容
    //2:以URL格式读取参数信息。cfg.txt信息: msg=hello!&ip=localhost
    var vars:URLVariables = new URLVariables(event.currentTarget.data);
    trace(vars.msg);
    trace(vars.ip);
    //3: XML方式读取:cfg.xml信息:<?xml version="1.0" encoding="UTF-8"?> <root> <msg>hello!</msg> <ip>localhost</ip> </root>
    var vars:XML = new XML(event.currentTarget.data);
    trace(vars.msg);
    trace(vars.ip);

   }
  }
 }

11: 共享资源库
 前面我们介绍了载入文件,我们经常要加载的可能就是SWF文件了,我们在实际使用中还会把SWF文件作为共享资源库,就是把一些
 元件放到一个SWF文件里,这样只要加载它的文件都可以使用它的库里面的元件,这样做的好处在于我们可以使主文件更小一点,
 当多个文件使用相同的元件时,就可以共用了。

 1:先建一个FLA文件,在库里面建几个元件,这里我们建一个MC,一个Button,然后导出,MC我们起名叫MyMc,Button我们起名叫MyBtn,
 FLA文件叫library,发布生成一个library.swf文件。
 
 2:再来建立主文件,建一个FLA文件,起名叫:loadLibrary,再来建立一个文档类MainForm.as:

 package net.smilecn.loadLibrary
 {
  import flash.display.Sprite;
  import flash.display.MovieClip;
  import flash.display.SimpleButton;
  import flash.display.Loader;
  import flash.net.URLRequest;
  import flash.events.Event;
  
  public class MainForm extends Sprite
  {
   private var loader:Loader;
   private var myMc:MovieClip;
   private var myBtn:SimpleButton;
   public function MainForm()
   {
    loader = new Loader();
    loader.load(new URLRequest("library.swf"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
    
    public function completeHandler(event:Event)
    {
     myMc = getLibMc("MyMc");
     addChild(myMc);
     myBtn = getLibBtn("MyBtn");
     addChild(myBtn);
     myBtn.x=100;
     myBtn.y=100;
    }
    
    public function getLibMc(name:String):MovieClip
    {
     var classReference = (loader.contentLoaderInfo.applicationDomain.getDefinition(name) as Class);
     return ((new (classReference) as MovieClip));
    }
    
    public function getLibBtn(name:String):SimpleButton
    {
     var classReference = (loader.contentLoaderInfo.applicationDomain.getDefinition(name) as Class);
     return ((new (classReference) as SimpleButton));
    }
   }
  }
 }

 

相关文章推荐

AS3基础知识

  • 2011年09月17日 14:54
  • 209KB
  • 下载

AS3 Socket基础知识很全面

在讲AS3 Socket之前我们先来搞清几个概念,这有助于我们更加了解网络通信! 1、网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程P...
  • ryan838
  • ryan838
  • 2013年02月01日 13:10
  • 317

AS3 Socket 基础知识(很全面)

转自:http://blog.csdn.net/liminxin272/article/details/7021127 在讲AS3 Socket之前我们先来搞清几个概念,这有助于我们更加了解网络通信...

AS3 Flex基础知识100条

【改变输出swf的尺度,背景颜色或帧频】 在”Navigator”窗框里右键你的项目>选中”Properties”>选中”ActionScript Compiler”>在”Additional c...
  • sjz168
  • sjz168
  • 2011年07月29日 16:17
  • 1014

AS3.0模块基础知识

  • 2015年05月30日 14:50
  • 44KB
  • 下载

as3.0基础知识

  • 2013年04月01日 13:11
  • 1.48MB
  • 下载

[Android测试] AS+Appium+Java+Win自动化测试之三: 基础知识和Appium界面

一、 Selenium 是什么?Selenium是一套完整的web自动化测试工具集,它包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的...

安卓开发基础知识介绍--------AS项目结构解析

我们选择Project视图,就会有以下的项目文档结构: 上面笔者标注的数字是接下来要讲解的内容。 我们先来看1: 我们创建Application的时候,要求我们输入项目名称,1就是我们创建的项...

Oracle基础知识(二十一) - with as 的使用

原文地址:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.html with as语法 –针对一个别名 with t...

20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制。  private: 私有的,只能在当前类的内部访问。 protected: 受保护的,只能在当前类的内部以及该类的子类中访问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AS3 基础知识
举报原因:
原因补充:

(最多只允许输入30个字)