FLEX利用CSS传递数据

发现可以利用CSS来传递数据,莫不是我火星了?
点击查看DEMO
下面说一下思路:
将需要的数据写入到CSS样式表中,编译成SWF文件,供FLEX程序调用。例如,下面是给一个Canvas定义样式:
[code]
/* CSS file */
.MyCanvasStyle {
borderStyle: “solid”;
borderColor: #FF6600;
backgroundColor: #FF6600;
backgroundAlpha: 0.2;
/* 自定义属性 */
textInTheCSS: “Hello, World!”;
imageURLInTheCSS: “Apple_03.png”;
imageInTheCSS: Embed(“Apple_03.png”);
}
[/code]
前四个属性是正常的样式设置,后面三个就是自定义的了。
textInTheCSS是示例中使用的文本
imageURLInTheCSS是示例中要加载的图片路径
imageInTheCSS是示例中嵌入的图片对象
接下来在主程序中加入一个Canvas实例:

指定其styleName为自定义样式名”MyCanvasStyle”
接着再加入一个按钮,注册点击事件:
private function clickEvent(event:MouseEvent):void
{
var styleI:IEventDispatcher = StyleManager.loadStyleDeclarations(“Style.swf”);
styleI.addEventListener(StyleEvent.ERROR, loadError);
styleI.addEventListener(StyleEvent.COMPLETE, loadComplete);
}

激活此事件后,注册样式监听并开始加载样式
当样式文件加载成功后调用事件:

private function loadComplete(event:StyleEvent):void
{
infoLabel.text = styleCanvas.getStyle(“textInTheCSS”);
styleImg.source = styleCanvas.getStyle(“imageInTheCSS”);
styleImg0.source = styleCanvas.getStyle(“imageURLInTheCSS”);
}

上面事件处理中,通过getStyle来获得此实例的样式数据。
详细请见:
源代码
个人认为当更换样式时如果不方便再开一个线程访问服务端得到样式的其他配置数据(例如使用AS动态控制样式),就可以用这个来传递一些和样式有关的数据。
测试环境:FLEX 2 (Hotfix 2), flashplayer version:9.0.47.0, IE 6.0
以上~~~
P.S. 突然就感冒了,今天开始咽痛,流鼻涕,头痛,真是难受啊,现在说话都困难了,希望快些好

Adobe AIR update for Flash CS3 Professional

打开MXNA,发现全是“Adobe AIR update for Flash CS3 Professional Beta 1”
原来是ADOBE发布了FOR FLASH CS3 的AIR支持包,可以使用FLASH CS3来制作AIR程序了,
的确值得关注,真是个好消息
正在下载中…
相关信息:
http://labs.adobe.com/wiki/index.php/AIR:Flash_CS3_Professional_Update
页底有使用文档

AOBO-音乐盒-心得

今天推荐一个音乐网站 网络音乐盒——Aobo音乐

代言人,小Yo

全站清新自然,使用流程简单明了,易于上手,用户很快就能建立属于自己的专辑。

用户后台音乐盒使用了FLEX制作,提高用户操作体验。
目前网站还未进行推广,后台音乐盒还有很多功能要完善,UI也在改进中~~~
国内这样的FLEX应用不是很多,应该算是先行者吧
我也会继续提升FLEX技术,使音乐盒功能更强大,更精美,当然离不开其他同事共同协作
今天就写这么多,今后会在此篇日志中继续跟踪报导FLEX播放器的进度
好了,如果感兴趣的话,来体验一下吧:

更换首页

之前明儿提到原首页的Flash会引起很多人的误会,周日便花了些时间做了个新首页,来替换原[color=Blue]怪异的Flash导航。时间不多,就做了个简单的~~~
这次也没有忘记Flash(这辈子是离不开了),用Flash来做为静态背景,里面使用了两个含滤镜的矩形叠加,产生光晕效果。
中间使用多个DIV来承载图片和文字。
将Silverlight和Flashplayer的插件下载地址放到了页面上,虽然现在主攻Flash/FLEX,但以后还会研究下SL的。
难点就是透明PNG图片的加载,FIREFOX支持PNG的ALPHA通道显示,IE6却不行(还好IE7支持),只好使用CSS滤镜来加载,这样会产生一个BUG:使用了滤镜的DIV,内部超链接失效!
网上说可以改变style的position属性来解决这问题,但是不起作用。
最后又新加了几个DIV浮动于PNG图片上,问题总算解决掉了。
看来离开了Flash来做HTML相关的东东还是有些吃力的,不知道的属性和方法太多了 -_-!
但是有Google和Baidu等帮手,我想只要想法切合实际,还是能做到的~~~
首页图如下:

如何获取国际标准时间

为了制作奥运倒计时,得想个办法获得到国际标准时间。
首先想到的便是Webservices,通用,易用。
但是Flash CS3并没有提供Webservices组件。于是使用了Roading的《flash9/flash cs3(as3)通过soap访问Web Services》。
好了,方法有了,那么Service源呢,这个变难了,找了几个提供Webservices的网站
如:
http://www.webservicex.net/
http://www.webservices.org/
但都未找到这项服务。
继续上网冲浪…
得到了《获取Nist的美国官方标准时间的解决办法》
作者用的是C#实现的,仔细看了下,用AS3制作貌似差不多。
他使用的是http://nist.time.gov/timezone.cgi?UTC/s/0先得到标准时间,然后转为北京八区时间。
实际上有更容易的方法,就是将地址中的0换成8,就是东八区的标准时间了,也就是:
http://nist.time.gov/timezone.cgi?UTC/s/8
部分代码:
[code]
private function getTheTime():void
{
var request:URLRequest = new URLRequest(“http://nist.time.gov/timezone.cgi?UTC/s/8[color=Blue]?rnd=”+Math.random());
request.contentType = “text/xml”;
request.method = URLRequestMethod.POST;
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadComplete);
try
{
loader.load(request);
}
catch (error:Error)
{
trace(“Load Error!”);
}
}
private function loadComplete(event:Event):void
{
var result:String = String(loader.data);
trace(result);
}
[/code]
代码中的[color=Blue]rnd=”+Math.random()是用来防止Flash读取缓存,得不到最新数据
loadComplete方法中的result就是得到的网页源码,通过字串匹配就可得到时间字符串了.
OK,回过头来接着研究Webservices。找到了http://www.worldtimeserver.com。
(http://www.worldtimeserver.com/current_time_in_CN.aspx也可以访问这个页,使用上面的方法提取出北京时间)
使用Roading的方法:
[code]
private function getTheTime2():void
{
var soap:Namespace = new Namespace(“http://schemas.xmlsoap.org/soap/envelope/”);
var req:URLRequest = new URLRequest(“http://www.worldtimeserver.com/wtsservice/localtime.asmx?op=GetLocalDateTimeString”);
req.method = URLRequestMethod.POST;
req.requestHeaders.push(new URLRequestHeader(“Content-Type”, “text/xml;charset=utf-8”));
req.requestHeaders.push(new URLRequestHeader(“SOAPAction”, “http://worldtimeserver/wtsservice/localtime/GetLocalDateTimeString”));
var rXML:XML =

;
rXML.soap::Body.appendChild(
[color=Blue]
用户名
密码
US-NY

);
req.data = rXML;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(“ioError”, ioSOAPError);
loader.addEventListener(Event.COMPLETE, SOAPLoaded);
loader.load(req);
}
private […]

北京2008奥运会 倒计时Flash

看到了AW的倒计时插件,偶也心里痒痒,起手做了两个。界面和AW的基本相同。
只是看到他说考虑到网络连接接入以及程序的复杂度,因此没有取标准的北京时间
偶想要把这部分完善一下。
同步服务器使用的是time.gov和worldtimeserver.com,time.gov最优,如果获取失败会使用第二个服务器。若两者都失败,则使用本机时间.
具体方法见:[color=Blue]《如何获取国际标准时间》
效果图片如下(部分图片来源于http://www.beijing2008.cn):
小型:

中型:

UTCTime.swf
参数设置

说明:
timer,更换图片的时间间隔,范围大于5的整数,单位为秒。本例中为10秒,若不想更换图片则将timer=10参数去掉
photo,显示哪幅图片 范围1~5的整数。本例为加载第1幅图片,若不设置此值,则默认为1
UTCTimeBlue.swf
参数设置

说明:
b,亮度 范围: -100~100整数 默认为0
c,对比度 范围: -100~100整数 默认为0
s,饱合度 范围: -100~100整数 默认为0
h,色相 范围: -180~180整数 默认为0
auto,启用后每次加载使用随机色彩,数值1时表示启用,当启用时前面的h值无效
文件下载: 点击下载此文件
P.S. 由于北京奥运图标不能随意使用,使用了其他体育图标来代替,这些图标均来自于互联网,若侵犯了您的权益,请联系本人,本人立即清除相关图标并致歉。
关于北京奥运图标的使用请参见:
[color=Blue]北京市奥林匹克知识产权保护规定
附:
最近大家都想源文件更改成适合自己用的.把文件压了一下传上来:
点击下载此文件

ASZip 0.1

bytearray.org又推出新作:ASZip压缩类
使用原生gzip算法来做的,作者表示之后还会增加其他的压缩算法
使用addDirectory方法来增加文件夹
使用addFile方法来增加文件(二进制编码文件,如图片,字节码文本流)
附例使用了PHP作为生成文件的中转。
详细见(使用方法及源文件):http://www.bytearray.org/?p=105
附:
以前也提到过有解压类FZIP,地址:http://codeazur.com.br/lab/fzip/
有机会的话,这两个可以配合起来用

Image的width, contentWidth ,content.width区别

原文:http://ricoonflex.wordpress.com/tag/flex/
1.width是Image loader的宽度,并不是加载的图片的。如果此属性未设置,则自适应加载图片的宽度。
自适应并不是在图片complete事件中完成,而是在updateComplete事件(晚于complete事件触发);
2.contentWidth是当加载图片形变后的宽度。如果图片未形变过,则不会得到正确的值,你会得到原始宽度而不是形变后的值。得等到Image control的updateComplete事件触发后才能得到正确的值。
3.content.width是与形变无关的加载图片的宽度。当complete事件触发后可以立即得到这个值。要注意,content就是加载的图片对象
补充:
今天才发现blogspot可以访问了,wordpress也能访问了,希望不是一时的解封
再推荐一下:对于FLEX/AIR 开发者十个很有价值的BLOG

怀旧Flash

今天突然想起了很久前看过的一部flash,上网狂翻,终于被我找到了。
就是红尘制作的MTV——潘蓉-《飞》
第一次看到这个已经是N年前的事了,那是接触flash的第二年了。
其实引领我进军flash的是小小大师。在一次上机课时深深的被他的打斗动画吸引住了,感觉flash这东东可玩性很高。那时候就已经是flash5了,紧接着flash mx就问世了,可编程性大大的提高,对于我这个搞计算机的就更爽了。但平时功课较多,并没有多少时间来学习。直到假期才有更多的时间来研究。
那时候天天逛闪吧和闪客帝国等flash社区。国内同时浮现很多闪客高手,除了小小外,还有林℃、歪马秀、老蒋、B&T、思妙、拾荒(排名不分先后)等,贡献了一大批精彩作品,当时应该是国内flash的鼎盛时期,同时flash website也大放异彩,印象最深的是龙城闪客的站(已经改版),大赞啊~~~ 国外的如2advanced还有neostream(现在中央电影频道的电影报道部分场景好像就是模仿的这个)。
目前国内的闪客高手们大部分都走上了商业化的道路,新作品很少能在网上看到了。
之后FLASH MX 2004,FLASH 8,FLASH 9 ALPHA,FLASH CS3…
flash慢慢的向编程方向靠拢了,ActionScript也健壮起来了。
晕,扯了一大堆没用的,马上给出flash的地址:
Flash动画在线播放
如果觉得好,可以到下面页下载音源:
http://mtv.flash8.net/download.htm