前回のエントリで作ったものを、
actionscript2 から actionscript3 で書き直してみました。
これからas2のFlashをas3で書き直し始める場合の参考になれば幸いです。
↓flex2でコンパイルしたので、
FlashPlayerバージョン9以降しか表示できません。
as2コンパイラのMTASCと違って、
細かいWarningいっぱいだしてくれるので(出さないようにもできると思うけど)、
戻り値とか引数の型の定義とか、ちゃんとしましたw

今度はActionScript 3 のプロジェクトとして作成。
■ ローカルファイルを読み込むにも、セキュリティ設定が必要
まず、ローカルでテストするにも、ローカルのXMLファイルを読み込むためのセキュリティの設定が必要です。
C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust\test.cfg
- # 信頼できるファイルのパスを記述
- C:\Documents and Settings\Administrator\workspace\NicoCloud_as3\tags.xml
■ NicCloud class の変更
MovieClipを使わずに Spriteを継承したクラスとしてNicoCloudクラスを用意します。
actionscript3では、既存のXMLクラスに当たるものを下位互換としてXMLDocumentクラスとして残され、
XMLクラスが新しくなっています。
今回はせっかくなので、XMLDocumentではなくXMLクラスを使いました。
as2ではXMLクラスで直接ファイルを読み込めたのですが、as3ではファイルの読み込みには、
別のURLLoaderクラスを使用するようになっています。
*比較 as2 NicoCloud.as
- tagXML = new XML;
- tagXML.ignoreWhite = true;
- tagXML.onLoad = function(result:Boolean) {
- if (result) ref.onLoadHandler();
- else
- trace("(-_-)");
- }
- var url:String = _root["url"];
- if (url != undefined) {
- tagXML.load(url);
- }else{
- tagXML.load("tags.xml");
- }
as3 NicoCloud.as
- var url:String = loaderInfo.parameters["url"];
- if (url == null ) url = "tags.xml";
- var request:URLRequest = new URLRequest(url);
- tagFileLoder = new URLLoader(request);
- tagFileLoder.addEventListener(Event.COMPLETE, loadCompleteHandler);
URLLoaderクラスを使わないでファイルをロード。
as3 NicoCloud.as
- tagXML = new XML(tagFileLoder.data);
- var xmlNodes:XMLList = tagXML.child("item");
- for (var i:Number = 0; i <xmlNodes.length(); i++) {
- var itemObject:Object = new Object;
- var node:XML = xmlNodes[i];
- var tag:Tag = new Tag(node.tag, node.size, node.url);
- addChild(tag);
- tag.startCloud(true);
- }
XMLクラスは単純にパースするためだけに。
移動する文字用のTagクラスは、
TextFieldクラスとTextFormatクラス、DropShadowFilterがほぼas2と同じように使えたので、
そんなに変更はありませんが、
こちらもMovieClipを使わずにSpriteを継承したクラスとし、
NicoCloud側から生成されたタイミングでaddChildするようにしています。
URLに記述があった場合、クリックでジャンプさせるんですが、
イベント割り当てただけじゃSprite上で、マウスカーソルを指の形状になりません。
ここで、ちょっと悩みました。
as3 Tag.as
- if (url != "") {
- this.buttonMode = true;
- this.useHandCursor = true;
- this.mouseChildren = false;
- this.addEventListener(MouseEvent.ROLL_OVER, function(event:Event):void{} );
- this.addEventListener(MouseEvent.CLICK, function(event:Event):void {
- var urlRequest:URLRequest = new URLRequest( url );
- navigateToURL( urlRequest );
- });
- }
buttonMode と useHandCursor を true はわかるけど、
mouseChildren をfalseにしないとなのは…?
結構めんどくさい。
今までAS2で仕事で作ったものもちょくちょくAS3に移植しているのですが、
クラスベースで作っていたので、割とすんなりできています。
AS3でFullFlashサイトつくってみたいなー。
- Newer: 音楽スタジオ検索 / メンバー募集 millon.jp
- Older: FlashDevelopで作ってみた(2) プロジェクトファイル
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://parpue.net/web/19/trackback
- Listed below are links to weblogs that reference
- FlashDevelopで作ってみた(3) actionscript3移植 from parpue.net


