11.11.添加视图States到Flash组件

11.11.1. 问题
我想使用Flash 组件作为states。
11.11.2. 解决办法
在UIMovieClip 或ContainerMovieClip 实例内提供帧标签作为states。
11.11.3. 讨论
首先创建将在Flex 应用程序中实例化的类。在Flex 程序中如果没有添加子对象则这个类必须扩展自UIMovieClip 类,否则需扩展自ContainerMovieClip 类,例如:
+展开
-ActionScript
package{
import flash.text.TextField;
import mx.flash.ContainerMovieClip;
public class FlashAssetClass extends ContainerMovieClip{
private var txt:TextField;
public function FlashAssetClass() {
txt = new TextField();
addChild(txt);
txt.text = "INIT";
super();
}
override public function set
currentState(value:String):void {
trace(" set current state ");
super.currentState = value;
txt.text = value;
}
override public function gotoAndStop(frame:Object,
scene:String=null):void {
trace(" go to and stop ");
txt.text = String(frame);
super.gotoAndStop(frame, scene);
}}
}

currentState 和gotoAndStop 方法被重写,这样当他们改变和TextField 被添加时两个方法都能输出信息。Figure 11-1 清楚显示多个Flash 帧,标记为First, Second, 和Third,这些在Flex程序里将被作为states。

Figure 11-1. Creating distinct frames within the Flash IDE

+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="400creationComplete="createComp()">

<mx:Script>
<![CDATA[
import mx.controls.Label;
import FlashAssetClass;
private var classInst:FlashAssetClass;
private function createComp():void {
classInst = new FlashAssetClass();
rawChildren.addChild(classInst);
invalidateDisplayList();
}

]]>
</mx:Script>
<mx:Button click="classInst.currentState='First';"
label="Firsty="300"/>

<mx:Button click="classInst.currentState='Second';"
label="Firsty="330"/>

<mx:Button click="classInst.currentState='Third';"
label="Firsty="360"/>

</mx:Canvas>

注意要改变FlashAssetClass 对象的state,你只要设置下currentState 属性即可,和一般的组件差不多。

当state 改变时,ContainerMovieClip 类默认下调用gotoAndStop 方法,停止帧回放。如果你要设置currentState 来播放指定的动画,你可以重写currentState setter 去调用gotoAndPlay 方法,这样将不能停止帧回放,例如:
+展开
-ActionScript
override public function set currentState(value:String):void {
trace(" set current state ");
//super.currentState = value;
gotoAndPlay(value);
txt.text = value;

加支付宝好友偷能量挖...


评论(0)网络
阅读(94)喜欢(0)flash/flex/fcs/AIR