- 浏览: 578099 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
最近用AS3写一些项目,在编程过程中,碰到不少问题,同时也有一些收获和心得。现在贴出来希望对大家在AS3编程有一些帮助。假如你发现有说得不对的地方,你可以指出来,大家一起来讨论。
1、AS3的强制类型转换
我之前一直以为是没有这个功能的,而最近在看一些文档,发现这个功能是有的。目前总结下来有两种写法:
- var loader:URLLoader = URLLoader(event.target);
不知道这种写法是借鉴那种编程语言,反正我没有见过。
补充这个语法说明:http://livedocs.adobe.com/flash/8_cn/main/00001211.html - var loader:URLLoader = event.target as URLLoader;
这种写法是借鉴VB.Net编程语言,唉!AS3语法真得一个大杂烩。
2、URLStream和URLLoader
URLStream在文本文件数据方面可以支持多种字符编码。
URLLoader在进过测试后,发现除UTF-8字符编码外,其他字符编码读过来的数据都是乱码。
可通过ByteArray对象字符编码转换(感谢abc12hjc提供补充代码):
public class MoxieAS extends Sprite { public function MoxieAS () { var stream:URLStream = new URLStream; stream.addEventListener(Event.COMPLETE, complete); stream.load(new URLRequest("ttt.xml")); // <root><a /><b /><c /></root> } private function complete (event:Event):void { var stream:URLStream = event.target as URLStream; var xml:XML = XML(stream.readUTFBytes(stream.bytesAvailable)); trace(xml.*.length()); // output 3 } }
具体用那个方式就看实际功能需求了。
3、URLRequest
URLStream、URLLoader、Loader等读取外部数据的类,里的load方法参数值是URLRequest对象。我在编程过程总是喜欢直接写地址字符串,原来习惯改过来看样子要花点时间了。
4、Loader
在使用Loader来加载数据时,添加侦听事件时,注重一定要给Loader的 contentLoaderInfo属性增加事件,而不是给Loader对象增加事件。我就是因为加错对象(要害是编译时还没有报错),郁闷得差点要把电脑给扔了。
错误写法:
var loader:Loader = new Loader(); loader.addEventListener(Event.COMPLETE, completeHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
正确写法:
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
1 Bitmap swf加载进来SWF转换成一个Bitmap
private function complete(evt:Event):void { var loaderInfor:LoaderInfo=evt.currentTarget as LoaderInfo; if (loaderInfor != null) { var loader:Loader=loaderInfor.loader; if (loader != null && loader.content != null) { var bmpData:BitmapData=new BitmapData(loader.width,loader.height,true,0); bmpData.draw(loader,null,null,null,null,true); if(_roleIcons[loader.name].bitmapData) _roleIcons[loader.name].bitmapData.dispose(); _roleIcons[loader.name].bitmapData=bmpData; _roleIcons[loader.name].width = obj.width; _roleIcons[loader.name].height = obj.height; delete _roleIcons[loader.name]; } } beginLoadIcon(); }
//加载成功,发布成功事件 private function completeFun(e:Event):void { data = loader.content["bitmapData"]; delEvent(); dispatchEvent(e); }
2 MovieClip 加载SWF里面的元素【MC、Bitmap】
var equip:Class=_loader.contentLoaderInfo.applicationDomain.getDefinition("equipment") as Class; if(equip) { _equipIcons=new Bitmap(new equip(0,0)); updateGoodsIcon(_notLoadEquip); _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadEquipComplete); _notLoadEquip = null; _loader.unload(); next(); }
5、Loader加载过来的数据类型
大家知道Loader是用来代替原来 MovieClip的loadMovie功能,用于加载外部的图片文件,SWF文件。
- 假如加载图片文件(jpg,gif,png等)时,Loader.content得到数据类型是Bitmap对象;
- 假如加载SWF文件(flash 9 版本)时,Loader.content得到数据类型是MovieClip对象;
- 假如加载SWF文件(flash 9 以前版本) 时, Loader.content得到数据类型是AVM1Movie对象;
6、stage
在调试flash过程发现,假如把swf文件放到html页面后,stage.stageWidth和stage.stageHeight在第一次加载调用时,他们的值为空值;
7、 AVM1Movie
假如是AVM1Movie 对象时,就不能直接调用stop,play,gotoAndStop等原来MovieClip对象的功能了,而且不能将AVM1Movie 对象转换成MovieClip对象。目前解决办法:一种是用flash cs3 重新生成 flash 9的swf文件;另一种是国外网站有说能AVM1和AVM2两个虚拟机相互调用的方式(贴一个地址);
8、mask
在使用遮罩功能,发现一个问题,假如不把用于遮罩的显示元件通过addChild方法添加到同一级的显示容器里的话,遮罩效果就显示不正常,不知道这个是不是一个bug。我差点因为这个问题而放弃AS3改用AS2了。
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 642as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 800//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 966华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1465还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 968AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1441在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1071大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 868AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 974先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 909想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 805使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1625一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 896VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1240最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 780作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 698Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 823因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1314二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 899什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1427Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
as3 loader资源的回收示例代码,带有完整的源码和例子
flash as3 加载外部swf jpg gif png loader urlloader的通用代码
对学习flash as3 都比较有参考价值
flash actionscript3 as3 BulkLoader多资源加载队列的用法.ziploading加载队列bulk_loader
AS3焦点图 Flash ActionScript 3.0 焦点图 经典网络应用程序。XMl文件读取。/* 用到了知识点: Timer XML URLLoader pic Loader 按钮 按钮单击事件 */ /** 思路: 不进行缩放 1.初始化,控制面板背景,表示标题的...
*Baud rate must be kept the same as the first init* This is useful if the reset fails Examples: Get device information: ./stm32flash /dev/ttyS0 Write with verify and then start execution: ./...
Flashloader is designed to work as a second stage of Bootloader for i.MX RT1050 device, it detects communication traffic on one of the the supported peripherals (USB-HID and UART), download a user ...
LoaderSprite.as ---------------------- 处理Loader相关的Sprite Registration.as ---------------------- 变换注册点 SubMovieClip.as ---------------------- movieClip基类 QMC.as ---------------------- ...
通过socket方式传送swf文件来避免泄漏源代码的思路(只适用as3): 让主程序的loader(前台swf)通过socket连接到后台程序,然后请求需要的主程序文件.后台读取主程序数据通过socket发送给主程序的 loader.前台swf适用...
import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.*; import flash.net.URLVariables; public class HttpRequest { private var loader:URLLoader;// private var ...
The MSP430™ bootloader (BSL) (formerly known as the bootstrap loader) allows users to communicate with embedded memory in the MSP430 microcontroller (MCU) during the prototyping phase, final ...
import flash.display.Loader; import flash.display.NativeMenu; import flash.display.NativeMenuItem; import flash.display.NativeWindow; import flash.display.Sprite; import flash.display.StageAlign...
AS加载一外部SWF调用该swf内部方法,一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。 简单示例: 主文件:Main.fla, Main.as 被调用的文件:called.swf, Called.as
用ActionScript 3.0加载外部SWF文件,每个按钮对应一个文件,在同一时刻只能加载一个文件,令被加载的文件显示在固定大小的容器内。Adobe Flash CS4格式
import mochicrypt.as3.*; dynamic public class Preloader extends MovieClip { private var payloadLoader:Loader; private var patchProgress:Number = 0; private var payloadProgress:Number = 0; ...
Firmware: Flasher Portable PLUS: Universal Flash Loader mode detection in batch mode did not work. Fixed. Firmware: Flasher Portable PLUS: Number of bytes to program was not calculate correctly, ...
please follow instructions as described in the User's Guide, chapter entitled: "Restoring the Flash Device with the Factory Settings" build_factory_source: For advanced users This directory ...
var tmpMainFile = '.tmp/as/app/flash/main.as' ;var pkgs = require ( 'jinx-loader' ) ( tmpMainFile ) ;return gulp . src ( tmpMainFile ) // file path to inject. pipe ( jinxInject ( pkgs . as ) ). pipe ...
(3)将从Nor Flash启动改成从 NAND Flash启动 在文件中找到 195-201 代码,并在 201行后面添加如下代码: 195 copy_loop: 196 ldmia r0!, {r3-r10} /* copy from source address [r0] */ 197 stmiar1!, {r3-r10...