Flashで外部テキストファイルを読み込んで表示するサンプル。
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読み込まず。
行の折り返し
TextField の wordWrap = true;
すると、行の右端で折り返しすることができた。
preloadText.wordWrap = true;