使用ActionScript定制状态和转移效果

http://www.actionscript.com/states/srcview/index.html

http://www.actionscript.com/Article/tabid/54/ArticleID/Controlling-Flex-UIComponent-States-in-ActionScript-3-0/Default.aspx

以上分别是原文和代码的链接,作者在这篇里面讨论了使用AS创建程序的必要性,在这里讨论的是一个CUSTOM EFFECT的高级议题

作者还给出了详细的源代码分析真是非常的好啊

package com.actionscript.states
{
import mx.containers.Canvas;
import mx.states.State;
import mx.states.SetProperty;

public class HideScaler extends Canvas {

public function HideScaler() {
super();//调用父类的构造函数
initState();
}

private function initState():void {
var hideState:State = new State();
hideState.name = "hide";//设置其名字对象

//The overrides array is an assortment of various objects used to change specific aspects of a UIComponent's state.

//覆盖数组是各种对象的集合,用来改变UI对象的状态的各个方面(大家可以参照英文)


hideState.overrides.push(new SetProperty(this, "width", 0));

//使用mx.states.SetProperty来改变UI对象的长和宽

//当然还有mx.states.SetEventHandler 和mx.states.SetStyle.


hideState.overrides.push(new SetProperty(this, "height", 0));
states.push(hideState);//最后将新状态压栈以便在必要的时候调用之
}
}
}

以上是第一阶段,这个阶段实现的只是一个没有TWEEN效果的STATE,下面看第二阶段

var transEffect:Parallel = new Parallel(this);

//一个转移效果是一个定义转移效果应为多长,应该作用于某个UICOMPONET以及使用什么样的效果的类(在这个例子中是Resize)

//效果分为并发和顺序的,并发的转移效果同时作用于UICOMPONENT的所有UI对象,而顺序转移效果则一一作用于这些UI对象,其实选什么也不重要。


transEffect.duration = 400;
transEffect.children.push(new Resize(this));

//定义一个转移效果

var stateTransition:Transition = new Transition();
stateTransition.toState = stateTransition.fromState = "*";
stateTransition.effect = transEffect;

//为所有的状态转移设置此转移效果

transitions.push(stateTransition);

//应用转移效果

这里分析的只是若干重要的代码,详细的分析还要看作者的原文档。

你可能感兴趣的:(html,UI,Flex,actionscript)