01 2013 档案
摘要:求下面函数的返回值 -- 统计1的个数-------------------------------------function func(x:int):int{ var countX:int = 0; while(x) { countX++; x= x & (x - 1);} return countX;}假定x = 999910011100001111答案: 8思路: 将x转化为2进制,看含有的1的个数。注: 每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。判断一个数(x)是否是2的n
阅读全文
摘要:虽然A*(读作A星)算法对初学者来说是比较深奥难懂,但是一旦你找到门路了,它又会变得非常简单。网上有很多解释A*算法的文章,但是大多数是写给那些有一定基础的人看的,而您看到的这一篇呢,是真正写给菜鸟的。本篇文章并不想给这个算法题目作一些权威性论断,而是阐述它的基本原理,并为你理解更多相关资料与讨论打下基础。文章末尾给出了一些比较好的链接,放在“进阶阅读”一节之后。最后,本文不是编程规范,你将可能使这里讲述的东西编写成任何计算机语言。在本文的末尾我还给出了一个例子程序包的下载链接,也许正合你意。在这个包中有C++和Blitz Basic两个版本的程序代码,如果你只是想看看A*算法是如何运作的,该
阅读全文
摘要:Knockout.js是一个JavaScript库,它可以让你声明绑定元素和其对应的数据模型,达到你的UI和模型自动双向更新。Knockout入门不难,并且它很好地集成了其他的类库和技术。通过本篇文章你可以入门。 为什么是Knockout开发一个复杂的、动态的以数据驱动的(data-driven数据驱动)网页应用是一个具有挑战的任务。当用户进行操作、或新的数据被加载时,保持用户界面与底层数据正常同步,涉及到关联大量的事件来控制各种元素与数据的中间数据信息。Knockout之前用一个简单的方法来证明Knockout的优势,重要的是了解如何使用Knockout创建简单的编辑器,和不用Knockou
阅读全文
摘要:Foxhole, 这个轻量级,可换肤,易扩展的Starling UI组件现正式受Adobe官方支持,正式更名为Feathers! 用Starling框架做GPU加速2D、3D游戏的同学有福了~Feathers是移动以及和桌面均适用的UI组件,轻量级,可扩展,具有换肤功能。 Feathers集所有于一包,借GPU驱动的图形之势(多亏有Starling框架)高速绘制平滑响应式体验。跨平台利用Feathers可以为iOS,Android,Windows,Mac构建强大的,基于硬件加速的用户界面。通过Feathers, Starling Framework和Adobe的技术可以为所有操作系统创建本地应
阅读全文
摘要:Flump可以将Flash关键帧转换成图片和XML或JSON数据格式,可以轻易的被2D游戏引擎调用。Flump目前支持的游戏引擎越来越多,包括Starling。应用范例:Flash制作动画。Flump输出图片和XML或JSON数据格式。Flump-使用GPU渲染Flash动画:http://threerings.github.com/flump/
阅读全文
摘要:注:文中的Bitmapdata和BMD均为同一意思BitmapData,BMD为其缩写一,概括:Bitmapdata继承Object对象,实现IBitmapDrawable接口,这个接口有什么用,你可以理解为Drawable,能被画。官方介绍是:IBitmapDrawable 接口由可作为 BitmapData 类draw()方法的source参数传递的对象来实现。 这些对象的类型为 BitmapData 或 DisplayObject。 其实就是能被“画”,这点我在一会的公共方法中会详细介绍。个人理解来说,BitmapData主要提供的是对图像的“像素级”的操作,如果你想切实感受一下,有个挺
阅读全文
摘要:XMLSocket 类实现了客户端套接字,这使得运行 Flash Player 的计算机可以与由 IP 地址或域名标识的服务器计算机进行通信。 对于要求滞后时间较短的客户端/服务器应用程序,如实时聊天系统,XMLSocket 类非常有用。 传统的基于 HTTP 的聊天解决方案频繁轮询服务器,并使用 HTTP 请求来下载新的消息。 与此相对照,XMLSocket 聊天解决方案保持与服务器的开放连接,这一连接允许服务器即时发送传入的消息,而无需客户端发出请求。 若要使用 XMLSocket 类,服务器计算机必须运行可识别 XMLSocket 类使用的协议的守护程序。 下面的列表说明了该协议: XM
阅读全文
摘要:在讲AS3 Socket之前我们先来搞清几个概念,这有助于我们更加了解网络通信!1、网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。使用TCP/IP协议的应用程序通常采用应用编程接口:UNIXBSD的套接字(socket)和U
阅读全文
摘要:首先先回顾一下FLASH的OO构成。对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件。我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如:我们新建一个loaded.fla文件,然后我们建立一个影片剪辑元件,你可以在它的内部做一些动画处理,打开库,单击元件右建,选择“链接”打开“链接属性”,在类的输入框里我们键入“myClass”。这样一来我们就可以把这个元件作为一个类--myClass。也就是说我们可以通过new来构建这个元件的具体实例并显示在舞台,如:var test:myClass=new myClass();addChil
阅读全文
摘要:最近学习做socket, 当然就用到ByteArray了,一起学习一下吧。objectEncoding: 设置ByteArray读写Object是编码格式, 仅对writeObject,readObject这两个方法有用.endian:指示多字节数字的最高有效字节位于字节序列的最前面。 一般不用设置, 默认是Endian.BIG_ENDIAN.bytesAvailable, length, position这3个属性是相关的.position:ByteArray的当前读写点, 可读写. (当然length == 1, 设置position = 5, 这样也不会报错)bytesAvailable
阅读全文
摘要:1、反射就是通过一个字符串得到一个Class,然后根据这个Class得到它的实例。2、例如:现在假设有100种动物(Animal),它们都继承自Animal类,这时候你需要实例化随机选择的一种动物,如果你不用反射,就要用switch做N次的条件判断,(Dictionary实现会比较优雅,但是依旧繁琐)。如果用反射,就会简单的多:public static function getNewAnimal(type:String):Animal{ var classReference:Class = getDefinitionByName(type) as Class; //通过一个字符串得到一个Cl
阅读全文
摘要:用URLLoader以二进制的方式加载外部图片,获得URLLoader.data的ByteArray数据,再用Loader去加载,这时Loader.content就是一个bitmap了。package {import flash.display.Bitmap;import flash.display.Loader;import flash.display.MovieClip;import flash.display.Sprite;import flash.events.Event;import flash.filters.ConvolutionFilter;import flash.net.U
阅读全文
摘要:AS3已经中Loader与URLLoader是两个比较容易混淆的类,特此区分:1、应用范围 Loader: swf,图片(jpg,png,gif) URLLoader:文本文件(xml,php,jsp…)2、使用方法 Loader:loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); private function loadComplete(event:Event) {trace("done");addChild(loader);}URLLoader:xmlLoader.dataF
阅读全文
摘要:新的一年开始了,是时候让我们的小鸟升级到一个新的版本了,让它来展示一下过去几个月中它学习到的新本领吧!对我们的小鸟来说,2012年是惊人的一年。我特别高兴的是,围绕在小鸟周围的社区越来越大。您最近关注过论坛吗?每一天都有几十个新的帖子,而且这个数字还在不断增多。非常感谢所有访问我们网站的人,以及对我们的支持!此外,许多基于Starling编写的令人吃惊的游戏也发布了很多---看看这些比如,愤怒的小鸟星战版,聪明的外星人,疯狂过山车或流氓队(这是其中的几个例子)!最后还有一些重要的事情,基于Starling的扩展和类库就如雨后春笋般,又如同超级马里奥游戏里的蘑菇一般,遍地开花!来看看Dragon
阅读全文
摘要:页游,最最核心的就是客户端(swf)与服务端的游戏通信了。游戏通信产生的封包,内容是否可识别,可篡改,可重放,处理逻辑是否有漏洞,都决定了这款游戏是否有重大的漏洞。 网页游戏的安全问题,在刚入职接触的时候,写过两篇比较浅显的文章。虽然页游安全总体上并没有显著变化,没有新的攻击方法,也没有新的防御方法,我个人的工作重心也由页游安全转向了手游安全,但出于完美主义的偏执,还是希望写一篇覆盖完整的页游安全文章,希望能给页游产业一点帮助。一、协议安全(swf安全):自动封包 (重点)页游,最最核心的就是客户端(swf)与服务端的游戏通信了。游戏通信产生的封包,内容是否可识别,可篡改,可重放,处理逻...
阅读全文
摘要:JSFL是一个很强大的东西,而且研究的越深越发现其功能的强大。下面我就把自己总结的一些东西拿出来和大家分享一下。1、 JSFL存放路径 1)JSFL文件可以单独存放于磁盘中,只要选择其 打开方式 为Adobe Falsh即可.2)可以把JSFL文件放在 *:\Documents and Settings\*username*\Local Settings\Application Data\Adobe\Flash CS4\zh_CN\Configuration\Commands 然后进入任何一个Flash文件,选择命令菜单就可以看见你新建的JSFL了。 对于第一种存放方法适用于用其他工具(如Ja
阅读全文
摘要:基本上所有flash IDE能做的操作都可以通过JSFL做出。JSFL使用起来很简单,而且调试很方便。IDE里面的历史面板可以把你每一步操作使用的JSFL源码都告诉你。document.selectAll()选择舞台上的所有项目。此方法等效于按 Control+A (Windows) 或 Command+A (Macintosh),也等效于选择”编辑”>”全选”。示例下面的示例选择用户当前可见的所有内容:fl.getDocumentDOM().selectAll();document.selection属性;文档中的所选对象的数组。如果未选择任何内容,则返回一个长度为零的数组。如果未打开
阅读全文
摘要:实例如下://filename: batch_export.jsfl//将cs3中lib下的位图,生成对应的mc元件, 并按名字导出var lib = fl.getDocumentDOM().library; //library 对象var libLength = lib.items.length;var itemArr = [];for(var i=0; i < libLength; i++) { //将位图放入数组 if(lib.items[i].itemType=="bitmap") itemArr.push(lib.items[i]);}for (var i
阅读全文
摘要:JSFL指Flash JavaScript,是JavaScript脚本文件,是用来扩展Flash IDE的重要工具。学会它、熟练使用它之后你会惊讶的发现,哇,原来可以这么高效率的做Flash啊!下面我们来看一看怎么使用JSFL: 不知道各位朋友有没有使用过Flash IDE中的“历史记录面板”?如果没有用过的话,赶紧Ctrl+F10调出来看一看吧,因为本文的内容将从它身上开始。 在Flash IDE中(本人使用Flash CS3 Professional)按下R键(矩形绘制工具的快捷键),在舞台上拖动鼠标绘制出一个矩形。观察“历史记录面板”,你会发现面板中添加了一个名为“矩形”的动作。选中“.
阅读全文
摘要:Starling默认的显示对象都是四边形,但我们可以改变顶点位置和纹理的UV坐标,来实现不规则形状的显示,再配合动画的话,可以实现三角形卷轴地图滚动的效果。 下面是代码实现过程: package test { import flash.display.Bitmap; import flash.geom.Point; import flash.geom.Rectangle; import starling.animation.IAnimatable; import starling.display.Image; import starling.textures.Texture...
阅读全文
摘要:Robotlegs是一个用来开发Flash,Flex和AIR应用的纯AS3微架构(框架)。Robotlegs专注于将应用程序各层排布在一起并提供它们相互通讯的机制。Robotlegs试图通过提供一种解决常见开发问题的经过时间检验的架构解决方案来加速开发。Robotlegs无意锁定你到框架,你的类就是你的类的样子,而且应该很容易地切换到其他框架。 Robotlegs框架提供一个基于Model-View-Controller元设计模式的默认实现。这个实现提供一个针对应用程序结构和设计的强烈建议。虽然它确实轻微减低了你的应用程序的便携性,不过它依然以最低限度影响你的具体类为目标。通过扩展MVCS..
阅读全文
摘要:二进制深层次克隆(彻底摆脱了对原型(源对象)的影响和依赖) 特点: 1. 不能访问函数,只能访问属性 2. 使用bytearray克隆,不好的就是克隆出来的Object并非原应用类型,而且只可以克隆public属性。 它适用于在AS3中定义的数据类型,包括所有基元类型及由基元类型组合的复合类型,却并适用于在FP中定义的显示对象类型,如Sprite,MovieClip等。注:基元类型指String, Number, uint, int, Object,Null, Boolean,void。貌似这样我们就可以实现对象的深拷贝了,但这个方法是有局限的。 AS3的效率(注意,我说的是AS3...
阅读全文
摘要:作为软件工程师,你希望从工作中获得的是:稳定的薪水、参与好项目的机会、好工作的跳板或只是和其他程序师成为好基友。这里的“高效”,我指的是按时完符合要求的项目的能力。经历过不少软件编写工作后,我相信以下实践会帮助你学会“高效”,同时提高专业声望、拉长职业寿命,和获得个人满足。Programmer(from good-wallpapers)1.理解你的需求成为高效程序员的第一步是,保证时间的合理分配。没有什么比将时间花在完全没有前途的工作上更浪费的了。尽快开工尽快完成一个直观的系统。这意味着先创建界面,无论是程序界面还是用户界面,然后生成内部功能的存根代码(如果有必要的话)。这么做便于“客户”查看
阅读全文
摘要:Singleton模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式的三个特点: 一、该类只能有一个实例; 二、该类必须自行创建这个实例(在该类内部创建自身的实例对象); 三、该类必须自行向整个系统提供这个实例。ActionScript3.0中定义如下:public class Singleton { private static var _instance:Singleton; public function Singleton() { } public static function getInstance():Singleto.
阅读全文
摘要:Starling的英文原意是叫做“八哥”的小鸟。不过在Flash领域,Starling是一个ActionScript类库,它模仿了传统的Flash显示列表。然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这会带来非常明显的性能提升。 Starling并不是直接1:1的复制Flash API。所有的类都针对GPU模式进行了精简和优化。Starling向开发者隐藏了Stage3D的内部细节,但如果您想创建自定义显示对象,也可以很容易访问到它们。 就像它在iOS平台的姐妹框架,[Sparrow Framework][1], S
阅读全文
摘要:Moscrif是一种针对移动应用程序开发的跨平台解决方案。它让你可以为智能手机、平板电脑和桌面电脑创建本地的应用和游戏。 现在,它已经支持iPhone、iPad、Android智能手机和平板电脑,并且还会不断增加对新设备的支持。不久之后也会支持桌面操作系统,像Windows和Mac OS,这样即便是最古老的学校中的PC用户也可以运行Moscrif应用程序。因为Moscrif让开发者可以只使用一种代码库,所以就不需要为所有需要的移动操作系统迁移应用程序。一旦开发完成,你的应用就会像在本地编写的那样执行和表现。Moscrif基于强大的JavaScript引擎构建,它让你可以快速开发,同时保持高质.
阅读全文