forked from: フォント選択

by forzamk forked from フォント選択 (diff: 175)
♥1 | Line 147 | Modified 2010-11-15 02:21:06 | MIT License
play

ActionScript3 source code

/**
 * Copyright forzamk ( http://wonderfl.net/user/forzamk )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/5D3f
 */

<?xml version="1.0" encoding="utf-8"?>
<!-- forked from tkinjo's フォント選択 -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark"
    width="465" height="465">

    <s:layout>
        <s:VerticalLayout paddingTop="10" paddingLeft="10" paddingBottom="10" paddingRight="10" />
    </s:layout>
    
    <fx:Script>
        <![CDATA[

            import flash.display.Bitmap;
            import flash.display.BitmapData;
            import flash.display.DisplayObject;
            import flash.display.Loader;
            import flash.events.Event;
            import flash.net.FileReference;
            import mx.collections.ArrayCollection;
            import flashx.textLayout.elements.TextFlow;
            import flash.text.engine.FontWeight;
            import flash.text.engine.FontPosture;
            import flash.text.engine.RenderingMode;
            import spark.skins.spark.TextAreaSkin;
            import mx.graphics.BitmapFill;

            private const _filter:Array = [new FileFilter("load Img","*.jpg;*.jpeg;*.png;*.gif")];
            private var _fileReference:FileReference;
            private var _loader:Loader;
            [Bindable]
            public var bitmap:Bitmap;
            [Bindable]
            public var textAreaContentBackgroundAlpha:Number = 1;

            private function vgroupInitializeHandler():void
            {
                fontList.dataProvider = new ArrayCollection(Font.enumerateFonts(true).sortOn("fontName", Array.CASEINSENSITIVE));
                fontSize.text = "20";
                textArea.textFlow.renderingMode = RenderingMode.CFF;
            }

            private function fontListCahngeHandler(event:Event):void
            {
                textArea.textFlow.fontFamily = fontList.selectedItem["fontName"];
            }

            private function fontSizeCahngeHandler(event:Event):void
            {
                textArea.textFlow.fontSize = fontSize.text;
            }

            private function fontColorCahngeHandler(event:Event):void
            {
                textArea.textFlow.color = fontColor.selectedColor;
            }

            //private function fontAACahngeHandler(event:Event):void
            //{
            //    textArea.textFlow.renderingMode = (fontAA.selected)? RenderingMode.CFF: RenderingMode.NORMAL;
            //}

            private function fontWeightCahngeHandler(event:Event):void
            {
                textArea.textFlow.fontWeight = (fontWeight.selected)? FontWeight.BOLD: FontWeight.NORMAL;
            }

            private function fontStyleCahngeHandler(event:Event):void
            {
                textArea.textFlow.fontStyle = (fontStyle.selected)? FontPosture.ITALIC: FontPosture.NORMAL;
            }

            private function backgroundColorPickerCahngeHandler(event:Event):void
            {
                textAreaContentBackgroundAlpha = 1;
                //var skin:TextAreaSkin = textArea.skin as TextAreaSkin;
                //skin.bgFill.color = backgroundColorPicker.selectedColor;
            }

            private function backgroundImageButtonDown(event:Event):void
            {
                _fileReference = new FileReference();
                _fileReference.addEventListener(Event.SELECT, onSelectBackgroundImage);
                _fileReference.browse(_filter);
            }
            private function onSelectBackgroundImage(event:Event):void
            {
                backgroundImage.enabled = false;
                _fileReference.addEventListener(Event.COMPLETE, onCompleteBackgroundImage);
                _fileReference.load();
            }
            private function onCompleteBackgroundImage(event:Event):void
            {
                _fileReference.removeEventListener(Event.SELECT, onSelectBackgroundImage);
                _fileReference.removeEventListener(Event.COMPLETE, onCompleteBackgroundImage);

                _loader = new Loader();
                _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteContentLoaderInfo);
                _loader.loadBytes(_fileReference.data);
            }
            private function onCompleteContentLoaderInfo(event:Event):void
            {
                var bitmapData:BitmapData = new BitmapData(_loader.width, _loader.height);
                bitmapData.draw(_loader);
                bitmap = new Bitmap(bitmapData);

                textAreaContentBackgroundAlpha = 0;
                backgroundImage.enabled = true;
            }
        ]]>
    </fx:Script>

    <s:Panel title="Text"
        width="100%" height="100%"
        fontFamily="メイリオ">
        <s:controlBarContent>
            <s:VGroup width="100%"
                initialize="vgroupInitializeHandler()">
                <s:HGroup width="100%" verticalAlign="middle">
                    <s:DropDownList id="fontList"
                        width="50%"
                        labelField="fontName"
                        prompt="フォントを選択してください"
                        change="fontListCahngeHandler(event)" />
                    <s:Label text="サイズ" fontSize="15" />
                    <s:TextInput id="fontSize"
                        width="10%"
                        restrict="[0-9]"
                        change="fontSizeCahngeHandler(event)" />
                    <s:Label text="色" fontSize="15" />
                    <mx:ColorPicker id="fontColor"
                        showTextField="true" selectedColor="0x000000"
                        change="fontColorCahngeHandler(event)" />
                </s:HGroup>
                <s:HGroup width="100%" verticalAlign="middle">
                    <!-->
                    <s:CheckBox id="fontAA" label="AA"
                        selected="true"
                        change="fontAACahngeHandler(event)" />
                    </!-->
                    <s:CheckBox id="fontWeight" label="Bold"
                        change="fontWeightCahngeHandler(event)" />
                    <s:CheckBox id="fontStyle" label="Italic"
                        change="fontStyleCahngeHandler(event)" />
                    <s:Label text="背景色" fontSize="15" />
                    <mx:ColorPicker id="backgroundColorPicker"
                        showTextField="true" selectedColor="0xffffff"
                        change="backgroundColorPickerCahngeHandler(event)" />
                    <s:Button id="backgroundImage"
                        label="背景画像"
                        buttonDown="backgroundImageButtonDown(event)" />
                </s:HGroup>
            </s:VGroup>
        </s:controlBarContent>

        <s:BorderContainer id="textAreaContainer"
            width="100%" height="100%"
            borderVisible="false"
            backgroundImage="{bitmap}">
            <s:TextArea id="textArea"
                width="100%" height="100%"
                textAlpha="1" contentBackgroundAlpha="{textAreaContentBackgroundAlpha}"
                borderVisible="false">
                <s:contentBackgroundColor>{backgroundColorPicker.selectedColor}</s:contentBackgroundColor>
                <s:text>あいうえお{'\n'}アイウエオ{'\n'}阿伊宇江於{'\n'}aiueo</s:text>
            </s:TextArea>
        </s:BorderContainer>
    </s:Panel>

</s:Application>