十一 162010
 

好吧,我承认我又2B了,用FileReferenceList读取本地多个文件,遍历FileReferenceList.fileList之后,对每个FileReference对象注册了Event.COMPLETE事件,然后执行FileReference.load()方法,在不使用FileReference的情况下是正常的,使用FireReference.upload方法也是正常的。变量也是全局的,囧了。

贴代码,再测测,如果的确是Bug,提交给Adobe去了:

public var importFileList:FileReferenceList = new FileReferenceList();
public var currentFileReference:FileReference = new FileReference();
protected function btnImport_clickHandler(event:MouseEvent):void
{
var imgFilter:FileFilter = new FileFilter("Image Files (png,jpg,gif)","*.png;*.jpg;*.gif;*.jpeg;");
importFileList.addEventListener(Event.SELECT,fileSelectHandler);
importFileList.browse([imgFilter]);
}
private var fileItrIdx:int = 0;
private var fileList:Array;
public function fileSelectHandler(event:Event):void
{
fileList = importFileList.fileList;
fileItrIdx = 0;
itrFile(fileList,fileItrIdx);
}
public function itrFile(fileList:Array,idx:int):void
{
if(idx<importFileList.fileList.length)
{
//importFileList.fileList[idx].addEventListener(Event.COMPLETE,localFileLoadComplete);
//importFileList.fileList[idx].load();
//trace(importFileList.fileList[idx].data);
//以上的代码愣是执行不成功,以下的正常
 (importFileList.fileList[idx] as FileReference).addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadHandler);
(importFileList.fileList[idx] as FileReference).upload(new URLRequest("uploadimg.php"),"img");
}
}
private function uploadHandler(devent:DataEvent):void
{
trace("!!!!!!!!!!!!");
itrFile(fileList,++fileItrIdx);
}
public function localFileLoadComplete(event:Event):void
{
trace("!!!!!!!!!!!!"+event.currentTarget.data.length);
itrFile(fileList,++fileItrIdx);
}

在air下有替代的方法:使用File

 Posted by at 2:08 下午
102010
 

最近Mochi挺热门的,不管从各大网站的IT频道,还是各个专业的开发者社区(比如天地会),还是各个微博上的我所关注的一些好友中,还有QQ群中,大家都讨论得挺火热的。

1月份,盛大8000千万美刀收购mochi,觉得这玩意儿肯定有戏。

5月份,渐渐收到消息,mochi会有大动作,这手笔相当震撼。

作为开发者来说,我还是相当看好这个平台的:

首先:对于开发者来说非常友好,mochi已经提供了非常完备的api,还会帮助开发者进行用户数据跟踪,产品分销等这些对于开发者来说可能并不擅长的事情。目前,mochi已经拥有了1.4亿的月度活跃用户,这是个非常大的数字了,想想看,自己的作品能被成千上万的用户所使用,是多么有成就感,在淘宝的时候,非常有成就感的就是自己的作品可以被成千上万的用户所使用。同样,相信Mochi能给开发者带来不小的收益。当然,舞台很大,就要看心有多大了。

其次,对于广告主来说,效益我相信也是十分明显的。在Mochi上打广告的起点很低。

再次,对于大众用户来说,统一的积分系统,方便的支付体系,何尝不是福音呢?另外,Mochi的广告并没有影响用户体验,我觉得这个是非常难能可贵的,只在需要的时候出现。

其实我一直很关注手机平台的发展。5月份的时候,入手了Motorola Milestone。虽然之前对Android有过接触,但直到这两个月的切身使用才发现,Android真的不止是想象中那么简单,即使现在还有这样那样的问题,但非常看好Android的发展,5月末的时候,弄到了AIR For Mobile 和SDK,简单地测试了一下AIR For Mobile的性能,总体来说相当不错。这也就意味着,Mochi在Android平台上应该也没有问题,扩展开来,移动支付对于大众来说非常简单方便,这样非常有利于产生效益。

相信有着SNDA的强大资金的投入,mochi现有大平台的支撑,mochi一定会给开发者带来滚滚财源,相信这个是最实际的。

PS:好期待Motorola Milestone 的Android 2.2升级呀。。。

 Posted by at 11:33 下午  Tagged with:
112010
 

今天遇见一件十分诡异的事情,按照标准的程序把字体编译进去,发现”方正少儿简体”愣是无法编译进去,查了点资料,终于搞定了这个问题,原来只是一个编译参数的问题。瀑布汗……

-managers=”flash.fonts.AFEFontManager”

另外,”Flash中文嵌入助手“这个小工具不错:)
关于AS Project编译字体的延伸阅读:

天地会新闻资讯版块有这么一篇:借助Ruby为Flex自动编译字体
Gotoandlearn 的 Learn the best practices method of creating and using external font SWF files using Flash CS4

大脸猫同学的字体嵌入方法连载也很不错,推荐不熟悉的同学阅读

2010/05/24 Update:关于Flex Manager 的那些事儿,请阅读About the font managers

302010
 

好吧,我承认这个很基础,不过也经常被问到。
方法有好多种,载入图片的过程不多说,Loader也成,直接embed也成。
方法一,计算显示范围的宽和高,然后双重循环,一个个addChild。
方法二,Graphics有beginBitmapFill(bitmap:BitmapData, matrix:Matrix=null, repeat:Boolean=true, smooth:Boolean=false):void 这个方法,嘿嘿,repeat方法就是这个用途,然后drawRect一下一个平铺背景就出现了。因此,要多读读API文档!好多靠谱实用的好方法

 Posted by at 11:46 上午
262010
 

好久没写博客了,再不写都要发霉了,不过黑羽更厉害,已经是很久很久很久很久很久没更新了,而且说要更新已经说了很久很久很久很久很久了……呵呵……

好吧,不说别的,GR中发现这个东西真不错,支持40多种的图片格式,不过根据测试,效果其实一般般,PS CS4的PSD格式就打不开,而且不支持GIF动画,这个小囧。总的来说相当不错啦!

官方页面:http://www.zaalabs.com/2010/04/introducing-zaail-40-image-format-support-for-flash/
源码下载:http://zaalabs.com/demo/TestZaaIL/srcview/index.html
实例查看:http://zaalabs.com/demo/TestZaaIL/

支持的格式列表:

Continue reading »

 Posted by at 10:35 上午
182010
 

这个Bug是在上周五发现的,及其及其诡异。
简单说明一下:
使用FB4的新建了一个Flex Library Project。
然后莫名其妙地FB报了:发生了内部构建错误。右键单击以获取更多信息
查看了一下FB的Log,

!ENTRY com.adobe.flexbuilder.project 4 43 2010-01-18 18:14:04.510
!MESSAGE Uncaught exception in compiler
!STACK 0
java.lang.StackOverflowError
at macromedia.asc.parser.Scanner.nexttoken(Scanner.java:427)
at macromedia.asc.parser.Parser.getNextToken(Parser.java:670)
at macromedia.asc.parser.Parser.lookahead(Parser.java:628)
at macromedia.asc.parser.Parser.parseFullPostfixExpressionPrime(Parser.java:2159)
at macromedia.asc.parser.Parser.parseFullPostfixExpressionPrime(Parser.java:2173)

在重启了N遍FB甚至机器之后,意外发现了,这个AS文件的体积竟然达到了183K
用记事本打开后发现了N多以”ggggggggggggggggggg”或者”———————“之类字符填充,很奇怪的是,在FB的IDE中显示却是正常的

这个as文件只能重写了。然后解决,项目正常编译。

FB4 beta 2目前还不怎么稳定,所以用在生产环境下还需细细斟酌。

另外,关于这个Bug很偶然,同时这个as文件涉及到了保密要求, 所以暂时也很难详细说明并提交到Adobe官方。

十一 192009
 

NShen共同翻译的《ActionScript 3.0基础教程》终于出版了!昨天下午样书也到手了。

这本翻译的书陆陆续续弄了快一年,图灵的编辑很用心,赞!

这是一本as3 入门的书,如果对其中的内容或者翻译上的问题请留言:)

 Posted by at 12:19 下午
十一 172009
 

其实这新闻晚上发已经不是新闻了,中午一点多的时候native在天地会已经发了flash player 10.1发布的消息。随后根据ryan的twitter 我也发flash player 10.1和air 2.0 beta发布的消息

新功能很多,天地会的新闻资讯版块已经发了好几条关于这两个可爱的玩意儿的资讯:

这次的消息资讯是国内首发的,最快最新:)

相信在不久的将来一定会是国内最快的RIA资讯信息发源地:)

对了,据称,明天Google 将发布Chrome OS,这个要重点关注!!!

 Posted by at 9:18 下午
172009
 

这个bug,我整整折腾了2两天,目前为止还没找到一个好的解决方案。
好多人都遇到过,包括圣叹KingLongVSky 看来好多人都被这个该死的Bug QJ过了。
普遍的解决方法是使用JS获取FireFox中的Cookie,然后设置URLRequest中的data属性作为post方式传递过去,服务器读取Request对象中的POST的数据(不同的语言处理方式各不相同)进行校验,但是淘宝的校验只能使用Cookie验证,用POST传过去识别不了。而为了一个Flash改动验证系统基本不可能。

设想是使用一个代理页。

Flash通过post方式把cookie的数据传过去,代理页再模拟提交一次。这样开发说会遇到安全问题。遂罢!

至今无解,求解……

———————2009年9月18日 Update-———————

这个问题通过Flash本身解决好像已经基本无望了。

想更改URLRequestHeader因为安全问题,被罢掉。

还有另外一种方法是,当用户的浏览器为非IE时,在Flash的上层覆盖一个HTML的<input type=”file”/>标签,通过HTML的上传机制解决,可非常无奈的是,我的Flash要输入中文,必定使得wmode要为window,所以想要在Flash上层覆盖一个<input type=”file”/>标签 这种方案也被排除了。起初还想到另外一个方案就是通过代码模拟点击一个隐藏的<input type=”file”/>标签,非常郁闷的是,因为安全限制,这个也不可能。

因此,目前来说还没找到一个更好的方法去解决或者绕过这个Bug