FLEX List组件拖拽时数据重复

学习FLEX过程中又碰到问题了。
例如有A、B两个List组件。 将A中的某项多次拖到B中后,发现这些项并不是作为新生成项加到B的dataProvider中.我在下例中给接收数据的List组件数据源加了个监听。
当数据更改后会在每项前加个序号
看下例:
Flash动画在线播放
点击查看MXML文件
若将左列表同一项多次拖至右边列表中,可以看到输出文本显示的是列表中相邻两项相同(序号也相同)
这里用的是“===”符号来比较的。说明默认拖动列表的数据源是不会产生新项,具体原因没有研究,有知道的大虾指点下下 呵呵
最后在FLEX DOC TEAM找到了解决方法:就是自定义dragDrop事件
MXML文件及自定义事件:
[code]
private function dragDropEvent(event:DragEvent):void {
//检测数据结构
if (event.dragSource.hasFormat(“items”)){
//取消默认事件处理
event.preventDefault();
event.currentTarget.hideDropFeedback(event);
//获取拖拽接收对象
var dropTarget:List=List(event.currentTarget);
//获取拖拽对象数据
var itemsArray:Array = event.dragSource.dataForFormat(“items”) as Array;
//获取拖拽对象数据第一项
var tempItem:Object = {label: itemsArray[0].label, data: itemsArray[0].data};
//获取插入位置
var dropLoc:int = dropTarget.calculateDropIndex(event);
//插入项
IList(dropTarget.dataProvider).addItemAt(tempItem, dropLoc);
}
}
[/code]
更改过的实例如下:
Flash动画在线播放
点击查看MXML文件
实例下载
参考:[color=Black]FLEX DOC TEAM DRAGDrop PDF文档及实例
http://blogs.adobe.com/flexdoc/2007/02/drag_and_drop_documentation_up.html

FLEX Module 模块高宽百分比设置

最近用到了模块部分,开始研究
谁料昨天卡在了模块高宽设置上一个下午,找了些资料,解决了.
问题:
当模块设置width及height为100%时,加载到父级容器后会发现模块并不能自动填充,即使ModuleLoader的width和height均设置为100%
若在模块中只加入Canvas测试,发现加载后其高宽值均为0.
解决:
(方法1)直接在模块参数中加入percentWidth=”100″ percentHeight=”100″
例:

(方法2)在模块加载完成后设置模块percentWidth,percentHeight属性值为100
例子见源文件
部分源码说明:
设置ModuleLoader高宽为适应100%并注册ready,resize,error事件

ModuleLoader的Ready事件:
重设模块的percentWidth和percentHeight.如果模块按方法1进行设置后,这两个可以不设置
private function readyModule(event:ModuleEvent):void{
var tmpModule:ModuleLoader = event.target as ModuleLoader;
var Mchild:* = tmpModule.child;
Mchild.percentWidth = 100;
Mchild.percentHeight = 100;
}
演示文件及源代码:
Demo(MainApp.swf)
DemoSource(FLEX_Module_Resize.zip)
编译过程
产生类库列表
[color=Blue]mxmlc -link-report=report.xml MainApp.mxml
编译主程序
[color=Blue]mxmlc MainApp.mxml
编译模块
[color=Blue]mxmlc -load-externs=report.xml MyModule.mxml
编译过程原文档:
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=modular_083_4.html
参考资料:http://livedocs.adobe.com/flex/201
P.S.
ADOBE关于模块化开发的例子和文档: http://blogs.adobe.com/flexdoc/modules/
FLEX错误代码WIKI: http://editthis.info/flexerrorcodes/Main_Page
Flash版:http://judahfrangipane.com/errorsearch/ErrorLookup.html

发现几个应用:Vista Aero效果,RichFLV

读书,看报~~~~
Vista Aero Windows in Flex
http://maclema.com/blog/posts/8

效果以假乱真,但是CPU占用量比较大.作者也提到了ENTER_FRAME 事件会占用大量CPU,改进后可能完成整个主题然后开源~~~期待中
更多的FLEX主题见:http://www.scalenine.com/
RichFLV_alpha2.0
http://www.richapps.de/?p=59

已经很完善了,上图绿框中的输出功能很出色
个人感觉不足的就是红框中的时间显示,最好是进行取整
还有就是内存占用量太高了(100多M),不知道APOLLO正式版出来会不会有所改善

当然也发现了BUG:
在进行播放范围锁定时,边界问题

ADOBE部分CS3软件开放试用版

Adobe Dreamweaver® CS3
Adobe Fireworks® CS3
Adobe Flash® CS3 Professional 等大部分都已经提供下载试用
还没有尝过味道的朋友动手吧,呵呵
地址:
http://www.adobe.com/products/#creativesuite_family

FLEX&APPOLO学习-MP3播放器

一个月前开始尝试FLEX和APOLLO,做了这个微型播放器 ^_*
功能简单(音量调节都没有做,嘿嘿)
使用了messenger(Messenger theme by Juan Sanchez)样式。
波形图来自lab.andre-michelle.com
当时一直苦恼着如何隐藏掉APOLLO的窗体,后来发现只要把ApolloApplication改回Application就可以啦
代码写在了一起,比较长。懒得改了。
算是个学习FLEX的起点吧~~~
文件: 点击下载此文件