﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-不做浮躁的人-随笔分类-flex</title><link>http://www.blogjava.net/bjwulin/category/32079.html</link><description>正在行走的人...</description><language>zh-cn</language><lastBuildDate>Thu, 17 Mar 2011 17:04:17 GMT</lastBuildDate><pubDate>Thu, 17 Mar 2011 17:04:17 GMT</pubDate><ttl>60</ttl><item><title>Flex真正实现as3对象和json的相互转换</title><link>http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Thu, 17 Mar 2011 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/346500.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/346500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/346500.html</trackback:ping><description><![CDATA[首先，我不是专门做前端的，用的时候研究下，目前希望将flex的class instance串行化成为Json以及从Json转换成class instance。<br />
<br />
目前已经有比较好的实现，是在as3corelib。代码比较好懂。不过as3corelib只是将json和Object的instance转换，而我的应用中需要转换成具体的class的instance，因此，我hack了代码，扩展好像不容易，很多代码都是private，extends类意义不大。<br />
<br />
1、JsonEncoder类。<br />
将282行修改为：<br />
return "{" + '"className":"' + flash.utils.getQualifiedClassName(o) + '"' + (s.length &gt; 0 ? ',' : '') + s + "}";<br />
增加className，标示这个对象是什么类的。<br />
<br />
2、JsonDecorder类<br />
在235行增加：<br />
if (key == 'className') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var className:String=parseValue().toString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var clazz:Class=getDefinitionByName(className) as Class;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o=new clazz();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[key]=parseValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
运行良好，有两点要注意的是：1、我始终将className放在最前面，2：这些持久类的构造方法不要带参数。<br />
<br />
欢迎转载，请标明来自：<a href="http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html">http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html</a>
<img src ="http://www.blogjava.net/bjwulin/aggbug/346500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2011-03-17 23:08 <a href="http://www.blogjava.net/bjwulin/archive/2011/03/17/346500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LCCS的基本概念</title><link>http://www.blogjava.net/bjwulin/archive/2010/11/20/338522.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Sat, 20 Nov 2010 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/20/338522.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/338522.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/20/338522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/338522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/338522.html</trackback:ping><description><![CDATA[&nbsp;
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">1.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">application</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：应用是基于服务的Rooms的集合管理，应用对所有Rooms设置账单消费的限制以及为新的Room创建提供模板。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">2.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">room</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：room指客户端连接的服务上的一个虚拟位置。在一个Room里面的client能够互相发送和接受数据。可以认为Room就是现实中的会议地点。我们能够在程序中手工建立Room，也可以使用Room Console。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">3.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">Session</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：会话是客户端连接上一个Room，只要连接还存在，那么会话也会存在。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">4.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">application template</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：一个应用模板主要保存Room的配置信息，包括collectionNodes, nodes, configurations, items, 和room settings，Rooms也可以保存为应用程序模板。我们可以通过Room Console或者RoomTemplater Api来建立模板。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">5.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">Collection node</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：处于节点层次中的最高层，它是Room messages的主要目的地。通常来说，共享模型中的模型类，Pod和SharedManager实例化并且自我管理，它们都在Room的根目录下有自己的Collection node。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">6.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">Node</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：Collection node分支为一个或多个nodes。Nodes发布可以存储在服务上的消息项。一般来说，一个Node大致包含和它的Collection node相同的权限和存储，同时也支持消息权限和存储策略、用户角色等个别节点的配置。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">7.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">Provisioning</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：创建一个新的Room以及可选的Room配置，比如所需要的控件和设置等。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">8.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">Templating</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">：保存一个Room的组件，设置以及应用模板的细节信息。这个模板能够用于创建新的Room。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 18pt" class="MsoListParagraph"><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">9.</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">room settings:Room</span><span style="line-height: 150%; font-family: 仿宋; font-size: 14pt">的设置。</span></p>
 <img src ="http://www.blogjava.net/bjwulin/aggbug/338522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-20 09:43 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/20/338522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Text Layout FrameWork增加wordSpacing新属性。</title><link>http://www.blogjava.net/bjwulin/archive/2010/11/17/338250.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Wed, 17 Nov 2010 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/17/338250.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/338250.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/17/338250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/338250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/338250.html</trackback:ping><description><![CDATA[<p>wordSpacing主要用于更好地控制词的空间。如果是非调整性文本，一般是根据字体的字符空间来设置词的空间，不同的字体有不同的空间。<br />
<br />
如果我们要调整文本，wordSpacing主要是段落格式属性，接收三个百分数的数组，第一个定义是希望选定的空间，第二个和第三个分别是最小间距和最大空间。比如缺省设置为：wordSpacing=&#8221;100%,50%,150%&#8221;。</p>
<img src ="http://www.blogjava.net/bjwulin/aggbug/338250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-17 13:44 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/17/338250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex mxmlc编译命令选项</title><link>http://www.blogjava.net/bjwulin/archive/2010/11/12/337912.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Fri, 12 Nov 2010 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/12/337912.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/337912.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/12/337912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/337912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/337912.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近想自己做个可以设置各个swf的编译参数，更好地控制swf生成，因此首先要了解mxmlc的命令用法：&nbsp;                                    Mxmlc参数选项                                    描述                              ...&nbsp;&nbsp;<a href='http://www.blogjava.net/bjwulin/archive/2010/11/12/337912.html'>阅读全文</a><img src ="http://www.blogjava.net/bjwulin/aggbug/337912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-12 14:56 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/12/337912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex应用开发工具新版本 </title><link>http://www.blogjava.net/bjwulin/archive/2010/11/11/337818.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Thu, 11 Nov 2010 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/11/337818.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/337818.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/11/337818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/337818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/337818.html</trackback:ping><description><![CDATA[<p>"hero"是flex sdk&nbsp;4.5的版本。</p>
<p>"Burrito"是flash builder 4.5的版本。</p>
<p>"Panini"是flash catalyst的下一个版本。</p>
<p>"Helios"是eclipse 3.6的版本代号。</p>
<p>hero已经包含了spark的Form,Image,DataGrid的控件，以前的mx的可以考虑迁移了。</p>
<p>hero是以前slide的新名字，flex mobile的架构。用flex
sdk开发mobile，大概有两种方式，第一种就是写纯的as3应用，第二种就是用hero sdk，两种都要基于air2.5 for
android rt。还有另外一种方式，就是Christophe
Coenraets提出的变通方式，大概就是将WindowedApplication改成Application的air。我尝试过，这种方式的开发效
率高，基本上很多flex的组件都可以使用，但是效率确实不是很好，官方也不提倡这么做。个人推荐hero sdk方式。</p>
<p>&nbsp;</p>
<p>Burrito具有以下特色：</p>
<p>1、可以开发mobile和多屏幕应用。</p>
<p>2、加速Flex或者as项目的编码，整个工具易用了不少。</p>
<p>3、提高设计者和开发者的配合。</p>
<p>4、更新平台支持以及提高性能。</p>
<p>5、其它方面的提升。大概两点值得关注，第一个是可以建立spark only的项目，第二个是预览和调试可以直接在flash player中执行，不用html wrapper了。</p>
<p>Burrito只发行一个版本，取消以前的插件版和独立版的概念。要将Burrito集成到eclipse里面，只需要用utilities目录的一个小功能配置到已经存在的eclipse中即可。</p>
<img src ="http://www.blogjava.net/bjwulin/aggbug/337818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-11 16:48 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/11/337818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex mobile开发的一些考虑。</title><link>http://www.blogjava.net/bjwulin/archive/2010/11/11/337817.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Thu, 11 Nov 2010 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/11/337817.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/337817.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/11/337817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/337817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/337817.html</trackback:ping><description><![CDATA[在移动触摸屏上的应用和传统桌面应用以及web 应用在设计上有以下的考虑：<br />
<br />
1、为了更好在触摸屏幕上输入，界面组件必须有更大的点击区域，尤其在像素点密集的手持设备屏幕上。<br />
<br />
2、一些交互动作的方式，比如滚动，都和传统应用有比较大的差别。<br />
<br />
3、由于手持设备的屏幕小，因此界面设计上和传统要有很大的差别，一般建议用在一个展现界面用较少的组件。另外还得考虑手持设备的屏幕大小的不一致性。<br />
<br />
4、尽管手持设备的处理能力越来越强，但是和传统的台式机相比依然有很大的差别。<br />
<br />
5、由于手持设备的内存很有限，所以，应用程序需要仔细考虑如何节约内存，也需要考虑它们会被操作系统在任何时候退出和重启动，需要保存应用的当前状态。<br />
<br />
<img src ="http://www.blogjava.net/bjwulin/aggbug/337817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-11 16:47 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/11/337817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex web Application设置最小高度和宽度。 </title><link>http://www.blogjava.net/bjwulin/archive/2010/11/11/337815.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Thu, 11 Nov 2010 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/11/337815.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/337815.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/11/337815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/337815.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/337815.html</trackback:ping><description><![CDATA[<p>我们希望flex web能够充分利用客户浏览器的内容显示空间，也希望当用户的浏览器内容空间太小的情况下不至于将我们的flex web压缩的难看，因此，我们希望flex web有个minHeight和minwidth。而width和height能够充分适应屏幕。花了几个小时解决，记载下：</p>
<p>1、在swfobject.js中填充代码：</p>
<p>function addResizeEvent(fn) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (typeof win.addEventListener != UNDEF) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; win.addEventListener("resize", fn, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (typeof doc.addEventListener != UNDEF) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc.addEventListener("resize", fn, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (typeof win.attachEvent != UNDEF) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addListener(win, "onresize", fn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (typeof win.onresize == "function") {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var fnOld = win.onresize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; win.onresize = function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fnOld();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fn();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; win.onresize = fn;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>为了用swfobject.addResizeEvent，在swfobject原型定义上增加一行代码：</p>
<p>addResizeEvent: addResizeEvent,</p>
<p><br />
2、修改html template，增加：</p>
<p>　　　　var appSwf=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var minHeight=600;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var minWidth=900;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swfobject.addLoadEvent(function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appSwf=swfobject.getObjectById("${application}");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adjustAppSwfSize();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swfobject.addResizeEvent(function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; adjustAppSwfSize();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //调整Flex app的大小。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function adjustAppSwfSize(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (appSwf!=null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (getBrowserContentWidth()&lt;minWidth){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (appSwf.width!=minWidth){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appSwf.width=minWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (appSwf.width!="100%"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appSwf.width="100%";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (getBrowserContentHeight()&lt;minHeight){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (appSwf.height!=minHeight){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appSwf.height=minHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if (appSwf.height!="100%"){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appSwf.height="100%";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //得到浏览器内容区宽度<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getBrowserContentWidth(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (document.documentElement &amp;&amp; document.documentElement.clientWidth) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.documentElement.clientWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (document.body) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.body.clientWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //得到浏览器内容区高度<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function getBrowserContentHeight(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (document.documentElement &amp;&amp; document.documentElement.clientHeight) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.documentElement.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (document.body) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return document.body.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p><br />
以上代码目前的浏览器都跨了。我很久不写js代码了，生疏了。<br />
</p>
<img src ="http://www.blogjava.net/bjwulin/aggbug/337815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-11 16:46 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/11/337815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hero开发mobile的一些点滴 </title><link>http://www.blogjava.net/bjwulin/archive/2010/11/11/337816.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Thu, 11 Nov 2010 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2010/11/11/337816.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/337816.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2010/11/11/337816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/337816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/337816.html</trackback:ping><description><![CDATA[1、通过设置控件的interactionMode样式值为touch来设置控件的touch-and-throw滚动方式。如果项目使用mobile的主题，那么控件的交互属性会自动设置为touch。<br />
<br />
2、目前这个阶段，只有如下组件进行优化，并且具有mobile主题的皮肤。所以建议目前开发的mobile app使用如下控件：<br />
<table border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <th valign="top">Controls</th>
            <td>Button<br />
            CheckBox<br />
            Image (BitmapImage is also supported)<br />
            Label<br />
            List (supports touch scrolling, includes scroll indicator)<br />
            RadioButton / RadioButtonGroup<br />
            TextArea<br />
            TextInput</td>
        </tr>
        <tr>
            <th valign="top">Layout</th>
            <td>DataGroup<br />
            Group<br />
            HGroup<br />
            Scroller (supports touch scrolling, includes scroll indicator)<br />
            TileGroup<br />
            VGroup</td>
        </tr>
        <tr>
            <th valign="top">Charts</th>
            <td>All (add mx.swc and datavisualization.swc to library path)</td>
        </tr>
    </tbody>
</table>
<br />
<br />
3、hero sdk增加View,ActionBar,ViewNavigator,MobileApplication组件。<br />
<br />
4、View组件：每个View组件都有一个data属性，用于展现在该View上的数据。当用户切换屏幕的方向时，View能够自动根据横向或者纵向的比例调整界面。如果开发过程中采用Flex的标准布局管理器，则建议最好在View中中实现portrait 和 landscape 两种State。<br />
<br />
5、ActionBar：标准的显示在View上的头部控件栏。一般都是包含一个标题和一个或多个按钮。按钮能够使贯穿整个应用的按钮或者是专属于每个view的按钮。<br />
<br />
6、ViewNavigator:用堆栈机制管理ActionBar和Views。当应用启动时，ViewNavigator显示 mobileApplication的firstView指定的View。启动之后，可以通过pushView()将一个新的View显示在界面上，或者通过popView()返回到上一个界面。为了节约内存，在一个时刻，只有一个View放在内存里。其他的都以数据持久的方式保存，当切换到其它界面时，都会根据持久的数据重新初始化View。<br />
<br />
7、MobileApplication：基于该类的应用，可以自动获得ViewNavigator来管理Views。 MobileApplication也针对硬件的返回按钮提供了默认行为，即popView()。当屏幕方向发生改变时，向ViewNavigator和当前View发送方向改变事件。另外，当你的应用退出时，MobileApplication提供一个方式保存你的应用状态和数据，以便于下次启动时直接回复当前视图以及历史视图集合。这个很重要，因为移动操作系统很容终端或者kill你的应用。<br />
<br />
当然，我们也可以直接用Spark application来创建mobile app，而不用View navigator的模式。但是依然建议尽量去使用优化过的mobile主题。<br />
<br />
8、mobile app性能优化：<br />
<br />
8.1：创建ItemRenderer时，使用As3而不要去使用Mxml。因为列表滚动非常耗性能，Hero还提供了 MobileIconItemRenderer，该类可以配置显示一个或两个文本item，一个可选的左边的图标或者图片item，一个可选的右边的装饰器。一般建议扩展这个类来满足新的需求。<br />
<br />
8.2：尽量使用As3或者编译过的FXG图形或者位图作为控件的皮肤，而不是使用mxml或者mxml运行时图形。<br />
<br />
8.3：不建议在mobile app中使用mx控件，尽量使用spark控件，mx:charts已经做过优化，可以在mobile中使用。在mobile中使用mx:charts需要手工加入mx.swc和datavisualization.swc<br />
<br />
8.4：尽量使用Spark的label,TextInput,TextArea，避免使用RichText和RichEditableText.<br />
<img src ="http://www.blogjava.net/bjwulin/aggbug/337816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2010-11-11 16:46 <a href="http://www.blogjava.net/bjwulin/archive/2010/11/11/337816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dto是flex应用系统的最佳实践之一</title><link>http://www.blogjava.net/bjwulin/archive/2008/06/10/206923.html</link><dc:creator>不做浮躁的人</dc:creator><author>不做浮躁的人</author><pubDate>Tue, 10 Jun 2008 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/bjwulin/archive/2008/06/10/206923.html</guid><wfw:comment>http://www.blogjava.net/bjwulin/comments/206923.html</wfw:comment><comments>http://www.blogjava.net/bjwulin/archive/2008/06/10/206923.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bjwulin/comments/commentRss/206923.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bjwulin/services/trackbacks/206923.html</trackback:ping><description><![CDATA[
		<p>1、为每一个java dto类定义一个对等的AS类<br /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">AS:<br />package datasource.dto {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    [RemoteClass(alias="datasource.dto.CustomerDTO")]</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public class CustomerDTO {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        public  var firstName : String;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        public  var birthDate: Date;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    }</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">}</span><br style="COLOR: rgb(128,0,128)" /><br />JAVA:<br /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">public class CustomerDTO {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public String firstName;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public java.util.Date birthDate;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">}    <br /><br />2、让AS的DTO类的所有属性都是绑定的，因此，最好是在类的前面加上绑定的元数据<font color="#000000"><br /></font><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">package datasource.dto {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    [RemoteClass(alias="datasource.dto.CustomerDTO")]</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    [Bindable]</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public class CustomerDTO {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        public  var firstName : String;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        public  var birthDate: Date;</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    }</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">}<br /></span><br />3、为Server和Client的Dto类都设定UUID的属性，便于在表格等集合中排序使用，比如，人员信息中，按性别排序，由于性别是不唯一的数据，因此必须加上性别和UUID的组合排序，在性能上，也会有所提升。<br /><br />4、尽量用getter和setter方法代替Public属性。<br /><br />5、可以考虑做Dto的扩展类来实现一些定制的目的，比如在类里面有个计算列，我们可以扩展一个类：<font color="#000000"><br /></font><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">package datasource.dto {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    [RemoteClass(alias="datasource.dto.CustomerDTO")]</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public class PortfolioItemExtendedDTO extends PortfolioItemDTO</span><br style="COLOR: rgb(128,0,128)" /><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public function get unrealizedGain():Number {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        return lastPrice - costBasis; </span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    }</span><br style="COLOR: rgb(128,0,128)" />   而不是在表格的ItemEditEnd事件来实现相似功能。<br /><br />6、如果存在计算列，可以考虑计算列的绑定。可以写一个无效的setter方法。<br />Bindable(event="propertyChange")]<br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public function get unrealizedGain():Number {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        return lastPrice - costBasis; </span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    }</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    public function set unrealizedGain(value:Number):void {</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">        // Ain't gonna happen, but Flex won't consider Bindable without the setter</span><br style="COLOR: rgb(128,0,128)" /><span style="COLOR: rgb(128,0,128)" z9gy_="0" nztue="0">    }</span><br style="COLOR: rgb(128,0,128)" /><br /><br style="COLOR: rgb(128,0,128)" /><br /></span></p>
<img src ="http://www.blogjava.net/bjwulin/aggbug/206923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bjwulin/" target="_blank">不做浮躁的人</a> 2008-06-10 14:36 <a href="http://www.blogjava.net/bjwulin/archive/2008/06/10/206923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>