ううむ…

  1. ActionScriptで、flash.display.Spriteを継承した色々描画処理とか含むクラスを作成
  2. MXMLでmx:Applicationタグ直下に、上記クラスをMXMLタグで読み込むよう指定してみたが何も描画されず。
  3. 同じクラスをflash.display.Sprite継承からmx.core.UIComponent継承に切り替えてみたら見事に描画成功。

やっぱりUIComponentを継承してないとダメなのか…。
まあ素直にUIComponent継承したクラス作るところから始めるのが楽かなぁ。でもちょっと出来上がるswfファイルのファイルサイズが大きすぎる気が…。(※さっき適当に試したら、同じような内容のもの作って、ActionScriptのみで作ったときが1KB以下、MXMLでUIComponent継承したのとか使ったら100KB以上…)
MXML使ってる時でファイルサイズ減らすコツとかあるのかなぁ…。

ちなみにさっきフレームレートの実験ってことで、ランダムにひたすら四角を描画するクラス作って描画速度見てみたんですが、試みにフレームレート90と120指定してみたら(実際にその数字になってるのかどうかはともかく)明らかにちゃんと描画速度に差が出てた。恐るべしAS3。

以下その時のクラス。stage.frameRateのところの数字を変えるとフレームレート変わります。

package {
	import flash.display.Sprite;
	import flash.display.Shape;
	import flash.display.StageScaleMode;
	import flash.events.*


	public class ASFirst extends Sprite
	{
		private var mc:Shape;
		public function ASFirst()
		{
			stage.frameRate=24;
			stage.scaleMode=StageScaleMode.NO_SCALE;
			mc=new Shape();
			addChild(mc);
			addEventListener(Event.ENTER_FRAME,xEF);
		}
		private function xEF(event:Event):void{
			mc.graphics.clear();
			mc.graphics.beginFill(0,1);
			mc.graphics.drawRect(Math.random()*100,Math.random()*100,Math.random()*100,Math.random()*100);
			mc.graphics.endFill();
		}
	}
}

ちなみにFlexのデフォルトのフレームレートは24だそうな。