记得在使用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 – 不友好啊不友好…
一直没用过鼠标状态, 都是在忙的时候disable控制UI, 忙完了再enable. 某天看Flex Test Drive, 看上去很好啊:
但是虽然鼠标忙, 但仍旧可以使用, 因此说看上去很美 —- 所以你还是要对控制UI进行Enable/Disable
设置鼠标忙: CursorManager.setBusyCursor();
重置忙状态: CursorManager.removeBusyCursor();
See API: http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/mx/managers/CursorManager.html
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.