Cocos2d中如何使用自定义字体?
简单三部曲:
1、记得把字体文件(.ttf,.odf)放到resource目录去
2、然后在你的工程的Info.plist文件中新建一行(Add Row),添加key为:UIAppFonts,类型为Array或Dictionary都行;在UIAppFonts下再建立一个键值对,key为:Item 0,添加Value为XXX.ttf(你字体的名字,string型),可以添加多个,使用的时候写对应字体名字就行。
3、CCLabelTTF *label = [CCLabelTTF labelWithString:@"string?" fontName:@"xxx" fontSize:16];
About enabled of MovieClip
上一篇日志是5个月前发的,啊弥陀佛。。。。善哉善哉啊。
大家都知道MovieClip有个属性叫enable,这个属性可以让MC本身不可点,但是呢,看介绍:
enabled属性
enabled:Boolean语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9, Flash Lite 4一个布尔值,指示影片剪辑是否处于活动状态。enabled 的默认值是 true。如果将 enabled 设置为 false,则会禁用影片剪辑的 Over、Down 和 Up 帧。影片剪辑会继续接收事件(例如 mouseDown、mouseUp、keyDown 和 keyUp)。
enabled 属性仅控制影片剪辑的按钮式属性。可以随时更改 enabled 属性;修改后的影片剪辑将被立即启用或禁用。如果将 enabled 属性设置为 false,则该对象将不包含在 Tab 键的自动排序中。
enabled=false之后,MC还是可以接收事件的!!
不知道为何Adobe要搞出这个看起来相当不合理的设置来。
如果你想在MC enabled=false的时候不触发事件,判断enabled的值吧~~
Cocos2d-改变CCLabelTTF的anchorPoint来设置对齐方式
// align label to the right label.anchorPoint = CGPointMake(1, 0.5f); // align label to the left label.anchorPoint = CGPointMake(0, 0.5f); // align label to the top label.anchorPoint = CGPointMake(0.5f, 1); // align label to the bottom label.anchorPoint = CGPointMake(0.5f, 0); // use case: place label at top-right corner of the screen // the label’s text extends to the left and down and is always completely on screen CGSize size = [[CCDirector sharedDirector] winSize]; label.position = CGPointMake(size.width, size.height); label.anchorPoint = CGPointMake(1, 1);
Objective-c 中的单例实现
实现起来还真是相当的简单:
//先声明一个实例
static MyManager *sharedManager = nil;
//然后嘛,整一个静态方法
+(MyManager*) sharedManager
{
//如果没有初始化过
if (sharedManager == nil)
{
//那就初始化一个
sharedManager = [[MyManager alloc] init];
}
//返回实例对象
return sharedManager;
}
Flash-TextField ? useHandCursor ? 文本的手形光标
玩TextField的时候发现TextField类不支持useHandCursor,这就很蛋疼,为啥TF默认是不可点?
如果我们需要给TF加上手型,那要怎么搞呢?
有一个比较悲催的解决方案是把TF放到一个Sprite里边,然后Sprite里边xxxxxx,这样解决是可以解决,但是恶心。
另外一个方法是TextField用htmlText,例:
var label:TextField = new TextField(); label.htmlText = "<a href='event:null'>label text</a>";
这样可以实现useHandCursor的效果,在label点击之后页面url不会发生变化,其他后遗症不清楚。
如果看官有更好的做法,请留言啊留言。
iOS Applications and Flash
From:http://blog.theflashblog.com/?p=2325
Yesterday Apple announced that they have removed the restriction on 3rd-party development tools for creating applications for iOS devices. From Adobe’s perspective this is of course great news. Since the announcement, I have seen a lot of confusing new stories, tweets, and comments about what this actually means so let me clarify things a bit.
What this means
This theoretically allow developers to use the Flash CS5 iPhone packager to create applications for the iPhone and iPad. We also announced yesterday that we will resume development work on the packager.What this does NOT mean
This does not mean that the Flash Player will be coming to iOS as part of Mobile Safari. It also doesn’t mean that AIR will be natively supported as it will be on Android.So this is great news for Flash developers who want to target iOS devices with their applications. I truly hope that quality applications built using Flash will finally be able to make it onto the app store. Only time will tell but I am cautiously optimistic.
作为一个业余的iphone开发者,不建议使用Flash cs5来进行iOS开发,一点也不。
哪天苹果修改协议了,你就挂了。
还是用objc和c系列最靠谱。
Flash-Array 数组的引用问题
在写一个东西的时候,调试来调试去,硬是碰到一个诡异的问题,代码片段如下:
var _mapData:Array = [];
var row:Array = [0,0,0,0,0,0];
for (var j:int = 0; j < 6; j++) {
_mapData.push(row);
}
_mapData[0][5] = 1;
_mapData[1][5] = 2;
trace(_mapData[0][5]);
trace(_mapData[1][5]);
trace(_mapData[0][5]);和trace(_mapData[1][5]);的结果都是2,这明显不是预期的结果!
那到底是怎么回事呢,想来想去,忽然发现数组是引用类型的!!
所以最后_mapData是
[0,0,0,0,0,2]x6,
而不是预期的:
[0,0,0,0,0,1],
[0,0,0,0,0,2],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
代码修改为:
var _mapData:Array = [];
for (var j:int = 0; j < 6; j++) {
var row:Array = [0,0,0,0,0,0];
_mapData.push(row);
}
_mapData[0][5] = 1;
_mapData[1][5] = 2;
trace(_mapData[0][5]);
trace(_mapData[1][5]);
就可以达到预期的效果了。
Flash-JSON
最近碰到要解析JSON的工作,发现Adobe在AS3CoreLib里提供的JSON解析类功能很有问题,最离谱的就是只能解析双引号里的值,单引号就解析不了了?我勒了个叉的,这个什么啊?!太不负责任了。
在网上找到个把JSON数据转换成AS3CoreLib所带JSON解析类支持格式的函数:
function formatJSON(s:String):String{
var str:String=s;
var pattern:RegExp = /'/g;
str=str.replace(pattern,"\"");
pattern=/ /g;
str=str.replace(pattern,"");
pattern=/\{([^"^:]*):/g;
str=str.replace(pattern,"{\"$1\":");
pattern=/,([^"^:]*):/g;
str=str.replace(pattern,",\"$1\":");
return str;
}
将就着用吧,~
Android-Multi-Touch~
忙啊忙……直接贴码了,是个挺简单的过程:
public boolean onTouch(View v, MotionEvent event)
{
for( int i = 0; i < event.getPointerCount(); i++ ){
float x = event.getX(i);
float y = event.getY(i);
}
return true;
}
只在G3 2.1Rom上测试过,其他,不知道呀么不知道~~
发现自己越来越不严谨=,=
八款开源Android游戏引擎
听说原产地是CSDN,有兴趣的自己找下原出处吧,以下是内容:
很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。
事实上,这种想法完全是没有必要且不符合实际的,作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存在。仅仅因为我们处于这个狭小的天地间,与外界接触不够,所以对它们的存在茫然不知罢了。
下面我就罗列出八款常见的Android游戏引擎,以供有需要者参考(收费,下载量过小,不公布源码,以及鄙人不知道(-_-)的引擎不在此列)。
1、Angle
Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程。
最低运行环境要求不详。
项目地址:http://code.google.com/p/angle/
2、Rokon
rokon是一款Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,该项目最新版本为 2.0.3 (09/07/10)。总体来说,此引擎最大的优点在于其开发文档相当之完备,并且项目作者对反馈Bug的修正非常之神速,所以该框架的使用在目前也最为 广泛,有人干脆将它称为Cocos2d-iPhone引擎的Android版(业务逻辑和编码风格上也确实很像)。附带一提,国内某个需要注册会员才能下 载的Android游戏框架衍生于此框架,所以大家也不要刻板的认为收费便一定是好的,免费就一定不好。
最低运行环境要求为Android 1.5。
项目地址:http://code.google.com/p/rokon/
3、LGame
LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,目前最高版本同为0.2.6(31/07/10)。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。
该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。唯一遗憾的是,该项目作者是个极其懒惰的家伙,开发文档从去年说到今年依旧没有提供,只有游戏示例可供下 载。
最低运行环境要求为Android 1.1。
项目地址:http://code.google.com/p/loon-simple/
4、AndEngine
andengine同样是一款基于OpenGL ES技术的Android游戏引擎,物理引擎同样为Box2D(标配|||)。该框架性能普通,文档缺乏,但示例较为丰富。
下载地址(未直接提供jar下载,源码可通过svn提取):http://code.google.com/p/andengine/
最低运行环境要求不详。
项目地址:http://code.google.com/p/rokon/
5、libgdx
libgdx是一款基于OpenGL ES技术开发的Android游戏引擎,支持Android平台下的2D游戏开发,物理引擎采用Box2D实现。单就性能角度来说,堪称是一款非常强大的 Android游戏引擎,但缺陷在于精灵类等相关组件在使用上不够简化,而且文档也较为匮乏。
最低运行环境要求不详。
项目地址:http://code.google.com/p/libgdx/
6、jPCT
jPCT是一款基于OpenGL技术开发的3D图形引擎(PC环境为标准OpenGL,Android为OpenGL ES), 以Java语言为基础的,拥有功能强大的Java 3D解决方案。该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC(J2SE)以及Android两个开发版本。
jPCT的最大优势之一,就在于它惊人的向下兼容性。在PC环境中,jPCT甚至可以运行在JVM1.1环境之中,因为jPCT内部提供的图形渲染接口完 全符合所有的Java 1.1规范(就连已经消失的Microsoft VM乃至更古老的Netscape 4 VM也不例外)。
最低运行环境要求为Android 1.5。
项目地址:http://www.jpct.net/jpct-ae/
7、Alien3d
Alien3d是一款体积非常之小的Android 3D游戏引擎,基于OpenGL ES技术开发。为了压缩体积,它根据不同功能采用多jar方式发布(包括alien3d-engine.jar,alien3d- tiled.jar,alien3d-sprites.jar,alien3d-shapes.jar,alien3d- particles2d.jar,),事实上它的核心文件大约只有40KB,所有相关jar的总和也不足150KB。
最低运行环境要求为Android 1.5。
项目地址:http://code.google.com/p/alien3d/
8、Catcake
Catcake是一款跨平台的Java 3D图形引擎,目前支持PC(J2SE)及Android环境运行(已有iPhone版规划)。该引擎在易用性和运行性能上皆有出色的表现,支持常见的游戏开发功能,诸如精灵动画,音频处理和视频播放等。
最低运行环境要求为Android 1.6。
Flash全屏的那些事儿
说正事儿前也许你想要了解下这个内容:《Flash全屏后无法输入》
现在Adobe对全屏稍微做了点修改,真的是一点点修改……
相关文章在这里:Limited full-screen keyboard input
部分摘录:
Flash Player 9 does not allow keyboard input when displaying content in full-screen mode.
Flash Player 10 changes this, allowing for a limited number of keys to be usable in full-screen mode. These include Tab, the Spacebar, and the (up, down, left, right) arrow keys.
在FP9里边全屏状态下Flash是不允许和键盘输入的,当然ESC键除外。
而FP10修改之后变成了受限的全屏模式,目前只支持Tab,空格,4个箭头进行交互……
So,你要想在全屏状态下获得键盘输入,在正常情况下市不可能的。
不过昨天有个大哥发了个可以全屏厚输入的swf,所以呢,还是可行的,只是。。小弟不才,破解之后的代码搞不懂呀么搞不懂~~
The Evolution of Adobe Flash: From 1996 to 2010
越来越懒,啥都不想写……抄袭一个Flash的进化史~~
From http://www.pxleyes.com/blog/2010/07/evolution-of-flash-from-1996-to-2010/
Adobe Flash is arguably the most popular multimedia platform today. Users can watch videos, chat, and play games thanks to the capabilities of the Flash player. Content creators are afforded almost unlimited power due to ActionScript 3′s powerful features.
Flash wasn’t always the rich and advanced platform it is today, however. It started as a vector animation package named FutureSplash Animator in 1996 and 14 years later, it’s going strong, with a desktop, mobile, and server-side presence.
FutureSplash Animator – 1996

The first version of Flash, called FutureSplash Animator, was created by Jon Gay and Charlie Jackson, co-founders of FutureWave software. It was the animation extension of FutureWave’s SmartSketch, a vector drawing application. The first version of FutureSplash Animator was shipped in 1996 and a mere 7 months later, Macromedia bought FutureWave and renamed FutureSplash to simply Flash.

《程序员》精彩推荐:Android程序创意过滤与失败经验谈
via www.programmer.com.cn on 7/21/10 文/ 刘铁锋
从2008年底开始,我就在Android上进行程序开发探索。随着时间的推移,我越来越不敢妄自预测或者假设程序创意一定会成功,更多地发现用户的期望以及需求和事先预想很难一致。在一年半的开发过程中,尝试了各种不同的方法和思路来进行程序创意规划和试错。至今,依然失败的教训居多,侥幸成功的很少。因此,我将在本文中分享所经历的创意过滤经验以及失败教训。
思路转换的失败
在转入Android开发时,我的相关工作经验都是在大型基础平台上做程序开发。针对的用户群体动辄就是全球目标用户,在商业判断和分析上,最基础的一个考量就是用户群体和业务模式的总量的收益是否足够大,对用户群体的研究和商业判断分析完全根据市场分析报告和数据来做判断。因此,不可避免地在程序创意思路上会沿用以前的工作思路和分析方法。
在考虑Android上的创意的同时,不自觉地就考虑和分析了如下几个方面的问题:
1. 是否为用户所必需?
2. 技术上是否领先?
3. 程序的粘性是否足够?
4. 用户群体是否足够大?
因此,沿用这个思路,不可避免地就会往大的应用和大的服务上去思考和做出判断。
经过多方的讨论,找到了一个切入点:在用户联系人信息上同时显示出用户在社会网络(比如Facebook/Twitter)上的同步更新,并加上相关的操作是不错的想法。
理由如下:
1. 联系人是手机用户需要的必不可少的功能,绝对必须使用。
2. 技术上由于需要实现和系统联系人类似的功能,工作量不会小。如果加上未来在云端的备份,技术门槛也不会太低。
3. 绑定用户的社会网络信息,这个粘性理论上和用户使用社会网络的粘性一样。
4. 用户群体为所有社交网络的用户,考虑到Google手机的用户都是技术的爱好者和早期技术推广者,那么,基本上大部分Android用户都会使用。
按照这个思考方式分析下来,毫无疑问,这个想法一点也不差,能够相当完美地达到预期的规划。
因此,我们投入了3位开发工程师和1位产品经理,一共工作了3个月的时间,产品才初步成型,产品的源代码接近2MB,最后编译出来的程序接近4MB。
经过了痛苦的研发过程,产品出来之后,结果却令人大跌眼镜:
1. 程序包过大。用户根本不愿意下载,下载量非常惨淡。
2. 用户完全搞不懂这个程序的目的和用法。程序的命令以及描述非常难表达,并且程序需要绑定用户的社交网络账号,才可以显示信息。没有绑定之前,看不到任何特别信息,也体会不到程序的作用。很多用户在上手时看到需要绑定,便开始疑惑了。
3. 最终有用户搞明白了程序的用法,觉得想法不错。但程序的稳定性和性能遇到的了严重的瓶颈。尽管在其他平台开发经验不错,但是毕竟这是一个新的平台,并且程序操作相当复杂,用户依然选择了放弃使用。
4. 下载量不高,评分又逐渐降低,程序就在排行榜的榜单上渐渐消失了。
5. 惨淡的结果,让所有参与人员都开始沮丧,觉得这并不是一个好的想法。后来在iPhone上发现了类似的程序,从销售情况来看,表现同样不够好。再后来,Moto的Cliq基本上完整地把这个想法实现了,并作为一重大创新和卖点进行推出。
经过反复地反省和对比,初步得出了这样的失败教训:
1. 对于个人开发者和小型团队来说,不适合做过于基础的程序。操作的模式和理念上的创新与用户的接受度有相当的距离。这样的事情只有大公司才有财力和可能进行推广。比如说手机生产商,他们可以通过预置的方式进行推广。而对个人开发者来说,得先证明你的想法是成功的,不能假设一个会成功的需求和应用,然后卖给设备厂商。
2. 个人开发者和小型团队不适合做大的程序,尤其是开发时间不要超过2个月。4个人,3个月的时间,对于一个小团队来说 ,是相当宝贵的。这不仅仅是时间和金钱的问题,更多的是信心问题。
3. 用户能否真正接受你的想法,是一个关键性的问题。设想和推导都很完美,唯独缺了用户是否真正喜欢和接受这一条,又没有方法进行快速地验证和试错,基本上不能成功。
因此,在开发者头脑风暴产生一个创意之后,要做的几个最主要的过滤在于:
1. 开发时间是否太长?
2. 开发的技术难度是否会过高,而导致不能实现或者质量不可靠?
3. 有怎样的办法来判断用户是否会喜欢?
有了这几个过滤条件,相信能够减少失败的几率,或者说能够Fail Fast(尽快失败),从而减少损失。
技术门槛的失败
在Android开发的过程中,除了大型的程序探索,我们也研究了些小程序来练手。有个同事提出Android上删除程序不方便,于是,找人花一天左右的时间做了一个叫Quick Uninstaller的程序。程序非常简单,启动之后显示所有程序图标,双击程序图标,即可删除该程序。想法以及难度,都不很独特。
但是,效果却出乎大家的意料。用户好评如潮,由于功能比较简单,用户基本上无需学习,加上又是先行者,产品质量非常稳定,没有任何“force close”(Android程序出现异常或者等待时间过长,会弹出“force close”的对话框)。用户毫不犹豫地直接打出5分,并且基本上没有任何低分出现过。
但是,好景不长。在一次Google清洗的过程中,因为一些版权问题,账号被Google封掉了。所有程序被强行下架。这个时候,竞争对手迅速上位,就是目前在排行榜前列的Uninstaller,而我们的程序则一落千丈,尽管现在在某个细分分类中还有一定的位置,但是相比排名最高的程序,已经相差很远了。
这也让我们多了一个失败的教训:
1. 技术门槛不高,不能保证你一直保持优势。对你来说简单的程序,对竞争对手来说,程序同样的简单。因此,你能做,别人也能做。在这一点上,其实竞争同样激烈。
2. 封账号的代价相当之大,基本上等于你的努力悉数尽毁。Don’t do evil。
因此,在这个案例中,增加了一个新的创意过滤条件:
程序的创意是否过于简单?如果过于简单,那么创意能够始终保持成功的机会不会太高。
依赖第三方资源的失败
在经历了前面的屡次失败之后,我们开始做些研究的工作。发现老外其实也很八卦,什么笑话、娱乐新闻等,接受程度很高。因此,我们就想到了FML(Fuck My Life)的网站,也就是老外比较热衷的糗事分享网站,每天有很多人会发布各种各样的糗事,文字最后均会以Fuck My Life结尾。
于是,想到如果在手机上有这样的客户端,用户可能会更加愿意用,尤其是在发生糗事的时候,忍不住就想分享出来,粘性也会足够。
基于以上考虑,我们投入力量,实现了一个功能比较完善的版本,不仅融合了此服务所应有的相关功能,同时还花了不少工夫,加上了好多自定义的功能。
经过一段时间的努力,在Entertainment分类上,排名进了前10名,印象中程序最好排到了第3名。
好景不长在,失败总会有。
这个时候,FML的官网发现了这个机会。他们觉得这是一个很好的想法,应该自己在Market上发布自己的官方程序。于是,他们干了这样的事情来清除竞争对手。他们直接向Google举报,说其它程序没有得到他们的授权。一次举报,竞争对手全部清干净了,于是他们的官方程序上线了。
这一次,得到了一个更加深刻的教训:
1. 不要过于依赖第三方资源。依赖第三方资源或者网站的名气,的确可能帮助你的程序受到很多关注,代价也同样存在,一旦人家开始动手举报,你连还手的机会都没有。
2. 不要选错第三方资源。很多的服务提供商是不开放的,尽管他们没有明确说明。同时还有很多服务提供商是充分开放的,比如Twitter就是一个非常开放的例子。选错了第三方资源,结果一样会失败。
因此,这里又多了一个创意过滤的条件:
是否依赖于第三方资源? 如果是,请尽快绕道离开,因为很难靠这个想法走太远。
胡乱模仿的失败
由于才疏学浅和关注面单一,想法总会有用完的时候。在尝试了很多自己的想法之后,很多人都会有想法来借鉴或者说抄袭App Store上排名靠前的程序。
但是,以我的经验和分析来看,这条路基本上不可行。
有以下几个方面的原因:
1. 画虎不成反类犬。如果是在人家创意上进行的功能改进,你还可能有一定的突破和机会。如果仅仅是抄袭,由于平台的不同,Android的控件和iPhone的程序控件相差太远,哪怕做出来程序类似,操作体验和程序的精致程度也和iPhone上程序相差甚远,往往就成为画虎不成反类犬。
2. 版权问题。老外的版权意识非常强,不仅仅是原作者非常关心,用户也很敏感。如果侥幸程序排到了前列,不仅会把原作者招惹过来,用户还会出来举报。一旦Google收到了举报邮件,基本上是杀无赦。反倒是偷鸡不成蚀把米。
因此,创意过滤中又多了一个条件:
创意是否有版权争议?如果是,尽快停止。失败只是时间的问题。
其他
总的来说,在我的探索过程中,成功的少,而失败的太多太多。在与Google打交道的过程中,依然有很多失败的教训可供分享。
1. Don’t do evil。美国人做事的方式非常直接,同时会默认你是善意的。对于Google来说,尤其如此。因此,在我尝试过的程序中,你可以任意发布你的程序到Google Market。但是,如果涉及到版权纠纷,不管是网站的所有者、原程序的开发者还是其它任何一种类型的版权纠纷,一旦举报到Google,轻者下架单个程序,重者封禁整个账号,并且下架所有程序。也就是说,一旦受到处罚,你就别想翻身了。因此,Don’t do evil。
2. Google的审查底线。尽管Google不做审查,但除了和版权争议相关的程序之外,哪怕是你自己的程序,依然有如下的禁区是不能碰的:
a. 不要使用任何Google相关的名义。程序名、开发者名都不能涉及到Google或者看起来类似Google的名称,否则Google不会予以通过。
b. 不要违反任何Google的开发者协议。需要仔细阅读Google的开发者协议,在不同时候Google的开发者协议会经常更新。因此,只要违反了任何Google开发者协议,当Google处罚到你的时候,基本上没有申辩机会。因此,务必要小心。
总结
在我开发的经验过程中,成功的经验不多,而失败的教训无数。哪怕如此,我坚信在移动互联网领域,依然存在这样或者那样的机会。也许不经意间你的一个创意就得到了用户的热捧,有幸跑到排行榜的前列,但是这需要足够多的精力和耐性来打磨你的产品,才不至于昙花一现。同时,也不能得意忘形,说不好,就会有各种各样的可能导致你失去优势。因此,移动领域的确是一个新的机会,但绝对不是一个能够随随便便抓住的机会。希望我的失败教训能够帮助到开发者,以此为鉴。
作者简介:刘铁锋,曾供职于微软亚洲研究院搜索技术中心,目前从事移动设备软件相关开发工作,关注Android、iPhone等相关开发技术以及App Store、Android Market等业界应用商店进展。
(本文来自《程序员》杂志10年05期)
《程序员》10年7月刊精彩内容预告:http://www.programmer.com.cn/3484/
《程序员》订阅:http://book.csdn.net/programmer/
-------------------------------------------------------------------------------------------------
最新有点忙,先转载了~~
16 Useful Mathematical Formulas In ActionScript 3
From http://ntt.cc/2010/07/06/16-useful-mathematical-formulas-in-actionscript-3.html
1. Distance Between Two Points
dx = x2 – x1; dy = y2 – y1; dist = Math.sqrt(dx*dx + dy*dy);
2. Inching Formulas
sprite.x += (targetX - sprite.x) * easing;//easing: inching coefficient sprite.y += (targetY - sprite.y) * easing;
3. Elastic Formulas
vx += (targetX - sprite.x) * spring; //spring: elastic coefficient vy += (targetY - sprite.y) * spring; sprite.x += (vx *= friction); //friction: friction force sprite.y += (vy *= friction);
4. Flexible Partial Shifts Formulas
var dx:Number = sprite.x - fixedX; var dy:Number = sprite.y - fixedY; var angle:Number = Math.atan2(dy, dx); var targetX:Number = fixedX + Math.cos(angle) * springLength; var targetY:Number = fixedX + Math.sin(angle) * springLength;
5. Rotation With Mouse Formulas
dx = mouseX - sprite.x; dy = mouseY - sprite.y; sprite.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
6. Waveform Formulas
public function onEnterFrame1(event:Event):void {
ball.y=centerScale+Math.sin(angle)*range;
angle+=speed;
}
7. Heartthrob Formulas
public function onEnterFrame1(event:Event):void {
ball.scaleX=centerScale+Math.sin(angle)*range;
ball.scaleY=centerScale+Math.sin(angle)*range;
angle+=speed;
}
8. Circle Rotation Formulas
public function onEnterFrame(event:Event):void {
ball.x=centerX+Math.cos(angle)*radius;
ball.y=centerY+Math.sin(angle)*radius;
angle+=speed;
}
9. Get Circle Area
public function getArea():Number
{
// The formula is Pi times the radius squared.
return Math.PI * Math.pow((width / 2), 2);
}
10. Get Circumference Ratio
public function getCircumference():Number
{
// The formula is Pi times the diameter.
return Math.PI * width;
}
11. Elliptic Rotation Formulas
public function onEnterFrame(event:Event):void {
ball.x=centerX+Math.cos(angle)*radiusX;
ball.y=centerY+Math.sin(angle)*radiusY;
angle+=speed;
}
12. Color operations
var t:uint=0×77ff8877 var s:uint=0xff000000 var h:uint=t&s var m:uint=h>>>24 trace(m);
13. Hex to Decimal
trace(hexValue);
14. Decimal to Hex
decimalValue.toString(16);
15. Pick Up Color
red = color24 >> 16; green = color24 >> 8 & 0xFF; blue = color24 & 0xFF; alpha = color32 >> 24; red = color32 >> 16 & 0xFF; green = color32 >> 8 & 0xFF; blue = color232 & 0xFF;
16. Color Bit Arithmetic
color24 = red << 16 | green << 8 | blue; color32 = alpha << 24 | red << 16 | green << 8 | blue;
Admob-Mobile advertising and the iPhone
From http://blog.admob.com/2010/06/09/mobile-advertising-and-the-iphone/
Apple proposed new developer terms on Monday that, if enforced as written, would prohibit app developers from using AdMob and Google’s advertising solutions on the iPhone. These advertising related terms both target companies with competitive mobile technologies (such as Google), as well as any company whose primary business is not serving mobile ads. This change threatens to decrease – or even eliminate – revenue that helps to support tens of thousands of developers. The terms hurt both large and small developers by severely limiting their choice of how best to make money. And because advertising funds a huge number of free and low cost apps, these terms are bad for consumers as well.
Let’s be clear. This change is not in the best interests of users or developers. In the history of technology and innovation, it’s clear that competition delivers the best outcome. Artificial barriers to competition hurt users and developers and, in the long run, stall technological progress.
Since I started AdMob in 2006, I have watched competition in mobile advertising help drive incredible growth and innovation in the overall ecosystem. We’ve worked to help developers make money, regardless of platform – iPhone, Android, Palm Pre, Blackberry, Windows, and others. In the past four years, AdMob has helped tens of thousands of developers make money and build real businesses across multiple operating systems.
I’ve personally worked with many iPhone app developers around the world, including one who created a fun and simple game in the early days of the App Store. He built the app because he was interested in the challenge. He built this single app into a multi-million dollar advertising revenue stream with AdMob, hired a whole team, and turned a hobby into a real business.
We see these stories all the time. We want to help make more of them, so we’ll be speaking to Apple to express our concerns about the impact of these terms.
Omar
-----------------------------------------------------------------------------
应该要被告垄断了吧,水果,越来越专制了。