代码之家  ›  专栏  ›  技术社区  ›  Marcus Stade Quentin

效果标记内的绑定效果属性不起作用?

  •  0
  • Marcus Stade Quentin  · 技术社区  · 15 年前

    我们要做的是:

    <rollOverEffect>
        <AnimateProperty property="scaleX" toValue="{originalWidth + scaleFactor}" />
    </rollOverEffect>
    


    附录: originalWidth和scaleFactor都是可绑定的。我通过将效果从rollOverEffect标记中移出,给出它和id,然后像这样绑定到它来实现这一点:

    <AnimateProperty id="scaleEffect" property="scaleX" toValue="{originalWidth + scaleFactor}" />
    <MyComponent rollOverEffect="{scaleEffect}" />
    


    附录: 下面的代码强调了这个问题。无论滑块设置为什么,效果的angleTo属性的值将始终设置为滑块初始值设置为的值。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:VBox horizontalCenter="0" verticalCenter="0">
        <mx:Label text="Rotation (mouse over on canvas triggers effect):" />
        <mx:HSlider id="slider" width="200" minimum="0" maximum="360" value="90" />
    
        <mx:Spacer height="50" />
    
        <mx:Canvas borderStyle="solid" borderThickness="1" borderColor="#ff0000" backgroundColor="#0000ff" width="200" height="200">
            <mx:rollOverEffect>
                <mx:Rotate angleTo="{slider.value}" duration="500" />
            </mx:rollOverEffect>
    
            <mx:rollOutEffect>
                <mx:Rotate angleTo="{-slider.value}" duration="500" />
            </mx:rollOutEffect>
        </mx:Canvas>
    </mx:VBox>
    </mx:Application>
    

    将与实际生成预期结果的以下代码进行比较:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Rotate id="rollOver" angleTo="{slider.value}" duration="500" />
    <mx:Rotate id="rollOut" angleTo="{-slider.value}" duration="500" />
    
    <mx:VBox horizontalCenter="0" verticalCenter="0">
        <mx:Label text="Rotation (mouse over on canvas triggers effect):" />
        <mx:HSlider id="slider" width="200" minimum="0" maximum="360" value="90" />
    
        <mx:Spacer height="50" />
    
        <mx:Canvas rollOverEffect="{rollOver}" rollOutEffect="{rollOut}" borderStyle="solid" borderThickness="1" borderColor="#ff0000" backgroundColor="#0000ff" width="200" height="200" />
    </mx:VBox>
    </mx:Application>
    

    所以本质上问题是,为什么绑定在第一个示例中不起作用?没有错误或警告告诉您,也没有我可以在文档中找到任何关于这一点的东西,这可能是一个错误吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   dirkgently    15 年前

    你需要给我们看更多的代码。你能试试下面的代码吗?这有用吗?

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <!-- Simple exemplo to demonstrate the AnimateProperty effect. -->
    
        <mx:Sequence id="animateScaleXUpDown" >
            <mx:AnimateProperty property="scaleX" fromValue="{ns.value}" toValue="{ns.minimum}" duration="1000" />
            <mx:AnimateProperty property="scaleX" fromValue="1.5" toValue="1" duration="1000" />    
        </mx:Sequence>
    
        <mx:Panel title="AnimateProperty Effect Example" width="75%" height="75%" 
            paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
    
            <mx:Text width="100%" color="blue" 
                text="Click on the image to use the AnimateProperty effect with the scaleX property."/>
    
            <mx:Image id="flex" source="http://stackoverflow.com/content/img/stackoverflow-logo.png"
                mouseDownEffect="{animateScaleXUpDown}"/>
            <mx:NumericStepper id="ns" width="62" value=".5" minimum="1" maximum="3" stepSize="0.5" enabled="true"/>
    
        </mx:Panel>
    
    </mx:Application>