CASA etc. @福岡てら子
Casa FrameworksがAS3になって「Casa Lib」となってます。
未だに「これまで使っていた部分がAS3版でどうなったか」のみにとどまってますが、これからutil系とか調べてみたいと思ってたりします。でもホントは誰かにやってほしいw
ともあれ、先日の福岡てら子で未熟ながらも「Casa Lib」について発表したわけですが、そこで触れたのは
- Group Loadについて
- イベント管理
- XMLの扱い
といった軽ーい内容です。
Group Loadは以前のLoadGroupから名称が変わったもので、役割自体はほとんど違わないでしょう。複数の外部ファイル(画像やXML、SWF)を一括して管理出来るところにメリットがあるのではないでしょうか。ちなみにファイルタイプに応じたそれぞれのloadクラスもあります(ImageLoad,DataLoad,SwfLoad,VideoLoad)。
※このGroupLoadについては後でさらに触れる予定。
次にイベント管理ですが、org.casalib.displayパッケージには
- CasaBitmap
- CasaMovieClip
- CasaSimpleButton
- CasaSprite
- CasaTextField
があり、それぞれがAS3デフォルトのクラスを継承しています。そしてこんな感じで任意のMovieClipに対してリスナー登録&削除&removeChildできたりします。
[sourcecode language=”actionscript3″]
import org.casalib.display.CasaMovieClip;
public var hit:CasaMovieClip;
hit.addEventListener(MouseEvent.ROLL_OVER, rollOverListener);
hit.addEventListener(MouseEvent.ROLL_OUT, rollOutListener);
hit.addEventListener(MouseEvent.CLICK, clickListener);
hit.removeEventsForType(MouseEvent.ROLL_OVER);//イベントタイプで削除
//hit.removeEventsForListener(rollOutListener);//リスナーのみ削除
//hit.removeEventListeners();//イベントすべてを削除
//hit.destroy();//イベント&removeChild
}
[/sourcecode]
このdestroy()というメソッドはCasa LIbに通底しているもので、とにかくこれで消しましょうと。リーク回避しましょうということかと。まあ、偉いヒトは自作でやってるんでしょうが。
さらに次。もとよりCasa FrameworkでAS2に対してアドバンテージがあったXML関連ですが、AS3デフォルトでE4Xに準拠したのでそのアドバンテージはなくなりましたね。以前にあったXmlUtilも無くなってますし。
Casa Libではこんな感じです。
[sourcecode language=”actionscript3″]
package {
import flash.display.MovieClip;
import org.casalib.events.LoadEvent;
import org.casalib.load.DataLoad;
public class MyExample extends MovieClip {
protected var _dataLoad:DataLoad;
public function MyExample() {
super();
this._dataLoad = new DataLoad("data.xml");
this._dataLoad.addEventListener(LoadEvent.COMPLETE, this._onComplete);
this._dataLoad.start();
}
protected function _onComplete(e:LoadEvent):void {
trace(this._dataLoad.dataAsXml.toXMLString());
}
}
}
[/sourcecode]
DataLoadクラスには読み込みファイルのタイプ別にプロパティがあります。
- dataAsByteArray : ByteArray
- dataAsString : String
- dataAsUrlVariables : URLVariables
- dataAsXml : XML
- dataFormat : String
XMLならdataAsXmlのプロパティでアクセスできるので、その点は簡便化されていると思います。
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
こういうのも要らないし。
後述するつもりだったGroupLoadについてはあらためて整理します。疲れたw
