如何为自定义图形组件属性设置动画

时间:2012-02-09 11:47:20

标签: actionscript-3 flex animation flex4.5 mxml

我创建了一个自定义计时器组件,它基本上呈现一个圆形扇区,具有默认的起始角度(0)和结束角度:

public class Arc extends FilledElement
{
    private var _endAngle:Number = 0;

    public function Arc()
    {
    }

    public function get endAngle():Number
    {
        return _endAngle;
    }

    public function set endAngle(value:Number):void
    {
        if (_endAngle == value)
            return;

        _endAngle = value;
        invalidateDisplayList();
    }

    // left out the rendering logic, for clarity
}

到目前为止工作正常和花花公子。这是呈现该扇区的代码:

<org:Arc id="arc"
     endAngle="135">
    <org:fill>
        <s:SolidColor color="#FFFF00" />
    </org:fill>
</org:Arc>

但是,我想为endAngle属性设置动画。这是MXML代码,旨在实现这一目标:

<s:Animate id="effect"
       duration="2000"
       target="arc">
    <s:SimpleMotionPath property="endAngle"
            valueFrom="90"
            valueTo="180" />
</s:Animate>

问题是当我播放效果时,我收到此错误: 错误:属性endAngle不是对象弧上的属性或样式:TypeError:错误#1006:value不是函数..

有没有其他人遇到过这个问题,或者更好的是,有没有人知道我做错了什么以及如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

Animate#target属性不会将字符串值计算为对象ID。你必须改为绑定目标元素(或者它会尝试在字符串endAngle上找到属性"arc",这会抛出你得到的错误):

<s:Animate id="effect" duration="2000" target="{arc}">
    <s:SimpleMotionPath property="endAngle" valueFrom="90" valueTo="180" />
</s:Animate>

请注意,您的版本与我的版本之间的唯一区别是花括号{}