Home > Flash | WEB > FlashDevelopで作ってみた(3) actionscript3移植

FlashDevelopで作ってみた(3) actionscript3移植

前回のエントリで作ったものを、
actionscript2 から actionscript3 で書き直してみました。
これからas2のFlashをas3で書き直し始める場合の参考になれば幸いです。

↓flex2でコンパイルしたので、
FlashPlayerバージョン9以降しか表示できません。

fuji_zawa
見た目変わんないけどちょっと軽い?

→プロジェクトをダウンロード(SWF入り)

as2コンパイラのMTASCと違って、
細かいWarningいっぱいだしてくれるので(出さないようにもできると思うけど)、
戻り値とか引数の型の定義とか、ちゃんとしましたw

今度はAS3
今度はActionScript 3 のプロジェクトとして作成。

■ ローカルファイルを読み込むにも、セキュリティ設定が必要
まず、ローカルでテストするにも、ローカルのXMLファイルを読み込むためのセキュリティの設定が必要です。

→参考

C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust\test.cfg

CODE:
  1. # 信頼できるファイルのパスを記述
  2. 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

ACTIONSCRIPT:
  1. tagXML = new XML;
  2.        
  3.     tagXML.ignoreWhite = true;
  4.     tagXML.onLoad = function(result:Boolean) {
  5.         if (result) ref.onLoadHandler();
  6.         else
  7.           trace("(-_-)");
  8.     }
  9.    
  10.     var url:String = _root["url"];
  11.     if (url != undefined) {
  12.         tagXML.load(url);
  13.     }else{
  14.         tagXML.load("tags.xml");
  15.     }

as3 NicoCloud.as

ACTIONSCRIPT:
  1. var url:String = loaderInfo.parameters["url"];
  2.     if (url == null ) url = "tags.xml";
  3.            
  4.     var request:URLRequest = new URLRequest(url);
  5.     tagFileLoder = new URLLoader(request);
  6.     tagFileLoder.addEventListener(Event.COMPLETE, loadCompleteHandler);

URLLoaderクラスを使わないでファイルをロード。

as3 NicoCloud.as

ACTIONSCRIPT:
  1. tagXML = new XML(tagFileLoder.data);
  2.     var xmlNodes:XMLList = tagXML.child("item");
  3.            
  4.     for (var i:Number = 0; i <xmlNodes.length(); i++) {
  5.         var itemObject:Object = new Object;
  6.         var node:XML = xmlNodes[i];
  7.         var tag:Tag = new Tag(node.tag, node.size, node.url);
  8.         addChild(tag);
  9.         tag.startCloud(true);
  10.     }

XMLクラスは単純にパースするためだけに。

移動する文字用のTagクラスは、
TextFieldクラスとTextFormatクラス、DropShadowFilterがほぼas2と同じように使えたので、
そんなに変更はありませんが、
こちらもMovieClipを使わずにSpriteを継承したクラスとし、
NicoCloud側から生成されたタイミングでaddChildするようにしています。

URLに記述があった場合、クリックでジャンプさせるんですが、
イベント割り当てただけじゃSprite上で、マウスカーソルを指の形状になりません。
ここで、ちょっと悩みました。

as3 Tag.as

ACTIONSCRIPT:
  1. if (url != "") {
  2.     this.buttonMode = true;
  3.     this.useHandCursor = true;
  4.     this.mouseChildren = false;
  5.     this.addEventListener(MouseEvent.ROLL_OVER, function(event:Event):void{} );
  6.     this.addEventListener(MouseEvent.CLICK, function(event:Event):void {
  7.         var urlRequest:URLRequest = new URLRequest( url );
  8.         navigateToURL( urlRequest );
  9.     });
  10. }

buttonMode と useHandCursor を true はわかるけど、
mouseChildren をfalseにしないとなのは…?
結構めんどくさい。

今までAS2で仕事で作ったものもちょくちょくAS3に移植しているのですが、
クラスベースで作っていたので、割とすんなりできています。

AS3でFullFlashサイトつくってみたいなー。

Comments:0

Comment Form
Remember personal info

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

Home > Flash | WEB > FlashDevelopで作ってみた(3) actionscript3移植

リンク
chocolataste-planner
millon

サーチ
Feeds
Meta
blog ranking ブログランキング・にほんブログ村へ
にほんブログ村 テクノラティのお気に入りに追加する

Return to page top