2012-02-09 40 views
0

我创建的自定义定时器组件,基本上呈现一个圆扇形,具有默认开始角度(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:值不是函数..

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

谢谢。

回答

0

Animate#target属性不会将字符串值评估为对象ID。你有目标元素结合,而不是(或者它会尝试找物业endAngle对String "arc",这将引发你得到错误):

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

注意你的版本和我之间的唯一区别是花括号{}

+0

谢谢,我确实设法最终找到问题:) – 2012-02-09 12:41:40