Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
    123
45678910
11121314151617
18192021222324
25262728293031
<< July 2010 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Sponsored Links
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2022.03.28 Monday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
            
2010.07.28 Wednesday
外部埋め込みフォントのロードと使用
外部埋め込みフォントのロードと使用
FontAssetクラスとEmbedFontクラスで EmbedFont.swfをつくります。
package
{
	
	public class FontAsset 
	{
		// if you want to embed font, add font to folder and out under line. 
		//[Embed(source="/assets/font/MyriadWebPro.ttf", fontName="myfont", fontWeight="Semibold")]
		[Embed(source="/assets/mplus-1c-black.ttf", fontName="myfont")]
		
		public var font:Class;
		
		public function FontAsset() 
		{
		//	throw new Error("you cannot create FontAsset Class instance")
		}
		
	}
	
}

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.Font;
	import FontAsset;
	/**
	 * 埋め込みフォントが入った SWF
	 * @author Hikipuro
	 */
	public class EmbedFont extends Sprite
	{
		
		/**
		 * 埋め込みフォント
		 */
		//[Embed(source='../font/mplus-1c-black.ttf', fontName='mplus-1c-black')]
		//private var embedFont1:Class;
		
		
		private var fontins:FontAsset;
		/**
		 * コンストラクタ
		 */
		public function EmbedFont():void 
		{
			//FontAsset;
			fontins=new FontAsset()
		}
		
		/**
		 * 埋め込みフォントを取得する
		 */
		public function get font():Class
		{
			return fontins.font;
		}
		
	}
	
}

それであとはHikipurosanのClassLoaderクラスでとMainクラスで読み込みますと。。。
package  
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.errors.IllegalOperationError;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.HTTPStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLRequest;
	import flash.system.ApplicationDomain;
	import flash.system.LoaderContext;
	
	/**
	 * ロード操作が開始した時に発行するイベント
	 * @eventType flash.events.Event.OPEN
	 */
	[Event(name = "open", type = "flash.events.Event")] 
	
	/**
	 * unload() メソッドを使用して削除されるたびに発行するイベント
	 * @eventType flash.events.Event.UNLOAD
	 */
	[Event(name = "unload", type = "flash.events.Event")] 
	
	/**
	 * ダウンロード処理を実行中にデータを受信した時に発行するイベント
	 * @eventType flash.events.ProgressEvent.PROGRESS
	 */
	[Event(name = "progress", type = "flash.events.ProgressEvent")] 
	
	/**
	 * クラスのロードが完了した時に発行するイベント
	 * @eventType flash.events.Event.COMPLETE
	 */
	[Event(name = "complete", type = "flash.events.Event")] 
	
	/**
	 * ロードされた SWF ファイルのプロパティおよびメソッドがアクセス可能で使用できる状態になった時に発行するイベント
	 * @eventType flash.events.Event.INIT
	 */
	[Event(name = "init", type = "flash.events.Event")] 
	
	/**
	 * ロードされた SWF ファイルのプロパティおよびメソッドがアクセス可能で使用できる状態になった時に発行するイベント
	 * @eventType flash.events.HTTPStatusEvent.HTTP_STATUS
	 */
	[Event(name = "httpStatus", type = "flash.events.HTTPStatusEvent")] 
	
	/**
	 * クラスのロードに失敗した時に発行するイベント
	 * @eventType flash.events.IOErrorEvent.IO_ERROR
	 */
	[Event(name = "ioError", type = "flash.events.IOErrorEvent")] 
	
	/**
	 * ロード時にセキュリティエラーが発生した時に発行するイベント
	 * @eventType flash.events.SecurityErrorEvent.SECURITY_ERROR
	 */
	[Event(name = "securityError", type = "flash.events.SecurityErrorEvent")] 
	
	/**
	 * 外部 SWF ファイルからクラスをロードするためのクラス
	 * 
	 * ・このクラスの詳細
	 * http://livedocs.adobe.com/flex/3_jp/langref/flash/system/ApplicationDomain.html#includeExamplesSummary
	 * @author Hikipuro
	 */
	public class ClassLoader extends EventDispatcher
	{
		/**
		 * SWF ファイルをロードするためのローダ
		 */
		private var loader:Loader;
		
		/**
		 * SWF ファイルの URL
		 */
		private var url:String;
		
		/**
		 * ローダの URLRequest
		 */
		private var request:URLRequest;
		
		/**
		 * ロードされたクラス
		 */
		private var loadedClass:Class;

		/**
		 * コンストラクタ
		 */
		public function ClassLoader()
		{
			var loaderInfo:LoaderInfo;
			
			// イベントリスナの登録
			loader = new Loader();
			loaderInfo = loader.contentLoaderInfo;
			loaderInfo.addEventListener(Event.OPEN, openHandler);
			loaderInfo.addEventListener(Event.UNLOAD, unloadHandler);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			loaderInfo.addEventListener(Event.INIT, initHandler);
			loaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			loaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
		}

		/**
		 * SWF をロードする
		 * @param	lib	SWF ファイルの URL
		 */
		public function load(url:String):void
		{
			this.url = url;
			request = new URLRequest(url);
			
			var context:LoaderContext = new LoaderContext();
			context.applicationDomain = ApplicationDomain.currentDomain;
			loader.load(request, context);
		}

		/**
		 * クラス名からクラスを取得する
		 * @param	className	クラス名
		 * @return
		 */
		public function getClass(className:String):Class
		{
			try {
				var loaderInfo:LoaderInfo;
				var applicationDomain:ApplicationDomain;
				
				loaderInfo = loader.contentLoaderInfo;
				applicationDomain = loaderInfo.applicationDomain;
				loadedClass = applicationDomain.getDefinition(className) as Class;
				
				return loadedClass;
			} catch (e:Error) {
				throw new IllegalOperationError(className + 
												" definition not found in " + 
												url);
			}
			return null;
		}

		/**
		 * イベントハンドラ
		 * ロード操作が開始したときに送出されます。
		 * @param	e
		 */
		private function openHandler(e:Event):void 
		{
			dispatchEvent(e);
		}
		
		/**
		 * イベントハンドラ
		 * ロードされたオブジェクトが Loader オブジェクトの unload() メソッドを使用して削除されるたびに、
		 * LoaderInfo オブジェクトによって送出されます。または 2 番目のロードが同じ Loader オブジェクトによって実行され、
		 * ロード開始前に元のコンテンツが削除された場合に、LoaderInfo オブジェクトによって送出されます。
		 * @param	e
		 */
		private function unloadHandler(e:Event):void 
		{
			dispatchEvent(e);
		}
		
		/**
		 * イベントハンドラ
		 * ダウンロード処理を実行中にデータを受信したときに送出されます。
		 * @param	e
		 */
		private function progressHandler(e:ProgressEvent):void 
		{
			dispatchEvent(e);
		}
		
		/**
		 * イベントハンドラ
		 * データが正常にロードされたときに送出されます。
		 * @param	e
		 */
		private function completeHandler(e:Event):void
		{
			dispatchEvent(e);
		}
		
		/**
		 * イベントハンドラ
		 * 	ロードされた SWF ファイルのプロパティおよびメソッドがアクセス可能で使用できる状態の場合に送出されます。
		 * @param	e
		 */
		private function initHandler(e:Event):void 
		{
			dispatchEvent(e);
		}
		
		/**
		 * イベントハンドラ
		 * ネットワーク要求が HTTP を介して行われ、HTTP ステータスコードを検出できる場合に送出されます。
		 * @param	e
		 */
		private function httpStatusHandler(e:HTTPStatusEvent):void 
		{
			dispatchEvent(e);
		}

		/**
		 * イベントハンドラ
		 * 	入出力エラーが発生してロード処理が失敗したときに送出されます。
		 * @param	e
		 */
		private function ioErrorHandler(e:IOErrorEvent):void
		{
			dispatchEvent(e);
		}

		/**
		 * イベントハンドラ
		 * ローダでセキュリティエラーが起こった時
		 * @param	e
		 */
		private function securityErrorHandler(e:SecurityErrorEvent):void
		{
			dispatchEvent(e);
		}

	}
	
}
Mainクラス
package 
{
	import ClassLoader;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLRequest;
	import flash.text.Font;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFieldType;
	import flash.text.TextFormat;
	
	/**
	 * 実行時に埋め込みフォントをロードするサンプル
	 * @author Hikipuro
	 */
	public class Main extends Sprite 
	{
		/**
		 * ロードする SWF ファイルの URL
		 */
		private const url:String = "EmbedFont.swf";
		
		/**
		 * 外部 SWF ファイルの中からクラスを取得するためのオブジェクト
		 */
		private var loader:ClassLoader;
		
		/**
		 * メッセージ表示用テキストフィールド
		 */
		private var textField:TextField;
		
		/**
		 * コンストラクタ
		 */
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		/**
		 * 初期化イベント
		 * @param	e
		 */
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			// テキストフィールドの初期化
			textField = new TextField();
			//textField.autoSize = TextFieldAutoSize.LEFT;
			textField.type = TextFieldType.INPUT;
			textField.x = 5;
			textField.y = 5;
			textField.width = 310;
			textField.height = 230;
			textField.border = true;
			textField.borderColor = 0xC0C0C0;
			textField.multiline = true;
			textField.wordWrap = true;
			textField.text = "";
			addChild(textField);
			
			// 使用可能なフォントの一覧を取得する
			var fontArray:Array = Font.enumerateFonts(true);
			
			// テキストフィールドの初期メッセージを設定
			textField.appendText("実行時にうめ込みフォントをロードするサンプル¥n¥n");
			textField.appendText("SWF ロード前の使用可能フォントの数 : " + fontArray.length + "¥n");
			
			// SWF ファイルのロード
			loader = new ClassLoader();
			loader.addEventListener(Event.COMPLETE, onLoadComplete);
			loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
			loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onLoadError);
			loader.load(url);
		}
		
		/**
		 * クラスのロード時にエラーが発生した時
		 * @param	e
		 */
		private function onLoadError(e:Event):void
		{
			trace("onLoadError");
			textField.text = "SWF ファイルのロードに失敗しました。";
		}

		/**
		 * クラスのロードが完了した時
		 * @param	e
		 */
		private function onLoadComplete(e:Event):void 
		{
			trace("onLoadComplete");
			
			// ロードした SWF ファイルから、クラスをロードしてインスタンス化する
			var classRef:Class = loader.getClass("EmbedFont");
			var externalObject:Object = new classRef();

			// 外部の SWF ファイルから埋め込みフォントを取得して、
			// 親 SWF (今コードを書いている SWF) に登録する
			var font:Font = new externalObject.font;
			Font.registerFont(externalObject.font);
			
			// 使用可能なフォントの一覧を取得する
			var fontArray:Array = Font.enumerateFonts(true);
			
			// テキストフィールドの内容を更新
			textField.appendText("SWF ロード後の使用可能フォントの数 : " + fontArray.length + "¥n");
			
			// テキストフォーマットの作成
			var format:TextFormat = new TextFormat();
			format.font = font.fontName;
			format.size = 20;
			
			// ロードした埋め込みフォントをテキストフィールドに適用する
			textField.setTextFormat(format);
			textField.embedFonts = true;
		}
		
	}
	
}
| whaison | ActionScript3.0 | 22:47 | comments(0) | - | pookmark |