我正在尝试将文字从1缩放到5,这是一种放大的外观类型。我正在使用以下代码:
<s:Scale target="myLabel" autoCenterTransform="true"
duration="2000"
scaleYFrom="1" scaleYTo="5" scaleXFrom="1" scaleXTo="5"
>
文字非常严重。因此,我的目标是以大字体拍摄文本标签的快照,将其添加到显示列表,将比例设置为第5,然后将比例设置为1的动画。之后我必须再次设置文本并执行一遍又一遍。
这是一个Flex应用程序,这就是我的问题所在。我不知道如何拍摄快照,然后将其添加到(组?)然后如何删除它并重新开始?任何建议中的任何建议将不胜感激。
答案 0 :(得分:2)
这是一种非常简单的方法,可以为fontSize样式设置动画,而不是为缩放属性设置动画:
根据你正在做的事情,这可能表现不佳b / c它会如此频繁地设置新风格。此外,如果你慢慢播放这个动画,它看起来像个别角色“摇摆”(他们移动或摇晃一点点)。
我会发布一些关于拍摄快照并缩小下一步的内容......
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<fx:Declarations>
<s:Animate id="scaler" target="{scaledText}" >
<s:MotionPath property="fontSize">
<s:Keyframe time="0" value="12"/>
<s:Keyframe time="1500" value="48"/>
</s:MotionPath>
</s:Animate>
</fx:Declarations>
<fx:Script>
<![CDATA[
protected function onLabelClick():void
{
scaler.play();
}
]]>
</fx:Script>
<s:Label id="scaledText" text="this is some text" click="onLabelClick()" />
</s:Application>
这是拍摄文本快照的方法。这与原始解决方案存在同样的问题,缩放文本非常锯齿状。但这确实显示了如何拍摄某些内容的快照并在另一个Flex对象中使用快照:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<fx:Declarations>
<s:Scale id="scaler" target="{drawingTarget}" scaleXFrom="1" scaleXTo="5" scaleYFrom="1" scaleYTo="5"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import spark.core.SpriteVisualElement;
protected function onLabelClick():void
{
var data:BitmapData = new BitmapData(200,200,true, 0xFFFFFF);
data.draw(scaledText);
var g:Graphics = drawingTarget.graphics;
g.beginBitmapFill(data);
g.drawRect(0,0, 200,200);
g.endFill();
}
protected function onBitmapClick(event:MouseEvent):void
{
scaler.play();
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:Label id="scaledText" text="this is some text" click="onLabelClick()" />
<s:SpriteVisualElement id="drawingTarget" width="200" height="200" click="onBitmapClick(event)"/>
</s:Application>