Published by
木炎 at
17:59,
July 28, 2010 in
IT.
Tags: as3, flex.
项目需求,要做一个箭头图表,还要有滑动动画。参考Flex 3 SDK和Google上一位老外的代码,做了个简单的出来,基本满足需求了,以后有兴趣再扩充吧。
箭头图表类似于Flex内置的各种图表,不过简单多了(本想从ChartBase之类的继承,但看到那几个包和众多的类,我无力了),从UIComponent继承而来的,只实现了series,dataProvider,xField,yField等属性,还有showDataEffect用来配合动画。(没有hideDataEffect – -)
滑动动画主要用了scrollRect这个属性,已知有两个bug:有时候箭头的滑动会有跳动的感觉,动画开始时如果前一个动画没运行完,会报错。暂时没找到原因,先不管了。
演示如下,可右键看源代码。
最后,吐一下Firefox的槽,感觉3.6.4增加的插件隔离机制没什么用,插件奔溃fx照样奔溃,而且,更频繁了。类似空对象引用,数组越界(我羞愧),找不到url之类的错误都能引起奔溃。当然,更可能是debug player的缘故。HTML5快点来吧,让flash player见鬼去。
Published by
木炎 at
17:43,
June 29, 2010 in
IT.
Tags: as3, flex.
初学flex时,被里面四处乱飞的括号弄得有点头晕,尤其是一些不同于C,Java中用法的地方。碰到
var ac:ArrayCollection = new ArrayCollection([{name:"foo",no:0},{name:"bar",no:1}]);
这种兄弟仨一起出场的时候更是无措。
仔细翻了翻文档,总结一下,顺便测试下Easy Google Syntax Highlighter插件:
- 小括号( ):nothing new,就两个作用:改变表达式运算顺序,小学生都会的东西;传递函数参数,传统用法
- 大括号{ }:as3 中,两个作用:代码块,还是传统;实例化Object类的对象(实例),如
var obj:Object = {id:0,label:"object",date:"2010.6.22"};
MXML中,用于嵌入内联的as代码或数据绑定(其实数据绑定也可以看作as代码),如
<!-- code block -->
<mx:Button label="click to say hello" click="{mx.controls.Alert.show('hello world')}" />
<!-- data binding -->
<mx:TextInput id="input" x="10" y="10" width="100" />
<mx:Text text="{input.text}" x="200" y="10" />
- 中括号[ ]:as3中,两个作用:初始化数组,这点与C和Java用{ }不一样,很多误读就是这么产生的,如
var arr:Array = ["foo","bar","foobar"];
插入元数据标签(metadata tag)如Bindable,Embed,Effect等,最常见的就是用于绑定的Bindable,如
[Bindable]
private var arr:Array;
又如以下代码在MyComponent组件上定义myClickEvent事件
[Event(name="myClickEvent", type="flash.events.Event")]
public class MyComponent extends UIComponent{
//...
}
在MXML中部分元数据标签可使用<mx:Metadata>标签插入,(绑定用<mx:Binding>)作用与脚本相同,如以下代码定义textSelectedColor的样式
<mx:Metadata>
[Style(name="textSelectedColor",type="Number",format="Color")]
</mx:Metadata>
关于<![CDATA[ ]]>,这里的中括号与as3无关,是XML的标准语法,XML解析器会自动忽略CDATA里的内容,MXML同样遵守这一规则
- 尖括号< >:姑且也算吧,没什么好说的,定义和关闭标签,标记语言(markup language)的身份标志
回头看第一个例子就很简单了,最外层的( )为ArrayCollection的构造函数传递参数,ArrayCollection构造函数的参数为Array数组,这就是[ ]的作用,而该参数数组则包含由{ }实例化的两个对象。