能用AS3开发FC雷电模拟器停止运行并运行在FLASH平台上吗

Flash AS3 二维码生成工具
老早就想做一个功能比较全面的二维码工具,发现ZXing库还是比较全的,AS3的库也有,就用Flash做了一个,效果展示:
初步的功能其实还好,但问题就卡在编码上,生成出来的汉字扫出来就是 ?? ,这肯定是编码问题,于是对ZXing(AS3)编码流程仔细地检查,发现有一步编码中没有将编码参数传入,于是里面使用了默认的 iso-8859-1 的编码。原来加上参数就好了。
//文件:com\google\zxing\qrcode\QRCodeWriter.as 63
Encoder.encode(contents, errorCorrectionLevel, code);
Encoder.encode(contents, errorCorrectionLevel, code, hints);
解决了编码问题,解码问题又来了,发现生成的二维码中的汉字,解码出来全是莫名其妙的符号(不是问号),我很熟悉这些符号,就是编辑器使用iso-8859-1字符集打开utf-8文档中看到的汉字部分。还是编码问题,但这次麻烦大了,不只是个参数问题,而是解码算法,原代码是直接读一个字节,就转换String,而没有像编码中那样用Flash的ByteArray中的方法,经过反复测试,只需要将转换的部分改成写入一个ByteArray,最后使用ByteArray的readMultiByte的方法传入设置的编码就好了。
//文件:com\google\zxing\qrcode\decoder\DecodedBitStreamParser
//修改方法
private static function decodeByteSegment(bits:BitSource, result:StringBuilder, count:int, currentCharacterSetECI:CharacterSetECI, byteSegments:ArrayList, hints:HashTable):void
// Don't crash trying to read more bits than we have available.
if (count && 3 & bits.available())
throw FormatException.getFormatInstance();
var encoding:String = 'iso-8859-1';
if (hints.containsKey(DecodeHintType.CHARACTER_SET)) {
encoding = String(hints.getValueByKey(DecodeHintType.CHARACTER_SET));
var readBytes:Array = new Array(count);
var bytes:ByteArray = new ByteArray();
for (var i:int = 0; i & i++)
bit = bits.readBits(8);
bytes.writeByte(bit);
readBytes[i] = String.fromCharCode(bit);
bytes.position = 0;
result.Append(bytes.readMultiByte(bytes.length,encoding));
byteSegments.addElement(readBytes);
&源码下载: &提取密码:gi23
昵称:请填写您的称呼
内容:=200)return false">
中午乱码不需要修改源码。
1.生成乱码只需在调用MultiFormatWriter.encode()方法的时候把utf8编码传入进去。
var hints: HashTable=new HashTable();
hints.Add(EncodeHintType.CHARACTER_SET, &UTF-8&);
var result: BitMatrix = myWriter.encode(contents, barcodeType, image.width - 100, image.height - 100,hints) as BitM
中午乱码不需要修改源码。
1.生成乱码只需在调用MultiFormatWriter.encode()方法的时候把utf8编码传入进去。
var hints: HashTable=new HashTable();
hints.Add(EncodeHintType.CHARACTER_SET, &UTF-8&);
var result: BitMatrix = myWriter.encode(contents, barcodeType, image.width - 100, image.height - 100,hints) as BitM
谢谢博主分享
加油,看好你哦。
大牛的经验值得学习,烦请大牛发一份源码个到邮箱,多谢
大哥 你太牛了~~ 我以前 改过老版本的 zxing 中文乱码,网上找的 就能解决~用了 zxing 2.2 很多代码都不一样了~ 我找了好久才找到 你的文章 实在太感谢你了~~
学习了,不错
你好,我想问下为什么你生成的二维码图案是顺滑的,我的是一格一格的?
求源码 ,谢谢哥
好文,谢谢博主分享!
最近正需要这个,能给一份源码吗?多谢了!
能不能给份源码,学习下。
求源码,大哥
求Flash AS3 二维码生成工具 这个的源码,请发到邮箱
求源码及类库!老师
求源码学习,我下载的库总是??
大师,求源码
求源码,一直??
大哥,求个源码吧。。
大哥能不能给份源码哇!
大神!膜拜已久!可不可以将源码发我一份,在下想学习学习!谢谢!
求一份源代码
求源码!!!多谢呀
不错 用得着 mark下
求源码++++!!!多谢啦,么么哒^_^
源码不错的
大哥。麻烦发一个吧。谢谢了
代码看的不是太懂
先留下了给技术部门看看
问题还挺多的啊
@星星,@阿童木,@ray,@EO,@擎灭 已发送
求源码,大哥哥
东西不错,支持
学习啦,不错实用
求源码及类库!
也给我一份吧 朋友
求源码及编译后的文件, 谢谢!
牛!求分享啊,谢谢。
求源码 谢谢!
这个东西做的真好,求源码学习。谢谢
都是高手,收藏一下,或许用得到,谢谢。
也给我一份吧 大哥
大哥能不能给份源码哇他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)LayaAir五分钟教会你:如何用AS3开发HTML5游戏
作为一个AS3的老用户,曾经用它开发很多游戏,实现了自己的游戏梦,有着无比的成就感。在Adobe放弃Flash,整个市场偏向HTML5后,一度很迷茫,这么好的语言难道就要放弃吗。LayaAir的出现,让我看到了希望。LayaAir是一套HTML5渲染引擎,底层利用WebGL,Canvas渲染,同时支持ActionScript3,TypeScript,Javascript三种语言开发,可以直接跑在微信,微博,QQ,手机浏览器,PC甚至电视上,是真正的跨平台,一套代码,可以同时发布成三端(手游APP,HTML5,Flash),设备覆盖率有着无比的优势。引擎功能也比较全面,2D,3D,VR,UI,物理都有支持,游戏中需要用到的工具和类库也一应俱全,并且以渲染性能高著称,真的是为了游戏开发而设计的引擎。官网也有各种应用Demo, 为什么选择用AS3开发HTML5?有什么优略势?一直以来,很多as3开发者都有一个疑虑,是否能使用AS3开发JS。其实这个疑虑是多余的,经过一段时间的使用,通过LayaAir编译器,用AS3开发html5应用和开发AS3应用程序没什么区别,写法和工具链都没变,非常得心应手。使用LayaAir编译器编译出来的JS和AS3是能一一对应上的。下面是我用LayaAir的AS3语言开发的示例package {import laya.display.Spublic class Main {&&& public function Main() {&&&&&&& //初始化引擎&&&&&&& Laya.init();&&&&&&& var sp:Sprite = new Sprite();&&&&&&& sp.graphics.drawRect(0, 0, 100, 100, &#ff0000&);&&&&&&& sp.pos(100, 100);&&&&&&& Laya.stage.addChild(sp);&&&&&&& }&&& }}编译为JS后,代码如下://class Mainvar Main=(function(){&&& function Main(){&&& Laya.init();&&& var sp=new Sprite();&&& sp.graphics.drawRect(0,0,100,100,&#ff0000&);&&& sp.pos(100,100);&&& Laya.stage.addChild(sp);&&& }&&& __class(Main,'Main');&&& return M})()相比而言,除了类的写法不同,其他代码都是一样的,代码都是一一对应的。用AS3语言开发相比直接用JS,甚至TS,还有很多优势:1. AS3是强类型语言,代码提示非常方便2. 支持面向对象编程,比JS甚至TS使用面向对象更方便3. 支持编译,在运行之前发现错误并提前解决,而不是运行时解决4. 支持工具强大,FlashDevelop FlashBuilder工具成熟下面说一下从AS3到LayaAir有哪些相同和不同。相同点:LayaAir用到了AS3的基础语法,比如基础的String,Number等类型,函数,类,接口,继承,这些面向对象的写法都可以随意使用,类库不用flash开头的类库,用LayaAir自己封装好的类库即可(可以引入LayaAir提供的playerglobal.swc,屏蔽掉flash类库代码提示),写起来和平时写AS3应用没有太多区别,体验一致,这点很赞呀。很多AS3的逻辑处理,可以不用更改直接能用。不同点:一些不同点是AS3和JS的差异造成的,一些是对Flash API的简化,& LayaAir的Api设计以简化,易用,高性能为准则,很多不同也是基于这个原因导致的。1. AS3中的int类型,编译到JS后,使用的是Number,因为js只有Number,平时不会遇到什么问题,但是碰到自动强转的逻辑,这块需要用parseInt()函数处理下。2. AS3中Array对象有个sortOn方法进行排序,由于JS没有,所以也不支持,可以用sort方法代替3. 事件写法不同,LayaAir从性能及易用性上,对事件进行了简化,增强,参照node.js的风格,比如sp.on(“click”, this, onSpClick); ,这里就是给sp对象增加了一个click事件监听,比addEventListener少写了不少代码(js不能压缩,所以这样写能减少代码大小)移除一个事件&&& sp.off(Event.CLICK, this, onSpClick);移除一个对象所有类型为click的事件(AS3没有)sp.offAll(Event.CLICK);移除一个对象身上的所有事件(AS3没有)sp.offAll();监听某个事件一次,监听被触发后会自动移除(AS3没有)sp.once(Event.CLICK, this, onSpClick);事件监听携带自定义数据,并返回&&& sp.on(Event.CLICK, this, onSpClick,[&parm1&,2,&parm3&]);&&&&& //自定义数据以参数的形式,放到前面,默认事件返回在后面&&&&& private function onSpClick(parm1:String, parm2:Number, parm3:String,e:Event) {&&&&&&& trace(parm1,parm2,parm3,e);&&&&& }是否监听过某种事件sp.hasListener(Event.CLICK);派发一个事件p.event(Event.CLICK, &参数&);自定义事件示例(无需实例自定的Event类,直接传递数据)&&&&& //监听一个自定义事件&&&&& sp.on(“myevent”,this,onMyEvent)&&&& &private function onMyEvent(parm:String){&&&&& trace(parm);&&&&& }&&&&& //派发一个自定义事件&&&&& sp.event(“myevent”,”this is a parm”);另外特别需要注意的一点是,默认精灵是没有宽高的(出于性能考虑),可以通过sp.size(100,100)设置宽高,或者设置sp.autoSize=true,否则是点击不了的,但 Laya自带的UI系统会自动计算宽高,所以一般无需自行设置宽高更多关于鼠标事件的介绍,可以参考官网教程:&&&& http://ldc.layabox.com/index.php?m=content&c=index&a=show&catid=7&id=584. this,在as3监听事件是不需要传入this的,但是js执行函数必须有执行域,所以需要传递this域进行,就是函数执行的环境,这也是js为什么比as3快的原因之一。5. LayaAir去掉了Flash内的DisplayObject,DisplayContainer,Bitmap,Shape等类,只保留了Sprite类,对API进行了简化,只要学会一个Sprite就够了,使用时也不用抉择到底用哪个好,并且Sprite即可当显示对象,又可当容器使用,性能非常快。6. 在LayaAir内,出于性能考虑,Sprite精灵默认没有自动设置宽高(默认都是0),可以通过设置width和height属性设置,或者通过size()函数设置,宽高只用来作为碰撞的依据,不再对显示大小进行影响。还可以设置sp.autoSize=true,让系统帮你自动计算宽高,但这样会消耗一定的性能,在LayaAir的UI系统内,会自动维护宽高,所以无需设置。7. LayaAir内,width,height和scaleX,scaleY不再有关联,即设置width不会影响scaleX,其实可以把宽高立即为碰撞体大小,只是用来做碰撞依据的。8. TextField,TextFormat被Text类代替,API也进行简化,通过HTMLDivElement类,能实现HTML富文本。9. BitmapData被Texture代替10. XML和XMLList被JS原生的DomXML代替,尽量减少xml使用,性能真的不怎么样11. Flash的时间轴动画,可以通过LayaAirIDE提供的工具转换之后,在引擎内播放12. LayaAir内置了Tween,Timer,Loader,Sound管理类,做游戏更加方便13. 引擎模块分为以下几个部分:a) laya.core是核心包,封装了显示对象渲染,事件,时间管理,时间轴动画,缓动,消息交互,socket,本地存储,鼠标触摸,声音,加载,颜色滤镜,位图字体等b) laya.webgl封装了webgl渲染管线,如果使用webgl渲染,可以在初始化时调用Laya.init(,WebGL)进行开启,如果设备不支持WebGL,会改用Canvas模式绘制c) laya.ani是动画模块,包含了swf动画,骨骼动画等d) laya.filter包含更多webgl滤镜,比如外发光,阴影,模糊以及更多e) laya.html封装了html动态排版功能f) laya.ui.提供了制作UI的30多种常见UI组件g) laya.tilemap提供tileMap解析支持14. 关于性能方面注意事项,可以参考下面文章http://ldc.layabox.com/index.php?m=content&c=index&a=show&catid=33&id=13115. LayaAir提供一个可视化的IDE工具,方便快速开发游戏,关于IDE相关教程,可以参看官网的视频教程。16. 先从官方示例入手,能更快的了解LayaAir有哪些功能,如何使用17. 引擎API网址: 18. QQ交流群:官方社区:总结:如果你是一名AS3开发者,用LayaAir引擎开发将是非常轻松的,很多写法逻辑算法经验都可以复用,开发环境也可以使用自己之前的熟悉的环境。用熟悉的语言开发HTML5应用,感觉爽多了。
转载请注明:文章转载自 开源中国社区
本文标题:LayaAir五分钟教会你:如何用AS3开发HTML5游戏
本文地址:如何在AIR上建立AS3应用程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何在AIR上建立AS3应用程序
&&如何在AIR上建立AS3应用程序
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢这里是一个使用Flash AS3获取远程数据的实例,通过获取远程URL的数据,然后显示在Flash的表单文本框中,实例代码如下:
一,AS3部分[下载]
package { import flash.display.MovieC import flash.events.*; import flash.net.*; import flash.text.*; public class Main extends MovieClip { public function Main() { var request:URLRequest = new URLRequest(&http://t.biuuu.com/index.php?nocache=&); request.method = URLRequestMethod.GET; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, completeHandler); loader.load(request); function completeHandler(evt:Event) { b_title.text = evt.target.data. b_email.text = evt.target.data. } } } }
实现步骤如下:
一,获取一个URLRequest对象实例 var request:URLRequest = new URLRequest(http://t.biuuu.com/index.php?nocache=);
二,指定request对象实现的方法,如GET request.method = URLRequestMethod.GET;
三,获取一个URLLoader对象实例 var loader:URLLoader = new URLLoader();
四,设置 loader对象的数据格式 loader.dataFormat = URLLoaderDataFormat.VARIABLES;
五,设置一个当获取PHP数据完成后的监听事件 loader.addEventListener(Event.COMPLETE, completeHandler);
六,加载请求 loader.load(request); 简单的说就是先明确请求URL的属性,如路径地址,请求方式等,然后设置返回数据的实现方式,如数据格式,处理方法等 二,PHP部分[路径为http://t.biuuu.com/index.php这个可根椐实际情况进行修改]
&?php $value = &username=biuuu.com&email=biuuu.&; echo $ ?&
注意数据的组装形式,类似于参数=值,如果有多个参数使用&分割
如上实例,就可以实现一个简单的使用FLASH AS3远程获取PHP数据的功能。有了这些知识,就可以开始实现一个简单的基于AS3+PHP的网站。
点击下载:as3_php.rar
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

我要回帖

更多关于 手机运行exe模拟器 的文章

 

随机推荐