AS写的多了, 有时候觉得到了雄狮流泪, 雌狮绝经的空间边缘, 孤立无助, 身边是FB这头病驴 — 不能抛弃他, 还得指望着他拉犁, 他只是一头驴, 你不能把他当成一头狮子.
虽然FlashBuilder已比Flex Builder比更早的IDE更先进, 更牛逼, 但乏力依旧, 最近从3.5升级一个App到4.0, 自家的PackageName有些改变, 于是重构起来非常乏力.
先说电脑配置: AMD 4×3.0GHz, 内存4G.
问题: 在小规模开发时, 流畅, FB也就是吃500M内存, 但在重构时, 尤其AutoBuilding, 要命啊….
因此在重构/开发时要注意:
0. 保持一个正在开发的Application
1. 尽量只引用当前开发的模块, Application里引用太多, 无异于找死.
2. 像个程序员一样写符合规范的代码, 推荐: http://riashanghai.com/node/66
3. 在频繁改动, 保存之前, 取消auto build
对于FB4重构:
Rename PackageName已可以正常工作 – 但偶尔还会有问题, 记得勾选sub Package.
因此如果批量修改PackageName, 不需要像以前一样, 一个个改了, 直接rename packageName.
重构量大时, 可将常用的新的Import存起来, 粘贴进去, ctrl+shift+O重新组织Import, 速度会很快
记得在使用Flex4之前, 看过一篇介绍TextArea自适应高度的文章, 监听Event, 动态改变高度. 很少用TextArea, 也没用过. 在Flex4, 使用Spark界面时, TextArea可设为自动适应.
设置heightInLines = NaN - 如果该属性为 NaN
(默认值),则组件的默认高度由要显示的文本确定。
See: http://tinyurl.com/2ubwrta
但当鼠标在TextArea之上时, 鼠标滚动, 整个Application的scrollbar竟然没反应…猜是没有dispatch event, 于是增加监听函数:
/** 响应TextArea的鼠标滚动事件, 接收到后派发出去, 以便引起外部UI可获得该事件, 并进行响应的滚动. */ protected function onMouseEventWheel(e:MouseEvent):void { dispatchEvent(e); }
妥了.
尚未发现Flex中有可以直接渲染HTML代码的组件, 但可通过服务器端配合实现预览.
原理: Flex(尤指AIR环境), 使用URLLoader发送POST请求, 将要预览的HTML代码发送到服务器端Servlet, 服务器端收到请求后创建临时文件, 将HTML存到临时文件中. Flex端收到URLLoader Complete事件后, 使用navigateToURL navigate到Servlet上(使用GET), Servelet 返回文件内容 —- 在上述过程中, Flex端生成UUID作为代码读写的key.
TinyURL 提供了极其简单易用的网址缩短API. 使用”http://tinyurl.com/api-create.php?url=http://liguoliang.com/“即可获得缩短链接. 这里是使用Flex制作的一个网址缩短小工具:
主要代码供热爱学习的同学们查阅: 主要是HTTPService
/** On short url button.*/ protected function onButtonClick(event:MouseEvent):void { CursorManager.setBusyCursor(); var currentUrlRaw:String = StringUtils.trim(textURLRaw.text); var service:HTTPService = new HTTPService(); service.addEventListener(ResultEvent.RESULT, onExecuteSuccess); service.addEventListener(FaultEvent.FAULT, onExecuteError); service.method = URLRequestMethod.GET; // Like : http://tinyurl.com/api-create.php?url=http://liguoliang.com/ var serviceUrl:String = "http://tinyurl.com/api-create.php?url=" + currentUrlRaw; service.url = encodeURI(serviceUrl); service.resultFormat = HTTPService.RESULT_FORMAT_TEXT; service.send(); } private var lastShortUrl:String; /** on API call success. */ protected function onExecuteSuccess(e:ResultEvent):void { CursorManager.removeBusyCursor(); lastShortUrl = e.result.toString(); textInfo.text = "短网址生成成功:" + lastShortUrl + "(点此复制->)"; buttonCopy.enabled = true; } /** on fault. */ protected function onExecuteError(e:FaultEvent):void { CursorManager.removeBusyCursor(); Alert.show("Error: " + e.toString()); }
See: http://www.richardcastera.com/2009/05/09/creating-a-tinyurl-with-tinyurl-api/
Use: System.setClipboard(lastShortUrl);
直接Call时, 报错:
Error #2176: Certain actions, such as those that display a pop-up window, may only be invoked upon user interaction, for example by a mouse click or button press.
at flash.system::System$/setClipboard()
只好加一个"复制"按钮, 在ButtonHandler中set clipboard – 不友好啊不友好…
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.