Quantcast
Channel: itouhiroはてなブログ
Viewing all articles
Browse latest Browse all 107

Flashで外部テキストファイルを読み込んで表示

$
0
0

Flashで外部テキストファイルを読み込んで表示するサンプル。

f:id:itouhiro:20130413170644p:plain



Main.as

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.system.ApplicationDomain;
    import flash.system.LoaderContext;
    import flash.text.AntiAliasType;
    import flash.text.TextField;
    import flash.text.TextFormat;
    
    /**
     * ...
     * @author itouhiro
     */
    [SWF(width="800",height="600",backgroundColor="0xFCFCFC",frameRate="30")]
    public class Main extends Sprite 
    {
        private var ld:URLLoader;
        private var preloadBottom:int = 0;
        private var preloadText:TextField;
        private var percentLoaded:int;
        
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            //preloader
            preloadText = new TextField();
            preloadText.x = 10; preloadText.y = 10;
            preloadText.width = stage.stageWidth - preloadText.x * 2;
            preloadText.height = stage.stageHeight - preloadText.y * 2;
            //preloadText.antiAliasType = AntiAliasType.ADVANCED; //for embedded font only
            //preloadText.wordWrap = true;
            var tfmt:TextFormat = new TextFormat();
            tfmt.font = 'Meiryo';
            tfmt.size = 16;
            tfmt.color = 0x222222;
            preloadText.defaultTextFormat = tfmt;
            preloadText.text = 'Loading: 0 %';
            addChild(preloadText);
            
            loadExternalFile("20130412txt.txt");
            //loadExternalFile("https://sites.google.com/site/itouhiro/2013/20130412txt.txt"); //GoogleSiteはtxtはブラウザで[View]できない。
            //loadExternalFile("http://japaneseinput.web.fc2.com/flash/20130412txt.txt"); //crosssiteセキュリティの都合で読み込めない
        }
        
        private function loadExternalFile(file:String):void 
        {
            var req:URLRequest = new URLRequest(file);
            ld = new URLLoader();
            preloadBottom = 0;
            ld.addEventListener(ProgressEvent.PROGRESS, loadProgressHandler);
            ld.addEventListener(Event.COMPLETE, loadCompleteHandler);
            ld.load(req);
        }
        
        private function loadCompleteHandler(e:Event):void 
        {
            var str:String = ld.data;
            preloadText.text = str;
        }
        
        private function loadProgressHandler(e:ProgressEvent):void 
        {
            percentLoaded = Math.round(e.bytesLoaded / e.bytesTotal * 100) + preloadBottom;
            preloadText.text = 'Loading: ' + percentLoaded + ' %';
        }
        
        
    }
}


外部テキストファイル http://japaneseinput.web.fc2.com/flash/20130412txt.txt

のテキストファイルの一部を抽出して、UTF-8 BOM有り で保存して、swfと同じフォルダに置いた。


ブラウザ

生成したswfを、ローカルでブラウザにドラッグ&ドロップして表示したところ、

  • Firefox19は動作した。
  • IE9は「ブロックされているコンテンツを許可」ボタンを押せば、動作した。
  • GoogleChrome25はtext file読み込まず。

f:id:itouhiro:20130419152917p:plain
f:id:itouhiro:20130419152928p:plain


行の折り返し

TextField の wordWrap = true;
すると、行の右端で折り返しすることができた。

preloadText.wordWrap = true;

f:id:itouhiro:20130419153520p:plain









 


Viewing all articles
Browse latest Browse all 107

Trending Articles