AS3 getClassesByPackage のテスト
http://pipes.yahoo.com/nacookan/as3_get_classes_by_package
のテスト。
/**
* Copyright nacookan ( http://wonderfl.net/user/nacookan )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/bbAl
*/
// http://pipes.yahoo.com/nacookan/as3_get_classes_by_package
// のテスト。
package {
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.text.*;
public class FlashTest extends Sprite {
public function FlashTest() {
var package_name:String = 'fl.motion.easing';
var url:URLRequest = new URLRequest(
'http://pipes.yahooapis.com/pipes/pipe.run?' + [
'_id=531947c37fa1943fa3451fcab9fafdef',
'_render=rss',
'package=' + package_name
].join('&')
);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, function(e:Event):void{
var xml:XML = new XML(loader.data);
var items:XMLList = xml.channel.item;
for(var i:Number = 0; i < items.length(); i++){
addEasing(package_name, items[i].title.toString());
}
});
loader.load(url);
}
private function addEasing(package_name:String, class_name:String):void{
// ホントはここで、パッケージとクラスの名前をもとに
// クラス定義を取ってきて、実際にアニメーションで
// グラフか何かを書こうと思ったけど、実際やってみたら
// コンパイラが認識したクラスだけswfに含まれるらしく、
// コンパイル後に文字列をもとに好きなクラスを呼び出す
// ことができなかった。だからとりあえず名前だけ
// 出力しておく。
var t:TextField = new TextField();
t.autoSize = TextFieldAutoSize.LEFT;
t.text = package_name + '.' + class_name;
t.y = numChildren * 20;
addChild(t);
}
}
}