首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多行手写

多行手写
EN

Stack Overflow用户
提问于 2011-02-18 16:11:04
回答 1查看 434关注 0票数 3

我需要在Flex中开发一个动画来模拟某人手写一个具有动态内容的文本区域。我不关心字体的实际曲线,但我需要一种清晰的方式来显示文本逐行,并在笔的位置后面加上一个掩码。

类似的内容,但是有一个本机文本区域和我自己的字体:

http://activeden.net/item/handwriting-animation-tool-v25/11733

mxml中的textarea只能有一个掩码,所以我想我应该以编程方式创建我的掩码。有人这样做了吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-19 04:03:16

有一些不同的技术,以创造真正的效果-就像什么是显示在该网站。并且要注意,这是相当乏味的工作。在Flex中,您可以做的是显示文本行,然后用任何形状的掩码显示字母。下面是一个简单的例子:

代码语言:javascript
复制
<fx:Script>
    <![CDATA[
        import mx.graphics.SolidColor;

        import spark.components.Group;
        import spark.components.RichText;
        import spark.primitives.Rect;

        private function createMultilineMask():void
        {               
            var txt:RichText = new RichText();
            txt.x = 20;
            txt.width = 260;
            txt.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempus, eros ac dignissim interdum...";
            txt.setStyle('fontFamily', 'Times');
            txt.setStyle('fontStyle', 'italic');
            txt.setStyle('fontSize', 16);
            txt.setStyle('color', 0xFF0000);                

            var textMask:Group = new Group();

            var ln1:Rect = new Rect();
            ln1.x = 0;
            ln1.y = 0;
            ln1.width = 0;
            ln1.height = 14;
            ln1.fill = new SolidColor(0x000000);
            textMask.addElement(ln1);

            var ln2:Rect = new Rect();
            ln2.x = 0;
            ln2.y = 20;
            ln2.width = 0;
            ln2.height = 14;
            ln2.fill = new SolidColor(0x000000);
            textMask.addElement(ln2);

            var ln3:Rect = new Rect();
            ln3.x = 0;
            ln3.y = 40;
            ln3.width = 0;
            ln3.height = 14;
            ln3.fill = new SolidColor(0x000000);
            textMask.addElement(ln3);

            var container:Group = new Group();
            container.x = 100;
            container.y = 100;
            container.mask = textMask;
            container.maskType = 'clip';
            container.addElement(txt);
            addElement(container);

            addEventListener(Event.ENTER_FRAME, drawLine);

            function drawLine(event:Event):void
            {
                if (ln1.width < 300)
                    ln1.width += 2;
                else if (ln2.width < 300)
                    ln2.width += 2;
                else if (ln3.width < 300)
                    ln3.width += 2;
                else
                    removeEventListener(Event.ENTER_FRAME, drawLine);
            }
        }
    ]]>
</fx:Script>

HTH FTQuest

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5043662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档