Flex中Container的data属性绑定

一直在玩AsWing,好久都没碰Flex,最近由于工作需要又用上了,今天碰到个问题

要用到一个TileList组件,并且自定义itemRenderer,itemRenderer中的数据我就想通过dataProvider来提供数据绑定,下面是TileList的部分代码

<mx:TileList xmlns:mx="http://www.adobe.com/2006/mxml" width="100%"
			dataProvider="{items}"
			itemRenderer="CustomItemRender">

items 是一个 ArrayCollection,里面放 itemRenderer的数据绑定对象,在 CustomItemRender中通过 Containerdata 属性得到绑定对象

现在需要写一个ItemModel 类,它的实例会放到items中,作为itemRenderer 的绑定数据,即itemRenderer中的data属性就是ItemModel的实例引用
ItemModel的部分代码

[Bindable]
public class ItemModel extends EventDispatcher {
	public var name:String;
}

然后是 CustomItemRender.mxml
注意我在绑定 Label text的时候用了 (data as ItemModel).name

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Label text="{(data as ItemModel ).name}" />
</mx:VBox>

测试的时候,运行是没啥问题,往items里添加new ItemModel() 的时候CustomItemRender中的Label正确显示了ItemModel中的name属性,但是控制台输出了

warning: unable to bind to property ‘name’ on class ‘CustomItemRender’

绑定不了?? 我尝试在运行时修改ItemModel实例的name属性,但CustomItemRender中的Label不会改变……

哪里错了?? 围绕这个问题我断断续续搞了一天…. 试了各种办法后都没搞定
不过就在刚才,我把CustomItemRender中的

<mx:Label text="{(data as ItemModel).name}" />

改成

<mx:Label text="{data.name}" />

这样就行了….. – -
我只是想加个as ItemModel 可以有代码提示,并且还是为了以后的编程中,能确保data的数据类型

Yupoo Flash Browser简单更新

业余时间比较少,人也比较懒 ,就加了loading提示和原图预览功能

预览地址 : http://harryxu.cn/demo/yfbDemo2.swf
Yupoo测试帐号: iceorange (随便找的)
源代码版本库地址 http://harryxu.googlecode.com/svn/trunk/yupooflashbrowser/ 可以通过svn客户端取出

现在这个版本已经基本达到我最初想要的功能了,但是决定持续的完善这个程序。

计划下一次加入的功能
UI方面:
增强连接复制功能,比如生成html链接,ubb代码等…
加入分页,现在这个只显示前100张 – -
增强搜索,多标签,关键字搜索等…
其他,细节,用户体验方面的改进等…. & 没想好的

API方面
目前除了Yupoo还准备支持google的 picasawebflickr,可 能都会自己写API – -
至于什么时候开工,就比较难说料,在现在程序的基础上再继续写下去是不行了,估计要全部重构
完工更是不知道要等到猴年马月 :twisted:

俺也吃上苹果了,哈哈

搞了张 Mac OS X 的安装光盘(for x86),在笔记本上装了一下,哈哈,基本顺利,现在俺的电脑里叉屁和苹果共存了,嘿嘿
看截图oh :twisted:

哈哈,虽然装上了,不过还有些小问题搞不定,无线网卡8能用了,只能拖个尾巴上网,声音也有问题,耳机插上没用,只有电脑自带的喇叭会叫 :evil:

不过总算是体验到水果系统了,very帅滴,但是毕竟这些年都是用win,要完全脱离还是不太可能,慢慢玩吧,哪天吧水果玩转了,就把叉屁赶走,哈哈。

关于Flex Builder3 Beta2 中得到非debug版的swf

在Flex Builder3 Beta2 中,自动编译后得到的swf,在bin目录中只有一个,没有了以前那个带”-debug”后缀用于debug的swf,而现在生成的swf就是用于debug的swf文件,所以体积会比较大,并且如果在安装了debug版本的flashplayer的浏览器中运行,会弹出一个连接到调试主机的窗口。
具体原因可以参见这篇文章 A Very Important Change From Flex Builder 2 To Flex Builder 3

如果要生成一个发布版的swf,那么就是在flexbuilder的菜单栏中点 Project -> Export Release Version 然后选择相应的Project和Appliction 文件,点Finish后,就会在项目中生成一个bin-release文件夹,里面就是正常的发布版swf文件了

准备写一个 Yupoo Flash Browser

平时一直用Yupoo提供的照片分享服务存放拍的照片或一些图片,使用此类图片服务的人很多都会将图片外链到自己的网页中
但是Yupoo上要复制一个图片的地址要点击好几次链接才能到复制图片外链地址的页面,少的时候还好,要是需要复制很多图片的地址,操作起来不免有些麻烦,所幸Yupoo提供了web service开发接口,最近拍了不少照片,想发到自己的论坛上,由于找链接太麻烦,本想搞一个简单的flash界面来快速的复制链接,后来写着写着,发现等于是要先写一个Yupoo的开发框架,花了不少时间。
现在发觉如果用AS3写一个Flash界面的Yupoo图片浏览器还是挺实用的,所以准备写一个完善一点的程序,也算是复习AS3了,呵呵,好久没用,基本上忘的差不多了…..

下面是一个Demo,基本没啥功能,只要在用户名中输入你的Yupoo用户名,点刷新,即可显示图片,鼠标移到图片上后出现的按钮条,就是用于快速复制图片连接的功能了,以后将会继续完善该程序,比如,分页,loading效果,放大图片,等等等等细节方面
嘿嘿,UI界面当然是用最牛的AsWing啦,hoho

P.S. 可能会有部分照片无法载入,这是因为Yupoo某几个照片服务器目录中还未加入供flash跨域访问的策略文件,只要他们那边加上就会好的 :cool:

[kml_flashembed movie="http://harryxu.cn/demo/yfbDemo1.swf" height="500" width="500" /]

由于功能不全,并且代码都比较混乱,所以暂时不提供源代码…