ActionScript.3.0笔记.doc_第1页
ActionScript.3.0笔记.doc_第2页
ActionScript.3.0笔记.doc_第3页
ActionScript.3.0笔记.doc_第4页
ActionScript.3.0笔记.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章2.1.2常量:只能在类的开始部分或构造函数中定义;const BOILING_POINT:int=100;2.2反访问控制protected:只有相同类及其子类可以访问internal:相同包中的代码可以访问。是AS3中默认的访问控制2.4.2使用类型通配符(*),可表示多种类型的数据;2.7.2 for each和for in的区别:forin:对对象中的属性的名称进行迭代 for(var element:string in targetObject)for eachin:对对象中的属性直接进行迭代。for each(var element:Object in targetObject)第三章 类3.4.4包中允许的代码每个文件只能向外界公开一个项目,可以是类,变量,函数或名称空间。文件名称必须与外部可见的项目名称相同(就是把文件名起做 常量名.as;函数名.as)3.4.5使用包中的代码,import导入某个类并不会自动的将该类包含在编译后的swf文件,还需要在执行代码中实际使用这个类。3.6.4名称空间:把不相干的方法,变量组和在一起。1.定义名称空间:该文件名是com/wiley/as3bible/ custom_namespace.aspackage com.wiley.as3biblePublic namespace custom_namespace=”/custom_namespace”;2.往名称空间里添加内容:要在使用名称空间的类中先import名称空间(在同一个包中就不用了) 在定义要添加到名称空间的函数或是变量的时候,把原先是private public的位置换成名称空间的名字。 名称空间就相当于public ,private等,只不过是用户自己定义的,规则更灵活。3.使用名称空间:(1)在类里先导入名称空间,再写上use namespace custom_namespace;就可以任意使用名称空间的内容。(2)在类里先导入名称空间,不用写use namespace custom_namespace,而用class1. custom_namespace:sayHi();就可以了。3.9覆盖:在方法访问修饰符前加上override注:不能覆盖属性;AS3里只有覆盖,没有 。3.10.3 枚举定义一个final的class,里面的属性都是public,static,const的。3.12.2显示类型转换 (1)var mySquare:Square=Square(someShape)错误时会抛异常;(2)var mySquare:Square=someSquare as Square;失败时不会抛出错误,但是转换值会成为null。3.12.3判断类型:someShape is Circle ;Cirle是他的父类,结果也是true;3.13动态类:可以在运行时修改,添加,删除他的属性和方法。关键字dynamic。Object就是动态类。使用Object的实例代替自定义的动态类的实例比较令人满意。注意:1、指定类的实例可具有在运行时,添加动态属性、方法等。2、dynamic 属性不是由子类继承。如果扩展了动态类,则只有声明该子类具有 dynamic 属性时,子类才是动态的。3、如果类是密封的(非动态),尝试在类实例上获得属性或设置属性将导致错误。第四章 函数1.。其余参数()表示数组中一组数量可变的自变量,后面应该紧跟数组的名字function(numbers):Number。第八章 数组8.5.2使用forEach(someFunction)方法:用someFunction操作数组里的每个元素。someFunction的模板function someFunction(element:*,index:int,array:Array):void;8.7.2数组排序:sort(sortFunction)8.8.1使用every(),some(),filter()对数组中的所有元素进行操作,他们所接受的函数和foreach()大体相同,只是要求返回boolean值Every():处理函数返回false时停止;若没有停止值,则every()返回truesome():返回true时停止; 若没有停止值,则every()返回false;filter():并不找停止值,而是处理整个数组并返回一个新数组,包含所有为true的元素;8.8.2 map():对数组每个元素应用同一个函数,并且把每个返回值放到一个新的数组里返回;8.9.1关联数组:建议使用字典或Object实例。8.9.2字典:Dictionary是array的一个子类,使用对象而不是下标来查找元素。深克隆ArrayVar foo:Array=/需要复制的数组Var fooBA:ByteArray=new ByteArray();fooBA.writeObject(foo);fooBA.position=0;/把文件指针的当前位置归零var bar:Array= fooBA.readobject() as Array;第九章 9.2将对象作为关联数组使用9.2.1比较对象,数组,字典Array:最好只是用数字通过下标存储值(这样array的很多方法都可以使用,不至于造成混淆)。Object:是存储键值对的理想方式。将字符串作为键值使用;Dictionary:可以使用对象本身作为键。9.2.2测试存在:In可以检查实例中是否存在某个属性,方法或值。只能检查共有方法和属性。9.2.3删除属性:delete如果对值使用delete,则键和值都将从关联数组中删除。Delete还可以删除动态类实例动态添加的属性和方法。delete person“name”;第十章 操作xml10.1因为引入E4X,AS3可以用XLM字面值将XLM数据直接写入代码,该字面值将被自动解析。10.1.2操作XML字面值 var employeeList:XML=.注:要想在XML数据的字面值中添加代码,则需要用把代码部分括起来。例如:Var JackAge:int=100;var employeeList:XML=Trace(employeeList.toXMLString();输出地是100;10.2.访问节点的属性用;10.2.4使用子孙节点存取程序用多个点来访问:trace(moveList.title);注:但是这会返回所有匹配的结果,即使树的不同层次上的标记拥有相同的名称也是如此。10.2.7筛选XML中的项目Var clsaaic:XML=moveList.move.(year1990).title;10.3.1结合XML节点1.使用+和+=2.使用appendChild()10.3.2删除XML节点或属性用delete运算符。10.3.3复制XML对象用copy()方法;1 添加XML元素:用“.”var example:XML = ;example.newElement = ;var example:XML = ;example.emptyElement = ;/* 显示:*/用( 和)var example:XML = ;var id:int = 10;example user + id = ;/* 显示:*/:两种写法基本上通用,不过还是有区别的,如下面的例子编译器就会报错:example.some-element = ; /编译错误这种情况下只能用来设置属性名了:example some-element = ;还有个问题需要注意,这种方法增加的节点都是添加在XML树的尾部,要解决这个问题,可用insertChildBefore( )和insertChildAfter( ) 方法来控制插入的位置。insertChildBefore( ) 方法在当前元素位置前插入新元素,而insertChildAfter( ) 在当前元素的后面插入,看下面的例子:var example:XML = ;example.two = ;example = example.insertChildBefore( example.two, );example = example.insertChildAfter( example.two, );要注意的是这两个方法(insertChildBefore( )和insertChildAfter( ))不是修改原来的XML,而是返回新的XML 实例。2.添加文本节点:appendChild( ), prependChild( )(在当前节点前插入节点), insertChildBefore( ), orinsertChildAfter( )。/ 添加名为two 元素以及值为2的文本子节点example.appendChild( 2 );/ 在当前节点前面插入one 元素example.prependChild( number 1 );/ 在当前节点后面插入example.insertChildAfter( example.one0, 1.5 );/在指定节点前插入example.insertChildBefore( example.two0, 1.75 );3. 在XML元素中添加属性:elementNode.attributeName = value;当使用这种语法时,属性名必须是合法的变量名称,也就是说必须是数字,字幕和下划线组成且不能以数字开头。但是有时如果属性名包含一些特殊符号,则不能用操作符,必须加上操作符,例如:example.someElement.bad-variable-name = yes;在里还可用表达式产生动态属性名,这是种很实用的技巧:example.someElement.color + num = red;4. 读取XML树中的元素使用elements( ) 方法返回XMLList 类型的所有元素,并用for each 循环遍历。elements( ) 方法只返回下一级的子元素节点,这里面不包括文本节点和下一级节点,要向访问整个XML结构,还需进行递归循环处理:function walk( node:XML ):void / Loop over all of the child elements of the nodefor each ( var element:XML in node.elements( ) ) / Output the label attributetrace( element.label );/ Recursively walk the child element to reach its childrenwalk( element );5. 通过名字查找元素节点“.” 加上属性名语法来查找元素var fruit:XML = Apple;/ 显示: Appletrace( );使用双点操作符(.)来跳过一级访问,是指把两级内的东西都检索出来,例如:var cart:XML = crayonspencilsblue penblack pen;trace(cart.item);显示crayonspencilsblue penblack pen当有多个元素节点具有相同名称时,可通过索引值访问,这有点像数组。也可用操作符来访问:var nodeName:String = color;var fruit:XML = red;/ Displays: redtrace( fruitnodeName );需要注意的是操作符不能和双点操作符一起用。6. 读取文本节点: var book:XML = ActionScript 3.0 Cookbook;/ 用E4X 语法访问title元素var title:String = book.title.toString( ); 元素的值如果是TRue则可能得不到正确的值,最好是进行一下大小写转换,如:var bool:Boolean = example.bool.toLowerCase( ) = true;,这个XML的根节点即包含元素节点也包含文本节点,如果想显示的文本节点内容var fruit:XML = AppleAn apple a day.;这种情况下,用text( ) 方法可正确返回文本节点内容了:var fruit:XML = AppleAn apple a day.;for each ( var textNode:XML in fruit.text( ) ) / 显示: An apple a day.trace( textNode );7. 读取元素的属性通过attributes( ) 方法返回当前元素节点所有属性的XMLList 对象,XMLList对象是可索引的,很像Array对象var attributes:XMLList = fruit.attributes( );上面的例子中只显示出属性值,用name( ) 方法可显示出属性名, fruit.attributes( )1.name( ) ;,可使用attribute( ) 方法并传入属性名作为参数,得到属性值:var fruit:XML = ;/ 显示: redtrace( fruit.attribute(color) );如果属性名含有特殊字符,可用进行访问:var example:XML = ;var num:Number = 12;/ 显示: yestrace( example.bad-variable-name );/ 显示: bluetrace( example.color + num ); 8. 删除元素,文本节点和属性delete example.fruit.color;9.载入XMLprivate var loader:URLLoader ;public function TestLoadXml() loader = new URLLoader();loader.addEventListener(Event.COMPLETE, onComplete);loader.load(new URLRequest(cfg.xml);private function onComplete(e:Event):void loader.removeEventListener(Event.COMPLETE,onComplete);var xml:XML = new XML(URLLoader(e.target).data);trace(0);10.搜索XMLvar foodgroup:XML = AppleOrangePearWatermelon3TomatoPotatoBroccoli2;想筛选出元素所有color属性为red的节点集合foodgroup.fruit.( color = red )选出所有color属性为red的元素节点foodgroup.*.( hasOwnProperty( color ) & color = redhasOwnProperty 检查元素是否有color属性,如果有在检查其值是否为red.11. 在XML中使用HTML和特殊字符使用CDATA标签!CDATAa !CDATADarron当XML 被解析时,CDATA 标签中的内容原封不动。Flash_as3_programming.pdf读书笔记。1.不同的displayobject可以添加的事件类型也不一样,比如Shape不能添加鼠标事件。详情可查AS3.0语言和组件参考手册。2. container.removeChild(ball_C);removeChild() 和 removeChildAt() 方法并不完全删除显示对象实例。这两种方法只是从容器的子级列表中删除显示对象实例。该实例仍可由另一个变量引用。(请使用 delete 运算符完全删除对象。3.想要显示某对象,必须用addChild(myCircle)把该对象加到舞台上4. 如果将在第一个显示对象容器中包含的某一显示对象添加到另一个显示对象容器中,则会从第一个显示对象容器的子级列表中删除该显示对象。;5.容器:Loader, Sprite, Stage, TextLine;6. 要重新将对象定位到显示列表的顶部,只需重新将其添加到列表中。容器中显示的对象是分层的。7. contains():确定显示对象是否是 DisplayObjectContainer 的子级。 getChildByName():按名称检索显示对象。 getChildIndex():返回显示对象的索引位置。 setChildIndex():更改子显示对象的位置。 swapChildren():交换两个显示对象的前后顺序。 swapChildrenAt():交换两个显示对象的前后顺序(由其索引值指定)。8. 与使用 getChildAt() 方法相比,使用 getChildByName() 方法会导致性能降低。9.控制Stage的属性,在SWF文件的主类中,在import和类名之间加上SWF(width = 800, height = 600, backgroundColor = #ffffff, frameRate = 31),其中frameRate用于设置加载到应用程序中的所有 SWF 文件的帧速率。10. 无法以全局方式访问 Stage 对象。 而是需要利用 DisplayObject 实例的 stage 属性进行访问。如要访问一个sprite的stage,可以用sprite.stage来访问。11. 控制舞台缩放比例用Stage类的 scaleMode 属性可确定如何调整舞台内容。12. 使用全屏模式可令 SWF 填充查看器的整个显示器,没有任何边框、菜单栏等。Stage 类的displayState 属性用于切换 SWF 的全屏模式。打开或关闭全屏模式时,可以使用 Stage 类的 fullScreen 事件来检测和响应。13. 在 ActionScript 中处理全屏模式时,需要记住以下注意事项: 只能通过 ActionScript 响应鼠标单击(包括右键单击)或按键才能启动全屏模式。 对于有多个显示器的用户,SWF 内容将展开且只填充一个显示器。Flash Player 使用度量信息来确定哪个显示器包含 SWF 的最大部分内容,然后使用该显示器提供全屏模式。 对于 HTML 页中嵌入的 SWF 文件,嵌入 Flash Player 的 HTML 代码必须包括名为allowFullScreen 且值为 true 的 param 标签和 embed 属性,如下所示:.如果要在网页中使用 JavaScript 来生成 SWF 嵌入标签,则必须更改 JavaScript 以添加allowFullScreen param 标签和属性。例如,如果 HTML 页使用 AC_FL_RunContent()函数(由 Flex Builder 和 Flash 生成的 HTML 页使用) ,则应在该函数调用中添加allowFullScreen 参数,如下所示:AC_FL_RunContent(.allowFullScreen,true,.); /end AC code这不适用于在独立 Flash Player 中运行的 SWF 文件。 在全屏模式下将禁用所有与键盘有关的 ActionScript,如 TextField 实例中的键盘事件和文本输入。用于关闭全屏模式的键盘快捷键除外14. addEventListener()的参数useWeakReference来指定对侦听器函数的引用是弱引用还是正常引用。通过将此参数设置为 true,可避免侦听器函数在不再需要时仍然存在于内存中的情况。FlashPlayer 使用一项称为“垃圾回收”的技术从内存中清除不再使用的对象。如果不存在对某个对象的引用,则该对象被视为不再使用。垃圾回收器不考虑弱引用,这意味着如果侦听器函数仅具有指向它的弱引用,则符合垃圾回收条件。15. 处理显示对象事件时需要记住的一个重要问题是:从显示列表中删除显示对象时,事件侦听器的存在将会对是否从内存中自动删除显示对象(垃圾回收)产生影响。如果显示对象拥有订阅为其事件的侦听器的对象,即使从显示列表中删除了显示对象,也不会从内存中删除显示对象,因为显示对象仍然拥有到这些侦听器对象的引用。16.选择 DisplayObject 子类如果有多个可供选择的选项,处理显示对象时要作出的一个重要决策是:每个显示对象的用途是什么。以下原则可以帮助您作出决策。无论是需要类实例,还是选择要创建的类的基类,都可以应用这些建议: 如果不需要可作为其它显示对象的容器的对象(即只需要用作独立屏幕元素的对象),请根据使用目的选择 DisplayObject 或 InteractiveObject 两个子类中的一个: 用于显示位图图像的 Bitmap。 用于添加文本的 TextField。 用于显示视频的 Video。 用于绘制屏幕内容的“画布”的 Shape。特别是,如果要创建用于在屏幕上绘制形状的实例,而且该实例不是其它显示对象的容器,则使用 Shape 比使用 Sprite 或MovieClip 有明显的性能优势。 用于 Flash 具体创作项的 MorphShape、StaticText 或 SimpleButton。(无法以编程方式创建这些类的实例,但可以通过创建这些数据类型的变量来引用使用 Flash 创作程序创建的项目。) 如果需要使用变量来引用主舞台,请使用 Stage 类作为其数据类型。 如果需要容器来加载外部 SWF 文件或图像文件,请使用 Loader 实例。加载的内容将作为Loader 实例的子级添加到显示列表中。其数据类型将取决于加载内容的性质,如下所示: 加载的图像将是 Bitmap 实例。 使用 ActionScript 3.0 编写的已加载 SWF 文件将是 Sprite 或 MovieClip 实例(或这些类的子类的实例,由内容创建者指定)。 使用 ActionScript 1.0 或 ActionScript 2.0 编写的已加载 SWF 文件将是AVM1Movie 实例。 如果需要将一个对象用作其它显示对象的容器(无论是否还要使用 ActionScript 在显示对象上进行绘制),请选择其中一个 DisplayObjectContainer 子类: 如果对象是只使用 ActionScript 创建的,或者如果对象作为只使用 ActionScript 创建和处理的自定义显示对象的基类,请选择 Sprite。 如果要通过创建变量来引用在 Flash 创作工具中创建的影片剪辑元件,请选择MovieClip。 如果要创建的类与 Flash 库中的影片剪辑元件关联,请选择其中一个DisplayObjectContainer 子类作为该类的基类: 如果关联的影片剪辑元件在多个帧上有内容,请选择 MovieClip 如果关联的影片剪辑元件仅在第一帧上有内容,请选择 Sprite。17. 改变相对于舞台的位置可以使用任何显示对象的 globalToLocal() 方法将坐标从局部(舞台)坐标转换为本地(显示对象容器)坐标,/ 移动 Shape,使其左上角位于舞台的 0, 0 坐标处。var stagePoint:Point = new Point(0, 0);var targetPoint:Point = mySprite.globalToLocal(stagePoint);circle.x = targetPoint.x;circle.y = targetPoint.y;可以使用 DisplayObject 类的 localToGlobal() 方法将本地坐标转换为舞台坐标。18. 创建拖放交互组件第一方法使用 startDrag() 方法,它比较简单,但限制较多。按下鼠标按键时,将调用要拖动的显示对象的 startDrag() 方法。松开鼠标按键时,将调用 stopDrag() 方法。这种方法有一个非常大的限制:每次只能使用 startDrag() 拖动一个项目。如果正在拖动一个显示对象,然后对另一个显示对象调用了 startDrag() 方法,则第一个显示对象会立即停止跟随鼠标。 下面是如果需要拖动多个显示对象,或者为了避免多个对象可能会使用 startDrag() 而发生冲突,最好使用鼠标跟随方法来创建拖动效果。通过这种技术,当按下鼠标按键时,会将函数作为舞台的 mouseMove 事件的侦听器来订阅。然后,每次鼠标移动时都会调用此函数,它将使所拖动的对象跳到鼠标所在的 x,y 坐标。松开鼠标按键后,取消此函数作为侦听器的订阅,这意味着鼠标移动时不再调用该函数且对象停止跟随鼠标光标。下面是例子,而且实现了当拖动时把组件显示在其它组件之上。import flash.display.DisplayObject;import flash.events.MouseEvent;var offsetX:Number;var offsetY:Number;var draggedObject:DisplayObject;/ 按下鼠标按键时会调用此函数。function startDragging(event:MouseEvent):void/ 记住正在拖动的对象draggedObject = DisplayObject(event.target);/ 记录按下鼠标按键时光标的位置/ 与按下鼠标按键时拖动的对象的 x, y 坐标/ 之间的差异(偏移量)。344 显示编程offsetX = event.stageX - draggedObject.x;offsetY = event.stageY - draggedObject.y;/ 将所选对象移到显示列表的顶部stage.addChild(draggedObject);/ 通知 Flash Player 开始侦听 mouseMove 事件。stage.addEventListener(MouseEvent.MOUSE_MOVE, dragObject);/ 松开鼠标按键时会调用此函数。function stopDragging(event:MouseEvent):void/ 通知 Flash Player 停止侦听 mouseMove 事件。stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragObject);/ 只要按下鼠标按键,/ 每次移动鼠标时都会调用此函数。function dragObject(event:MouseEvent):void/ 将拖动的对象移到光标的位置,从而保持/ 光标的位置和拖动的对象的位置/ 之间的偏移量。draggedObject.x = event.stageX - offsetX;draggedObject.y = event.stageY - offsetY;/ 指示 Flash Player 在此事件后刷新屏幕。event.updateAfterEvent();circle.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);circle.addEventListener(MouseEvent.MOUSE_UP, stopDragging);square.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);square.addEventListener(MouseEvent.MOUSE_UP, stopDragging);19. 当更改显示对象的 width 或 height 属性时, Flash Player 还会更新对象的 scaleX 和scaleY 属性。这些属性表示显示对象与其原始大小相比的相对大小。scaleX 和 scaleY 属性使用小数(十进制)值来表示百分比。例如,如果某个显示对象的 width 已更改,其宽度是原始大小的一半,则该对象的 scaleX 属性的值为 .5,表示 50。如果其高度加倍,则其 scaleY 属性的值为 2,表示 200。20. MovieClip(MC)是多帧的,含有时间轴;而Sprite是单帧的,没有时间轴。两者都可以嵌套。 Sprite 类是 ActionScript 3.0 中新引入的类。 除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样。无论何时,对一个没有任何东西的元件,企图设置width/height,都会使scaleX/scaleY变为0,就是说名明明添加了可视组件,但是却看不到。如下:var mc:Sprite = new Sprite();mc.width = 200;mc.height = 200;mc.graphics.beginFill(0x000000);mc.graphics.drawRect(0,0,100,100);mc.graphics.endFill();this.addChild(mc);上面的代码看不到黑色方块。MovieClip类继承自Sprite类。21. 缓存显示对象可以通过缓存指定的显示对象来提高 SWF 文件的性能。显示对象是一个“表面” ,实际上是位图版本的实例矢量数据,矢量数据是 SWF 文件中不需要有太多更改的一种数据。因此,打开缓存的实例不会随 SWF 文件的播放而不断地重绘,这样便可快速呈现 SWF 文件。只有将 cacheAsBitmap 设置为 true时,才能看到 opaqueBackground 和 scrollRect 属性带来的性能优势。22. 改变可见控件的颜色必须这样写,。要在进行任何更改后更新显示对象,必须将ColorTransform 实例重新分配给 transform.colorTransform 属性。var colorInfo:ColorTransform = button.transform.colorTransform;colorInfo.color = 0x003399;/ 将更改应用于显示对象square.transform.colorTransform = colorInfo;23. var url:URLRequest = new URLRequest(C:/Documents and Settings/yang.xu/My Documents/My Pictures/2_cc8595.jpg);不能使用”;24. 下面的代码行将名为 square 的对象旋转 45 度(一整周旋转的 1/8):square.rotation = 45;25. 遮罩显示对象: 要指明一个显示对象将是另一个显示对象的遮罩,请将遮罩对象设置为被遮罩的显示对象的mask 属性:/ 使对象 maskSprite 成为对象 mySprite 的遮罩。mySprite.mask = maskSprite;则mySrprite只能看到maskSprite挡住的那部分;而且遮罩对象(maskSprite)是看不到的。26. 对象动画每个显示对象都有enterFrame 事件,它根据 SWF 文件的帧速率来调度,即每帧一个事件。创建脚本动画的大多数开发人员都使用 enterFrame 事件作为一种方法来创建随时间重复的动作。27加载显示对象Loader 对象用于将 SWF 文件和图形文件加载到应用程序中。28.旋转45度的参数 var rotation:Number = 2 * Math.PI * (45 / 360);处理位图1. getPixel() 方法从作为参数传递的一组 x, y (像素)坐标中检索 RGB 值。如果您要处理的像素包括透明度(Alpha 通道)信息,则需要使用 getPixel32() 方法。此方法也可以检索 RGB 值,但与 getPixel() 不同, getPixel32() 返回的值包含表示所选像素的 Alpha通道(透明度)值的附加数据。setPixels(rect:Rectangle, inputByteArray:ByteArray):void引发EOFError 异常,如果inputByteArray 对象包括的数据不足以填充 rect 矩形的区域。 在引发异常之前,该方法会尽可能多地填充像素。应该这么写:var bytes:ByteArray = bmd1.getPixels(rect);bytes.position = 0;bmd2.setPixels(rect, bytes);2. BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)若transparent为true,后面的fillColor应该是8位的,最前面的两位应该是指透明度,00指全透明,08是指半透明,ff指全不透明。若transparent为false,后面的fillColor应该是6位的,只是表明一个颜色值。BitmapData 对象的最大宽度和高度为 2880 像素。 如果指定的宽度值或高度值大于 2880,则不会创建新实例。BitmapData的生僻属性:rect 定义位图图像大小和位置的矩形。3. var myBitmap:BitmapData = new BitmapData(150, 150, true, 0x80FF3300);若要在屏幕上呈现新创建的 BitmapData 对象,请将此对象分配给或包装到 Bitmap 实例中。为此,可以作为 Bitmap 对象的构造函数的参数形式传递 BitmapData 对象,也可以将此对象分配给现有 Bitmap 实例的 bitmapData 属性。您还必须通过调用将包含该 Bitmap实例的显示对象容器的 addChild() 或 addChildAt() 方法将该 Bitmap 实例添加到显示列表中。例:var myBitmapDataObject:BitmapData = new BitmapData(150, 150, false, 0xFF0000);var myImage:Bitmap = new Bitmap(myBitmapDataObject);addChild(myImage);4. 从外部源加载图像时,Bitmap 对象只能使用 GIF、JPEG 或 PNG 格式的图像。5. 应用像素贴紧的语法为myBitmap.pixelSnapping = PixelSnapping.ALWAYS;6. 通常,缩放位图图像时,图像会变得模糊或扭曲。若要帮助减少这种扭曲,请使用BitMap 类的 smoothing 属性。这是一个布尔值属性,设置为 true 时,缩放图像时,可使图像中的像素平滑或消除锯齿。它可使图像更加清晰、更加自然。7.用位图导入外部图片:URLRequest的URL不应该从代码的位置开始算,而应该从swf文件的位置开始算,因为swf文件是发布是的位置。必须要添加Complete事件,而且要把事件加到_loader.contentLoaderInfo.addEventListener上。public function onComplete(event:Event):void var image:Bitmap = Bitmap(_loader.content);var bitmap:BitmapData = image.bitmapData;addChild(image);特别注意上面标绿色的,把外部载入文件写成位图,则千万不能用new Bitmap,否则编译不通过,报错。URLRequest 要加载的 SWF、JPEG、GIF 或 PNG 文件的绝对或相对 URL。 相对路径必须相对于主 SWF 文件。 绝对 URL 必须包括协议引用,如 http:/ 或 file:/。 文件名不能包括磁盘驱动器指定。8. 若要从一个图像向另一个图像中复制位图数据,可以使用多种方法:clone()、copyPixels()、copyChannel() 和 draw()。这些都是BitMapData的方法。为没有拉伸、旋转或色彩效果的图像之间的像素处理提供一个快速例程。 此方法在目标 BitmapData 对象的目标点将源图像的矩形区域复制为同样大小的矩形区域。 从BitmapData中拷贝出红色,绿色,蓝色或alpha通道出来,使用BitmapData的copyChannel( )方法。bitmapData.copyChannel (sourceBmp, srcRect, destPoint,srcChannel, destChannel);这两个通道参数可以1,2,4或8中的整数,它们代表红色,绿色,蓝

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论