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;
0 件のコメント:
コメントを投稿